aboutsummaryrefslogtreecommitdiff
path: root/quantum/quantum.c
diff options
context:
space:
mode:
authorJonas Gessner <JonasGessner@users.noreply.github.com>2021-07-13 19:13:51 +0200
committerGitHub <noreply@github.com>2021-07-13 10:13:51 -0700
commit52cfc9259b58a3a11a244fbe35c49c7dd1a9cae0 (patch)
tree71cbd4b8e2c622a33cbb4d080a08e035901f30c8 /quantum/quantum.c
parent1ae4d52013c9f38bdc5c208ff8bbfdf173e1dddd (diff)
downloadqmk_firmware-52cfc9259b58a3a11a244fbe35c49c7dd1a9cae0.tar.gz
qmk_firmware-52cfc9259b58a3a11a244fbe35c49c7dd1a9cae0.zip
[Feature] Key Overrides (#11422)
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c19
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
61static 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
65uint8_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
90static void do_code16(uint16_t code, void (*f)(uint8_t)) { f(extract_mod_bits(code)); }
91
86void register_code16(uint16_t code) { 92void 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