aboutsummaryrefslogtreecommitdiff
path: root/quantum/quantum.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 8ccdb774b..f35939216 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -49,21 +49,18 @@ float goodbye_song[][2] = GOODBYE_SONG;
49# ifdef DEFAULT_LAYER_SONGS 49# ifdef DEFAULT_LAYER_SONGS
50float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS; 50float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS;
51# endif 51# endif
52# ifdef SENDSTRING_BELL
53float bell_song[][2] = SONG(TERMINAL_SOUND);
54# endif
55#endif 52#endif
56 53
57#ifdef AUTO_SHIFT_ENABLE 54#ifdef AUTO_SHIFT_ENABLE
58# include "process_auto_shift.h" 55# include "process_auto_shift.h"
59#endif 56#endif
60 57
61static void do_code16(uint16_t code, void (*f)(uint8_t)) { 58uint8_t extract_mod_bits(uint16_t code) {
62 switch (code) { 59 switch (code) {
63 case QK_MODS ... QK_MODS_MAX: 60 case QK_MODS ... QK_MODS_MAX:
64 break; 61 break;
65 default: 62 default:
66 return; 63 return 0;
67 } 64 }
68 65
69 uint8_t mods_to_send = 0; 66 uint8_t mods_to_send = 0;
@@ -80,9 +77,11 @@ static void do_code16(uint16_t code, void (*f)(uint8_t)) {
80 if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LGUI); 77 if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LGUI);
81 } 78 }
82 79
83 f(mods_to_send); 80 return mods_to_send;
84} 81}
85 82
83static void do_code16(uint16_t code, void (*f)(uint8_t)) { f(extract_mod_bits(code)); }
84
86void register_code16(uint16_t code) { 85void register_code16(uint16_t code) {
87 if (IS_MOD(code) || code == KC_NO) { 86 if (IS_MOD(code) || code == KC_NO) {
88 do_code16(code, register_mods); 87 do_code16(code, register_mods);
@@ -217,10 +216,10 @@ bool process_record_quantum(keyrecord_t *record) {
217#endif 216#endif
218#if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY) 217#if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY)
219 process_clicky(keycode, record) && 218 process_clicky(keycode, record) &&
220#endif // AUDIO_CLICKY 219#endif
221#ifdef HAPTIC_ENABLE 220#ifdef HAPTIC_ENABLE
222 process_haptic(keycode, record) && 221 process_haptic(keycode, record) &&
223#endif // HAPTIC_ENABLE 222#endif
224#if defined(VIA_ENABLE) 223#if defined(VIA_ENABLE)
225 process_record_via(keycode, record) && 224 process_record_via(keycode, record) &&
226#endif 225#endif
@@ -243,6 +242,9 @@ bool process_record_quantum(keyrecord_t *record) {
243#if (defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))) && !defined(NO_MUSIC_MODE) 242#if (defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))) && !defined(NO_MUSIC_MODE)
244 process_music(keycode, record) && 243 process_music(keycode, record) &&
245#endif 244#endif
245#ifdef KEY_OVERRIDE_ENABLE
246 process_key_override(keycode, record) &&
247#endif
246#ifdef TAP_DANCE_ENABLE 248#ifdef TAP_DANCE_ENABLE
247 process_tap_dance(keycode, record) && 249 process_tap_dance(keycode, record) &&
248#endif 250#endif
@@ -340,13 +342,13 @@ void set_single_persistent_default_layer(uint8_t default_layer) {
340#if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) 342#if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
341 PLAY_SONG(default_layer_songs[default_layer]); 343 PLAY_SONG(default_layer_songs[default_layer]);
342#endif 344#endif
343 eeconfig_update_default_layer(1U << default_layer); 345 eeconfig_update_default_layer((layer_state_t)1 << default_layer);
344 default_layer_set(1U << default_layer); 346 default_layer_set((layer_state_t)1 << default_layer);
345} 347}
346 348
347layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_t layer2, uint8_t layer3) { 349layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
348 layer_state_t mask12 = (1UL << layer1) | (1UL << layer2); 350 layer_state_t mask12 = ((layer_state_t)1 << layer1) | ((layer_state_t)1 << layer2);
349 layer_state_t mask3 = 1UL << layer3; 351 layer_state_t mask3 = (layer_state_t)1 << layer3;
350 return (state & mask12) == mask12 ? (state | mask3) : (state & ~mask3); 352 return (state & mask12) == mask12 ? (state | mask3) : (state & ~mask3);
351} 353}
352 354
@@ -405,19 +407,23 @@ void matrix_scan_quantum() {
405#endif 407#endif
406 408
407#if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE) 409#if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE)
408 matrix_scan_music(); 410 music_task();
411#endif
412
413#ifdef KEY_OVERRIDE_ENABLE
414 key_override_task();
409#endif 415#endif
410 416
411#ifdef SEQUENCER_ENABLE 417#ifdef SEQUENCER_ENABLE
412 matrix_scan_sequencer(); 418 sequencer_task();
413#endif 419#endif
414 420
415#ifdef TAP_DANCE_ENABLE 421#ifdef TAP_DANCE_ENABLE
416 matrix_scan_tap_dance(); 422 tap_dance_task();
417#endif 423#endif
418 424
419#ifdef COMBO_ENABLE 425#ifdef COMBO_ENABLE
420 matrix_scan_combo(); 426 combo_task();
421#endif 427#endif
422 428
423#ifdef LED_MATRIX_ENABLE 429#ifdef LED_MATRIX_ENABLE