diff options
Diffstat (limited to 'quantum/quantum.c')
| -rw-r--r-- | quantum/quantum.c | 37 |
1 files changed, 37 insertions, 0 deletions
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; |
