diff options
| author | Nick Brassel <nick@tzarc.org> | 2025-02-26 22:25:41 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-26 22:25:41 +1100 |
| commit | 1efc82403bebe759272d1ba7a79d9dfa0d5df506 (patch) | |
| tree | c356ae7afeb0849926534beb5dd4515f693abf99 /quantum/quantum.c | |
| parent | 63b095212b157c4522bdeda3de144fb87213085d (diff) | |
Community modules (#24848)
Diffstat (limited to 'quantum/quantum.c')
| -rw-r--r-- | quantum/quantum.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index b63300add8..adb14d64b6 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
| @@ -162,6 +162,10 @@ __attribute__((weak)) void tap_code16(uint16_t code) { | |||
| 162 | tap_code16_delay(code, code == KC_CAPS_LOCK ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY); | 162 | tap_code16_delay(code, code == KC_CAPS_LOCK ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY); |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | __attribute__((weak)) bool pre_process_record_modules(uint16_t keycode, keyrecord_t *record) { | ||
| 166 | return true; | ||
| 167 | } | ||
| 168 | |||
| 165 | __attribute__((weak)) bool pre_process_record_kb(uint16_t keycode, keyrecord_t *record) { | 169 | __attribute__((weak)) bool pre_process_record_kb(uint16_t keycode, keyrecord_t *record) { |
| 166 | return pre_process_record_user(keycode, record); | 170 | return pre_process_record_user(keycode, record); |
| 167 | } | 171 | } |
| @@ -174,6 +178,10 @@ __attribute__((weak)) bool process_action_kb(keyrecord_t *record) { | |||
| 174 | return true; | 178 | return true; |
| 175 | } | 179 | } |
| 176 | 180 | ||
| 181 | __attribute__((weak)) bool process_record_modules(uint16_t keycode, keyrecord_t *record) { | ||
| 182 | return true; | ||
| 183 | } | ||
| 184 | |||
| 177 | __attribute__((weak)) bool process_record_kb(uint16_t keycode, keyrecord_t *record) { | 185 | __attribute__((weak)) bool process_record_kb(uint16_t keycode, keyrecord_t *record) { |
| 178 | return process_record_user(keycode, record); | 186 | return process_record_user(keycode, record); |
| 179 | } | 187 | } |
| @@ -182,12 +190,22 @@ __attribute__((weak)) bool process_record_user(uint16_t keycode, keyrecord_t *re | |||
| 182 | return true; | 190 | return true; |
| 183 | } | 191 | } |
| 184 | 192 | ||
| 193 | __attribute__((weak)) void post_process_record_modules(uint16_t keycode, keyrecord_t *record) {} | ||
| 194 | |||
| 185 | __attribute__((weak)) void post_process_record_kb(uint16_t keycode, keyrecord_t *record) { | 195 | __attribute__((weak)) void post_process_record_kb(uint16_t keycode, keyrecord_t *record) { |
| 186 | post_process_record_user(keycode, record); | 196 | post_process_record_user(keycode, record); |
| 187 | } | 197 | } |
| 188 | 198 | ||
| 189 | __attribute__((weak)) void post_process_record_user(uint16_t keycode, keyrecord_t *record) {} | 199 | __attribute__((weak)) void post_process_record_user(uint16_t keycode, keyrecord_t *record) {} |
| 190 | 200 | ||
| 201 | __attribute__((weak)) bool shutdown_modules(bool jump_to_bootloader) { | ||
| 202 | return true; | ||
| 203 | } | ||
| 204 | |||
| 205 | __attribute__((weak)) void suspend_power_down_modules(void) {} | ||
| 206 | |||
| 207 | __attribute__((weak)) void suspend_wakeup_init_modules(void) {} | ||
| 208 | |||
| 191 | void shutdown_quantum(bool jump_to_bootloader) { | 209 | void shutdown_quantum(bool jump_to_bootloader) { |
| 192 | clear_keyboard(); | 210 | clear_keyboard(); |
| 193 | #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) | 211 | #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) |
| @@ -199,11 +217,13 @@ void shutdown_quantum(bool jump_to_bootloader) { | |||
| 199 | # endif | 217 | # endif |
| 200 | uint16_t timer_start = timer_read(); | 218 | uint16_t timer_start = timer_read(); |
| 201 | PLAY_SONG(goodbye_song); | 219 | PLAY_SONG(goodbye_song); |
| 220 | shutdown_modules(jump_to_bootloader); | ||
| 202 | shutdown_kb(jump_to_bootloader); | 221 | shutdown_kb(jump_to_bootloader); |
| 203 | while (timer_elapsed(timer_start) < 250) | 222 | while (timer_elapsed(timer_start) < 250) |
| 204 | wait_ms(1); | 223 | wait_ms(1); |
| 205 | stop_all_notes(); | 224 | stop_all_notes(); |
| 206 | #else | 225 | #else |
| 226 | shutdown_modules(jump_to_bootloader); | ||
| 207 | shutdown_kb(jump_to_bootloader); | 227 | shutdown_kb(jump_to_bootloader); |
| 208 | wait_ms(250); | 228 | wait_ms(250); |
| 209 | #endif | 229 | #endif |
| @@ -258,7 +278,7 @@ uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache) { | |||
| 258 | 278 | ||
| 259 | /* Get keycode, and then process pre tapping functionality */ | 279 | /* Get keycode, and then process pre tapping functionality */ |
| 260 | bool pre_process_record_quantum(keyrecord_t *record) { | 280 | bool pre_process_record_quantum(keyrecord_t *record) { |
| 261 | return pre_process_record_kb(get_record_keycode(record, true), record) && | 281 | return pre_process_record_modules(get_record_keycode(record, true), record) && pre_process_record_kb(get_record_keycode(record, true), record) && |
| 262 | #ifdef COMBO_ENABLE | 282 | #ifdef COMBO_ENABLE |
| 263 | process_combo(get_record_keycode(record, true), record) && | 283 | process_combo(get_record_keycode(record, true), record) && |
| 264 | #endif | 284 | #endif |
| @@ -268,6 +288,7 @@ bool pre_process_record_quantum(keyrecord_t *record) { | |||
| 268 | /* Get keycode, and then call keyboard function */ | 288 | /* Get keycode, and then call keyboard function */ |
| 269 | void post_process_record_quantum(keyrecord_t *record) { | 289 | void post_process_record_quantum(keyrecord_t *record) { |
| 270 | uint16_t keycode = get_record_keycode(record, false); | 290 | uint16_t keycode = get_record_keycode(record, false); |
| 291 | post_process_record_modules(keycode, record); | ||
| 271 | post_process_record_kb(keycode, record); | 292 | post_process_record_kb(keycode, record); |
| 272 | } | 293 | } |
| 273 | 294 | ||
| @@ -332,6 +353,7 @@ bool process_record_quantum(keyrecord_t *record) { | |||
| 332 | #if defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE) | 353 | #if defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE) |
| 333 | process_auto_mouse(keycode, record) && | 354 | process_auto_mouse(keycode, record) && |
| 334 | #endif | 355 | #endif |
| 356 | process_record_modules(keycode, record) && // modules must run before kb | ||
| 335 | process_record_kb(keycode, record) && | 357 | process_record_kb(keycode, record) && |
| 336 | #if defined(VIA_ENABLE) | 358 | #if defined(VIA_ENABLE) |
| 337 | process_record_via(keycode, record) && | 359 | process_record_via(keycode, record) && |
| @@ -526,6 +548,7 @@ __attribute__((weak)) bool shutdown_kb(bool jump_to_bootloader) { | |||
| 526 | } | 548 | } |
| 527 | 549 | ||
| 528 | void suspend_power_down_quantum(void) { | 550 | void suspend_power_down_quantum(void) { |
| 551 | suspend_power_down_modules(); | ||
| 529 | suspend_power_down_kb(); | 552 | suspend_power_down_kb(); |
| 530 | #ifndef NO_SUSPEND_POWER_DOWN | 553 | #ifndef NO_SUSPEND_POWER_DOWN |
| 531 | // Turn off backlight | 554 | // Turn off backlight |
| @@ -593,6 +616,7 @@ __attribute__((weak)) void suspend_wakeup_init_quantum(void) { | |||
| 593 | #if defined(RGB_MATRIX_ENABLE) | 616 | #if defined(RGB_MATRIX_ENABLE) |
| 594 | rgb_matrix_set_suspend_state(false); | 617 | rgb_matrix_set_suspend_state(false); |
| 595 | #endif | 618 | #endif |
| 619 | suspend_wakeup_init_modules(); | ||
| 596 | suspend_wakeup_init_kb(); | 620 | suspend_wakeup_init_kb(); |
| 597 | } | 621 | } |
| 598 | 622 | ||
