diff options
Diffstat (limited to 'quantum')
| -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 e152f2350..07de3ecb8 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) { | |||
| 8 | qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; | 8 | qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; |
| 9 | 9 | ||
| 10 | if (state->count == 1) { | 10 | if (state->count == 1) { |
| 11 | register_code (pair->kc1); | 11 | register_code16 (pair->kc1); |
| 12 | } else if (state->count == 2) { | 12 | } else if (state->count == 2) { |
| 13 | register_code (pair->kc2); | 13 | register_code16 (pair->kc2); |
| 14 | } | 14 | } |
| 15 | } | 15 | } |
| 16 | 16 | ||
| @@ -18,9 +18,9 @@ void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data) { | |||
| 18 | qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; | 18 | qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; |
| 19 | 19 | ||
| 20 | if (state->count == 1) { | 20 | if (state->count == 1) { |
| 21 | unregister_code (pair->kc1); | 21 | unregister_code16 (pair->kc1); |
| 22 | } else if (state->count == 2) { | 22 | } else if (state->count == 2) { |
| 23 | unregister_code (pair->kc2); | 23 | unregister_code16 (pair->kc2); |
| 24 | } | 24 | } |
| 25 | } | 25 | } |
| 26 | 26 | ||
diff --git a/quantum/quantum.c b/quantum/quantum.c index cb1ba04ff..e3a20f43e 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
| @@ -1,5 +1,42 @@ | |||
| 1 | #include "quantum.h" | 1 | #include "quantum.h" |
| 2 | 2 | ||
| 3 | static void do_code16 (uint16_t code, void (*f) (uint8_t)) { | ||
| 4 | switch (code) { | ||
| 5 | case QK_MODS ... QK_MODS_MAX: | ||
| 6 | break; | ||
| 7 | default: | ||
| 8 | return; | ||
| 9 | } | ||
| 10 | |||
| 11 | if (code & QK_LCTL) | ||
| 12 | f(KC_LCTL); | ||
| 13 | if (code & QK_LSFT) | ||
| 14 | f(KC_LSFT); | ||
| 15 | if (code & QK_LALT) | ||
| 16 | f(KC_LALT); | ||
| 17 | if (code & QK_LGUI) | ||
| 18 | f(KC_LGUI); | ||
| 19 | |||
| 20 | if (code & QK_RCTL) | ||
| 21 | f(KC_RCTL); | ||
| 22 | if (code & QK_RSFT) | ||
| 23 | f(KC_RSFT); | ||
| 24 | if (code & QK_RALT) | ||
| 25 | f(KC_RALT); | ||
| 26 | if (code & QK_RGUI) | ||
| 27 | f(KC_RGUI); | ||
| 28 | } | ||
| 29 | |||
| 30 | void register_code16 (uint16_t code) { | ||
| 31 | do_code16 (code, register_code); | ||
| 32 | register_code (code); | ||
| 33 | } | ||
| 34 | |||
| 35 | void unregister_code16 (uint16_t code) { | ||
| 36 | unregister_code (code); | ||
| 37 | do_code16 (code, unregister_code); | ||
| 38 | } | ||
| 39 | |||
| 3 | __attribute__ ((weak)) | 40 | __attribute__ ((weak)) |
| 4 | bool process_action_kb(keyrecord_t *record) { | 41 | bool process_action_kb(keyrecord_t *record) { |
| 5 | return true; | 42 | return true; |
diff --git a/quantum/quantum.h b/quantum/quantum.h index 6e3fbcc79..0c6046649 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h | |||
| @@ -83,6 +83,9 @@ void reset_keyboard(void); | |||
| 83 | void startup_user(void); | 83 | void startup_user(void); |
| 84 | void shutdown_user(void); | 84 | void shutdown_user(void); |
| 85 | 85 | ||
| 86 | void register_code16 (uint16_t code); | ||
| 87 | void unregister_code16 (uint16_t code); | ||
| 88 | |||
| 86 | #ifdef BACKLIGHT_ENABLE | 89 | #ifdef BACKLIGHT_ENABLE |
| 87 | void backlight_init_ports(void); | 90 | void backlight_init_ports(void); |
| 88 | 91 | ||
