~ruther/qmk_firmware

666cb44673c3db85e0141189319fc9aed394c56d — Dongfeng Yu 5 years ago 03c790a
Allowing Pressing the Start Buttons Again to Stop Dynamic Macro Recording (#9446)

2 files changed, 6 insertions(+), 4 deletions(-)

M docs/feature_dynamic_macros.md
M quantum/process_keycode/process_dynamic_macro.c
M docs/feature_dynamic_macros.md => docs/feature_dynamic_macros.md +1 -1
@@ 18,7 18,7 @@ That should be everything necessary.

To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`. 

To finish the recording, press the `DYN_REC_STOP` layer button. 
To finish the recording, press the `DYN_REC_STOP` layer button. You can also press `DYN_REC_START1` or `DYN_REC_START2` again to stop the recording.

To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`.


M quantum/process_keycode/process_dynamic_macro.c => quantum/process_keycode/process_dynamic_macro.c +5 -3
@@ 216,11 216,13 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
    } else {
        /* A macro is being recorded right now. */
        switch (keycode) {
            case DYN_REC_START1:
            case DYN_REC_START2:
            case DYN_REC_STOP:
                /* Stop the macro recording. */
                if (record->event.pressed) { /* Ignore the initial release
                                              * just after the recoding
                                              * starts. */
                if (record->event.pressed ^ (keycode != DYN_REC_STOP)) { /* Ignore the initial release
                                              * just after the recording
                                              * starts for DYN_REC_STOP. */
                    switch (macro_id) {
                        case 1:
                            dynamic_macro_record_end(macro_buffer, macro_pointer, +1, &macro_end);