diff options
Diffstat (limited to 'quantum/process_keycode/process_dynamic_macro.c')
-rw-r--r-- | quantum/process_keycode/process_dynamic_macro.c | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/quantum/process_keycode/process_dynamic_macro.c b/quantum/process_keycode/process_dynamic_macro.c index a7555fdd40..c2e7e7716f 100644 --- a/quantum/process_keycode/process_dynamic_macro.c +++ b/quantum/process_keycode/process_dynamic_macro.c @@ -45,6 +45,10 @@ __attribute__((weak)) void dynamic_macro_record_end_user(int8_t direction) { dynamic_macro_led_blink(); } +__attribute__((weak)) bool dynamic_macro_valid_key_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + /* Convenience macros used for retrieving the debug info. All of them * need a `direction` variable accessible at the call site. */ @@ -135,7 +139,7 @@ void dynamic_macro_record_end(keyrecord_t *macro_buffer, keyrecord_t *macro_poin dynamic_macro_record_end_user(direction); /* Do not save the keys being held when stopping the recording, - * i.e. the keys used to access the layer DYN_REC_STOP is on. + * i.e. the keys used to access the layer DM_RSTP is on. */ while (macro_pointer != macro_buffer && (macro_pointer - direction)->event.pressed) { dprintln("dynamic macro: trimming a trailing key-down event"); @@ -208,18 +212,18 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) { /* No macro recording in progress. */ if (!record->event.pressed) { switch (keycode) { - case DYN_REC_START1: + case QK_DYNAMIC_MACRO_RECORD_START_1: dynamic_macro_record_start(¯o_pointer, macro_buffer); macro_id = 1; return false; - case DYN_REC_START2: + case QK_DYNAMIC_MACRO_RECORD_START_2: dynamic_macro_record_start(¯o_pointer, r_macro_buffer); macro_id = 2; return false; - case DYN_MACRO_PLAY1: + case QK_DYNAMIC_MACRO_PLAY_1: dynamic_macro_play(macro_buffer, macro_end, +1); return false; - case DYN_MACRO_PLAY2: + case QK_DYNAMIC_MACRO_PLAY_2: dynamic_macro_play(r_macro_buffer, r_macro_end, -1); return false; } @@ -227,13 +231,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: + case QK_DYNAMIC_MACRO_RECORD_START_1: + case QK_DYNAMIC_MACRO_RECORD_START_2: + case QK_DYNAMIC_MACRO_RECORD_STOP: /* Stop the macro recording. */ - if (record->event.pressed ^ (keycode != DYN_REC_STOP)) { /* Ignore the initial release - * just after the recording - * starts for DYN_REC_STOP. */ + if (record->event.pressed ^ (keycode != QK_DYNAMIC_MACRO_RECORD_STOP)) { /* Ignore the initial release + * just after the recording + * starts for DM_RSTP. */ switch (macro_id) { case 1: dynamic_macro_record_end(macro_buffer, macro_pointer, +1, ¯o_end); @@ -246,20 +250,22 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) { } return false; #ifdef DYNAMIC_MACRO_NO_NESTING - case DYN_MACRO_PLAY1: - case DYN_MACRO_PLAY2: + case QK_DYNAMIC_MACRO_PLAY_1: + case QK_DYNAMIC_MACRO_PLAY_2: dprintln("dynamic macro: ignoring macro play key while recording"); return false; #endif default: - /* Store the key in the macro buffer and process it normally. */ - switch (macro_id) { - case 1: - dynamic_macro_record_key(macro_buffer, ¯o_pointer, r_macro_end, +1, record); - break; - case 2: - dynamic_macro_record_key(r_macro_buffer, ¯o_pointer, macro_end, -1, record); - break; + if (dynamic_macro_valid_key_user(keycode, record)) { + /* Store the key in the macro buffer and process it normally. */ + switch (macro_id) { + case 1: + dynamic_macro_record_key(macro_buffer, ¯o_pointer, r_macro_end, +1, record); + break; + case 2: + dynamic_macro_record_key(r_macro_buffer, ¯o_pointer, macro_end, -1, record); + break; + } } return true; break; |