diff options
author | Jonas Gessner <JonasGessner@users.noreply.github.com> | 2021-07-13 19:13:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-13 10:13:51 -0700 |
commit | 52cfc9259b58a3a11a244fbe35c49c7dd1a9cae0 (patch) | |
tree | 71cbd4b8e2c622a33cbb4d080a08e035901f30c8 /quantum/quantum.c | |
parent | 1ae4d52013c9f38bdc5c208ff8bbfdf173e1dddd (diff) | |
download | qmk_firmware-52cfc9259b58a3a11a244fbe35c49c7dd1a9cae0.tar.gz qmk_firmware-52cfc9259b58a3a11a244fbe35c49c7dd1a9cae0.zip |
[Feature] Key Overrides (#11422)
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r-- | quantum/quantum.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index b4cfa28d7..9cfffd931 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
@@ -58,12 +58,16 @@ float bell_song[][2] = SONG(TERMINAL_SOUND); | |||
58 | # include "process_auto_shift.h" | 58 | # include "process_auto_shift.h" |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | static void do_code16(uint16_t code, void (*f)(uint8_t)) { | 61 | #ifdef KEY_OVERRIDE_ENABLE |
62 | # include "process_key_override_private.h" | ||
63 | #endif | ||
64 | |||
65 | uint8_t extract_mod_bits(uint16_t code) { | ||
62 | switch (code) { | 66 | switch (code) { |
63 | case QK_MODS ... QK_MODS_MAX: | 67 | case QK_MODS ... QK_MODS_MAX: |
64 | break; | 68 | break; |
65 | default: | 69 | default: |
66 | return; | 70 | return 0; |
67 | } | 71 | } |
68 | 72 | ||
69 | uint8_t mods_to_send = 0; | 73 | uint8_t mods_to_send = 0; |
@@ -80,9 +84,11 @@ static void do_code16(uint16_t code, void (*f)(uint8_t)) { | |||
80 | if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LGUI); | 84 | if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LGUI); |
81 | } | 85 | } |
82 | 86 | ||
83 | f(mods_to_send); | 87 | return mods_to_send; |
84 | } | 88 | } |
85 | 89 | ||
90 | static void do_code16(uint16_t code, void (*f)(uint8_t)) { f(extract_mod_bits(code)); } | ||
91 | |||
86 | void register_code16(uint16_t code) { | 92 | void register_code16(uint16_t code) { |
87 | if (IS_MOD(code) || code == KC_NO) { | 93 | if (IS_MOD(code) || code == KC_NO) { |
88 | do_code16(code, register_mods); | 94 | do_code16(code, register_mods); |
@@ -243,6 +249,9 @@ bool process_record_quantum(keyrecord_t *record) { | |||
243 | #if (defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))) && !defined(NO_MUSIC_MODE) | 249 | #if (defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))) && !defined(NO_MUSIC_MODE) |
244 | process_music(keycode, record) && | 250 | process_music(keycode, record) && |
245 | #endif | 251 | #endif |
252 | #ifdef KEY_OVERRIDE_ENABLE | ||
253 | process_key_override(keycode, record) && | ||
254 | #endif | ||
246 | #ifdef TAP_DANCE_ENABLE | 255 | #ifdef TAP_DANCE_ENABLE |
247 | process_tap_dance(keycode, record) && | 256 | process_tap_dance(keycode, record) && |
248 | #endif | 257 | #endif |
@@ -408,6 +417,10 @@ void matrix_scan_quantum() { | |||
408 | matrix_scan_music(); | 417 | matrix_scan_music(); |
409 | #endif | 418 | #endif |
410 | 419 | ||
420 | #ifdef KEY_OVERRIDE_ENABLE | ||
421 | matrix_scan_key_override(); | ||
422 | #endif | ||
423 | |||
411 | #ifdef SEQUENCER_ENABLE | 424 | #ifdef SEQUENCER_ENABLE |
412 | matrix_scan_sequencer(); | 425 | matrix_scan_sequencer(); |
413 | #endif | 426 | #endif |