diff options
Diffstat (limited to 'quantum/process_keycode')
| -rw-r--r-- | quantum/process_keycode/process_dynamic_macro.c | 22 | 
1 files changed, 14 insertions, 8 deletions
| diff --git a/quantum/process_keycode/process_dynamic_macro.c b/quantum/process_keycode/process_dynamic_macro.c index a7555fdd40..41207092a9 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.   */ @@ -252,14 +256,16 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {                  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; | 
