diff options
| -rw-r--r-- | quantum/process_keycode/process_tap_dance.c | 8 | ||||
| -rw-r--r-- | quantum/quantum.c | 37 | ||||
| -rw-r--r-- | quantum/quantum.h | 3 | 
3 files changed, 44 insertions, 4 deletions
diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index e152f23508..07de3ecb8f 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -8,9 +8,9 @@ void qk_tap_dance_pair_finished (qk_tap_dance_state_t *state, void *user_data) {    qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data;    if (state->count == 1) { -    register_code (pair->kc1); +    register_code16 (pair->kc1);    } else if (state->count == 2) { -    register_code (pair->kc2); +    register_code16 (pair->kc2);    }  } @@ -18,9 +18,9 @@ void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data) {    qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data;    if (state->count == 1) { -    unregister_code (pair->kc1); +    unregister_code16 (pair->kc1);    } else if (state->count == 2) { -    unregister_code (pair->kc2); +    unregister_code16 (pair->kc2);    }  } diff --git a/quantum/quantum.c b/quantum/quantum.c index cb1ba04ffb..e3a20f43e0 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1,5 +1,42 @@  #include "quantum.h" +static void do_code16 (uint16_t code, void (*f) (uint8_t)) { +  switch (code) { +  case QK_MODS ... QK_MODS_MAX: +    break; +  default: +    return; +  } + +  if (code & QK_LCTL) +    f(KC_LCTL); +  if (code & QK_LSFT) +    f(KC_LSFT); +  if (code & QK_LALT) +    f(KC_LALT); +  if (code & QK_LGUI) +    f(KC_LGUI); + +  if (code & QK_RCTL) +    f(KC_RCTL); +  if (code & QK_RSFT) +    f(KC_RSFT); +  if (code & QK_RALT) +    f(KC_RALT); +  if (code & QK_RGUI) +    f(KC_RGUI); +} + +void register_code16 (uint16_t code) { +  do_code16 (code, register_code); +  register_code (code); +} + +void unregister_code16 (uint16_t code) { +  unregister_code (code); +  do_code16 (code, unregister_code); +} +  __attribute__ ((weak))  bool process_action_kb(keyrecord_t *record) {    return true; diff --git a/quantum/quantum.h b/quantum/quantum.h index 6e3fbcc792..0c60466495 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -83,6 +83,9 @@ void reset_keyboard(void);  void startup_user(void);  void shutdown_user(void); +void register_code16 (uint16_t code); +void unregister_code16 (uint16_t code); +  #ifdef BACKLIGHT_ENABLE  void backlight_init_ports(void);  | 
