diff options
author | Jack Humbert <jack.humb@gmail.com> | 2016-08-18 10:32:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-18 10:32:16 -0400 |
commit | ca7fa07bc181d9faad618b29866a5cd971f685ce (patch) | |
tree | 65baebd4ee80a5ca90c86063d4be97a5393bf674 /quantum/quantum.c | |
parent | 8f32595820e4f1f21396f82aa8868ce07f2d193d (diff) | |
parent | 0d28787c5cf2173d12f57b397515f91cffaa820a (diff) |
Merge pull request #651 from algernon/f/register16
Add a register/unregister_code16 pair of functions
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 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; |