summaryrefslogtreecommitdiff
path: root/quantum/quantum.c
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2025-02-26 22:25:41 +1100
committerGitHub <noreply@github.com>2025-02-26 22:25:41 +1100
commit1efc82403bebe759272d1ba7a79d9dfa0d5df506 (patch)
treec356ae7afeb0849926534beb5dd4515f693abf99 /quantum/quantum.c
parent63b095212b157c4522bdeda3de144fb87213085d (diff)
Community modules (#24848)
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c26
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
191void shutdown_quantum(bool jump_to_bootloader) { 209void 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 */
260bool pre_process_record_quantum(keyrecord_t *record) { 280bool 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 */
269void post_process_record_quantum(keyrecord_t *record) { 289void 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
528void suspend_power_down_quantum(void) { 550void 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