Эх сурвалжийг харах

Allowing Pressing the Start Buttons Again to Stop Dynamic Macro Recording (#9446)

Dongfeng Yu 4 жил өмнө
parent
commit
666cb44673

+ 1 - 1
docs/feature_dynamic_macros.md

@@ -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`.
 

+ 5 - 3
quantum/process_keycode/process_dynamic_macro.c

@@ -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);