summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/custom_quantum_functions.md59
-rw-r--r--docs/feature_oled_driver.md18
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c35
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c12
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c12
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c12
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c12
-rw-r--r--keyboards/bastardkb/charybdis/charybdis.c17
-rw-r--r--keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c12
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c3
-rw-r--r--keyboards/bastardkb/dilemma/dilemma.c17
-rwxr-xr-xkeyboards/bemeier/bmek/bmek.c7
-rw-r--r--keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c4
-rw-r--r--keyboards/dumbpad/v0x/v0x.c6
-rw-r--r--keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c6
-rw-r--r--keyboards/dumbpad/v0x_right/v0x_right.c6
-rw-r--r--keyboards/dumbpad/v1x/v1x.c6
-rw-r--r--keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c6
-rw-r--r--keyboards/dumbpad/v1x_right/v1x_right.c6
-rw-r--r--keyboards/dumbpad/v3x/v3x.c6
-rw-r--r--keyboards/eco/keymaps/that_canadian/keymap.c38
-rw-r--r--keyboards/hadron/ver2/keymaps/side_numpad/keymap.c33
-rw-r--r--keyboards/handwired/atreus50/keymaps/default/keymap.c48
-rw-r--r--keyboards/handwired/ortho5x13/keymaps/default/keymap.c49
-rw-r--r--keyboards/helix/pico/keymaps/default/keymap.c30
-rw-r--r--keyboards/helix/pico/keymaps/mtei/keymap.c33
-rw-r--r--keyboards/helix/rev2/keymaps/default/keymap.c30
-rw-r--r--keyboards/helix/rev2/keymaps/froggy/keymap.c30
-rw-r--r--keyboards/helix/rev2/keymaps/yshrsmz/keymap.c30
-rw-r--r--keyboards/matrix/abelx/abelx.c7
-rw-r--r--keyboards/matrix/m20add/m20add.c8
-rwxr-xr-xkeyboards/neopad/rev1/rev1.c6
-rw-r--r--keyboards/omkbd/ergodash/rev1/rev1.c32
-rw-r--r--keyboards/planck/keymaps/altgr/common/init.h26
-rw-r--r--keyboards/planck/keymaps/circuit/keymap.c38
-rw-r--r--keyboards/planck/keymaps/dbroqua/keymap.c38
-rw-r--r--keyboards/planck/keymaps/dr_notsokind/keymap.c42
-rw-r--r--keyboards/planck/keymaps/emilyh/keymap.c38
-rw-r--r--keyboards/planck/keymaps/experimental/keymap.c37
-rw-r--r--keyboards/planck/keymaps/gunp/keymap.c23
-rw-r--r--keyboards/planck/keymaps/handwired_binaryplease/keymap.c37
-rw-r--r--keyboards/planck/keymaps/hiea/common/init.h26
-rw-r--r--keyboards/planck/keymaps/hieax/common/init.h25
-rw-r--r--keyboards/planck/keymaps/impossible/keymap.c40
-rw-r--r--keyboards/planck/keymaps/ishtob/keymap.c60
-rw-r--r--keyboards/planck/keymaps/jhenahan/keymap.c38
-rw-r--r--keyboards/planck/keymaps/lae3/keymap.c46
-rw-r--r--keyboards/planck/keymaps/mjt/keymap.c38
-rw-r--r--keyboards/planck/keymaps/mjtnumsym/keymap.c38
-rw-r--r--keyboards/planck/keymaps/originerd/keymap.c38
-rw-r--r--keyboards/planck/keymaps/premek/keymap.c38
-rw-r--r--keyboards/planck/keymaps/roguepullrequest/keymap.c13
-rw-r--r--keyboards/planck/keymaps/sdothum/common/init.h26
-rw-r--r--keyboards/planck/keymaps/sgoodwin/keymap.c38
-rw-r--r--keyboards/planck/keymaps/smt/keymap.c38
-rw-r--r--keyboards/planck/keymaps/that_canadian/keymap.c38
-rw-r--r--keyboards/planck/keymaps/vaire/keymap.c68
-rw-r--r--keyboards/planck/keymaps/zach/zach_common_functions.c30
-rw-r--r--keyboards/preonic/keymaps/0xdec/keymap.c27
-rw-r--r--keyboards/preonic/keymaps/bucktooth/keymap.c44
-rw-r--r--keyboards/preonic/keymaps/jacwib/keymap.c46
-rw-r--r--keyboards/preonic/keymaps/nikchi/keymap.c44
-rw-r--r--keyboards/preonic/keymaps/smt/keymap.c44
-rw-r--r--keyboards/preonic/keymaps/that_canadian/keymap.c44
-rw-r--r--keyboards/preonic/keymaps/zach/zach_common_functions.c28
-rw-r--r--layouts/community/numpad_5x6/bjohnson/keymap.c3
-rw-r--r--quantum/quantum.c21
-rw-r--r--quantum/quantum.h4
-rw-r--r--users/brandonschlack/brandonschlack.c3
-rw-r--r--users/curry/curry.c3
-rw-r--r--users/drashna/callbacks.c17
-rw-r--r--users/drashna/callbacks.h2
-rw-r--r--users/drashna/callbacks.md11
-rw-r--r--users/drashna/template.c13
-rw-r--r--users/jjerrell/jjerrell.c20
-rw-r--r--users/jjerrell/jjerrell.h12
-rw-r--r--users/kuchosauronad0/kuchosauronad0.c15
-rw-r--r--users/kuchosauronad0/kuchosauronad0.h2
-rw-r--r--users/spidey3/init.c5
79 files changed, 277 insertions, 1684 deletions
diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md
index 5d63f3cfb7..7a7b6ee823 100644
--- a/docs/custom_quantum_functions.md
+++ b/docs/custom_quantum_functions.md
@@ -283,6 +283,65 @@ void suspend_wakeup_init_user(void) {
283* Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)` 283* Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
284* Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)` 284* Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
285 285
286
287# Keyboard Shutdown/Reboot Code
288
289This function gets called whenever the firmware is reset, whether it's a soft reset or reset to the bootloader. This is the spot to use for any sort of cleanup, as this happens right before the actual reset. And it can be useful for turning off different systems (such as RGB, onboard screens, etc).
290
291Additionally, it differentiates between the soft reset (eg, rebooting back into the firmware) or jumping to the bootloader.
292
293Certain tasks are performed during shutdown too. The keyboard is cleared, music and midi is stopped (if enabled), the shutdown chime is triggered (if audio is enabled), and haptic is stopped.
294
295If `jump_to_bootloader` is set to `true`, this indicates that the board will be entering the bootloader for a new firmware flash, whereas `false` indicates that this is happening for a soft reset and will load the firmware agaim immediately (such as when using `QK_REBOOT` or `QK_CLEAR_EEPROM`).
296
297As there is a keyboard and user level function, returning `false` for the user function will disable the keyboard level function, allowing for customization.
298
299?> Bootmagic does not trigger `shutdown_*()` as it happens before most of the initialization process.
300
301### Example `shutdown_kb()` Implementation
302
303```c
304bool shutdown_kb(bool jump_to_bootloader) {
305 if (!shutdown_user(jump_to_bootloader)) {
306 return false;
307 }
308
309 if (jump_to_bootloader) {
310 // red for bootloader
311 rgb_matrix_set_color_all(RGB_OFF);
312 } else {
313 // off for soft reset
314 rgb_matrix_set_color_all(RGB_GREEN);
315 }
316 // force flushing -- otherwise will never happen
317 rgb_matrix_update_pwm_buffers();
318 return true;
319}
320```
321
322### Example `shutdown_user()` Implementation
323
324```c
325bool shutdown_user(bool jump_to_bootloader) {
326 if (jump_to_bootloader) {
327 // red for bootloader
328 rgb_matrix_set_color_all(RGB_RED);
329 } else {
330 // off for soft reset
331 rgb_matrix_set_color_all(RGB_OFF);
332 }
333 // force flushing -- otherwise will never happen
334 rgb_matrix_update_pwm_buffers();
335 // false to not process kb level
336 return false;
337}
338```
339
340### Keyboard shutdown/reboot Function Documentation
341
342* Keyboard/Revision: `bool shutdown_kb(bool jump_to_bootloader)`
343* Keymap: `bool shutdown_user(bool jump_to_bootloader)`
344
286# Deferred Execution :id=deferred-execution 345# Deferred Execution :id=deferred-execution
287 346
288QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. To enable this functionality, set `DEFERRED_EXEC_ENABLE = yes` in rules.mk. 347QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. To enable this functionality, set `DEFERRED_EXEC_ENABLE = yes` in rules.mk.
diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md
index 452f729e14..a8bcdf2db9 100644
--- a/docs/feature_oled_driver.md
+++ b/docs/feature_oled_driver.md
@@ -183,22 +183,8 @@ void oled_render_boot(bool bootloader) {
183 oled_render_dirty(true); 183 oled_render_dirty(true);
184} 184}
185 185
186bool reboot = false; 186bool shutdown_user(bool jump_to_bootloader) {
187 187 oled_render_boot(jump_to_bootloader);
188bool uint16_t keycode, keyrecord_t *record) {
189 if (record->event.pressed) {
190
191 // Display a special message prior to rebooting...
192 if (keycode == QK_BOOT) {
193 reboot = true;
194 }
195 }
196
197 return true;
198}
199
200void shutdown_user(void) {
201 oled_render_boot(reboot);
202} 188}
203 189
204``` 190```
diff --git a/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c b/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c
index 090fd1d296..3a5cef8fad 100644
--- a/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c
+++ b/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c
@@ -66,15 +66,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
66 66
67#ifdef AUDIO_ENABLE 67#ifdef AUDIO_ENABLE
68 68
69float tone_startup[][2] = SONG(STARTUP_SOUND);
70float tone_qwerty[][2] = SONG(QWERTY_SOUND); 69float tone_qwerty[][2] = SONG(QWERTY_SOUND);
71float tone_dvorak[][2] = SONG(DVORAK_SOUND); 70float tone_dvorak[][2] = SONG(DVORAK_SOUND);
72float tone_colemak[][2] = SONG(COLEMAK_SOUND); 71float tone_colemak[][2] = SONG(COLEMAK_SOUND);
73float tone_plover[][2] = SONG(PLOVER_SOUND); 72float tone_plover[][2] = SONG(PLOVER_SOUND);
74float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 73float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
75float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
76 74
77float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
78#endif 75#endif
79 76
80void persistant_default_layer_set(uint16_t default_layer) { 77void persistant_default_layer_set(uint16_t default_layer) {
@@ -166,39 +163,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
166 return true; 163 return true;
167} 164}
168 165
169void matrix_init_user(void) { 166void matrix_scan_user(void) {
170 #ifdef AUDIO_ENABLE
171 startup_user();
172 #endif
173} 167}
174 168
175#ifdef AUDIO_ENABLE
176
177void startup_user(void)
178{
179 _delay_ms(20); // gets rid of tick
180 PLAY_SONG(tone_startup);
181}
182
183void shutdown_user(void)
184{
185 PLAY_SONG(tone_goodbye);
186 _delay_ms(150);
187 stop_all_notes();
188}
189
190void music_on_user(void)
191{
192 music_scale_user();
193}
194
195void music_scale_user(void)
196{
197 PLAY_SONG(music_scale);
198}
199
200#endif
201
202//Tap Dance Definitions 169//Tap Dance Definitions
203tap_dance_action_t tap_dance_actions[] = { 170tap_dance_action_t tap_dance_actions[] = {
204 //Tap once for Esc, twice for Caps Lock 171 //Tap once for Esc, twice for Caps Lock
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c
index 8f02227c01..21e823575e 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c
@@ -210,15 +210,3 @@ layer_state_t layer_state_set_kb(layer_state_t state) {
210// Forward-declare this helper function since it is defined in rgb_matrix.c. 210// Forward-declare this helper function since it is defined in rgb_matrix.c.
211void rgb_matrix_update_pwm_buffers(void); 211void rgb_matrix_update_pwm_buffers(void);
212#endif 212#endif
213
214void shutdown_user(void) {
215#ifdef RGBLIGHT_ENABLE
216 rgblight_enable_noeeprom();
217 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
218 rgblight_setrgb(RGB_RED);
219#endif // RGBLIGHT_ENABLE
220#ifdef RGB_MATRIX_ENABLE
221 rgb_matrix_set_color_all(RGB_RED);
222 rgb_matrix_update_pwm_buffers();
223#endif // RGB_MATRIX_ENABLE
224}
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
index 4a91548090..5299444ad3 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
@@ -255,15 +255,3 @@ layer_state_t layer_state_set_user(layer_state_t state) {
255// rgb_matrix.c. 255// rgb_matrix.c.
256void rgb_matrix_update_pwm_buffers(void); 256void rgb_matrix_update_pwm_buffers(void);
257#endif 257#endif
258
259void shutdown_user(void) {
260#ifdef RGBLIGHT_ENABLE
261 rgblight_enable_noeeprom();
262 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
263 rgblight_setrgb(RGB_RED);
264#endif // RGBLIGHT_ENABLE
265#ifdef RGB_MATRIX_ENABLE
266 rgb_matrix_set_color_all(RGB_RED);
267 rgb_matrix_update_pwm_buffers();
268#endif // RGB_MATRIX_ENABLE
269}
diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c
index fd56cce25d..d78ce8b7ff 100644
--- a/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c
@@ -134,15 +134,3 @@ layer_state_t layer_state_set_user(layer_state_t state) {
134// Forward-declare this helper function since it is defined in rgb_matrix.c. 134// Forward-declare this helper function since it is defined in rgb_matrix.c.
135void rgb_matrix_update_pwm_buffers(void); 135void rgb_matrix_update_pwm_buffers(void);
136#endif 136#endif
137
138void shutdown_user(void) {
139#ifdef RGBLIGHT_ENABLE
140 rgblight_enable_noeeprom();
141 rgblight_mode_noeeprom(1);
142 rgblight_setrgb(RGB_RED);
143#endif // RGBLIGHT_ENABLE
144#ifdef RGB_MATRIX_ENABLE
145 rgb_matrix_set_color_all(RGB_RED);
146 rgb_matrix_update_pwm_buffers();
147#endif // RGB_MATRIX_ENABLE
148}
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
index fb795829fd..a0657b02ec 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
@@ -157,15 +157,3 @@ layer_state_t layer_state_set_user(layer_state_t state) {
157// Forward-declare this helper function since it is defined in rgb_matrix.c. 157// Forward-declare this helper function since it is defined in rgb_matrix.c.
158void rgb_matrix_update_pwm_buffers(void); 158void rgb_matrix_update_pwm_buffers(void);
159#endif 159#endif
160
161void shutdown_user(void) {
162#ifdef RGBLIGHT_ENABLE
163 rgblight_enable_noeeprom();
164 rgblight_mode_noeeprom(1);
165 rgblight_setrgb(RGB_RED);
166#endif // RGBLIGHT_ENABLE
167#ifdef RGB_MATRIX_ENABLE
168 rgb_matrix_set_color_all(RGB_RED);
169 rgb_matrix_update_pwm_buffers();
170#endif // RGB_MATRIX_ENABLE
171}
diff --git a/keyboards/bastardkb/charybdis/charybdis.c b/keyboards/bastardkb/charybdis/charybdis.c
index c321af7aa9..c9f0e63172 100644
--- a/keyboards/bastardkb/charybdis/charybdis.c
+++ b/keyboards/bastardkb/charybdis/charybdis.c
@@ -382,3 +382,20 @@ void matrix_scan_kb(void) {
382 matrix_scan_user(); 382 matrix_scan_user();
383} 383}
384#endif // KEYBOARD_bastardkb_charybdis_3x5_blackpill || KEYBOARD_bastardkb_charybdis_4x6_blackpill 384#endif // KEYBOARD_bastardkb_charybdis_3x5_blackpill || KEYBOARD_bastardkb_charybdis_4x6_blackpill
385
386bool shutdown_kb(bool jump_to_bootloader) {
387 if (!shutdown_user(jump_to_bootloader)) {
388 return false;
389 }
390#ifdef RGBLIGHT_ENABLE
391 rgblight_enable_noeeprom();
392 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
393 rgblight_setrgb(RGB_RED);
394#endif // RGBLIGHT_ENABLE
395#ifdef RGB_MATRIX_ENABLE
396 void rgb_matrix_update_pwm_buffers(void);
397 rgb_matrix_set_color_all(RGB_RED);
398 rgb_matrix_update_pwm_buffers();
399#endif // RGB_MATRIX_ENABLE
400 return true;
401}
diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c
index e8c0441d7b..5f22184928 100644
--- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c
+++ b/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c
@@ -210,15 +210,3 @@ layer_state_t layer_state_set_kb(layer_state_t state) {
210// Forward-declare this helper function since it is defined in rgb_matrix.c. 210// Forward-declare this helper function since it is defined in rgb_matrix.c.
211void rgb_matrix_update_pwm_buffers(void); 211void rgb_matrix_update_pwm_buffers(void);
212#endif 212#endif
213
214void shutdown_user(void) {
215#ifdef RGBLIGHT_ENABLE
216 rgblight_enable_noeeprom();
217 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
218 rgblight_setrgb(RGB_RED);
219#endif // RGBLIGHT_ENABLE
220#ifdef RGB_MATRIX_ENABLE
221 rgb_matrix_set_color_all(RGB_RED);
222 rgb_matrix_update_pwm_buffers();
223#endif // RGB_MATRIX_ENABLE
224}
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c
index 2c262521bc..b55d99b56b 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c
@@ -210,7 +210,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
210void rgb_matrix_update_pwm_buffers(void); 210void rgb_matrix_update_pwm_buffers(void);
211#endif 211#endif
212 212
213void shutdown_user(void) { 213bool shutdown_user(bool jump_to_bootloader) {
214#ifdef RGBLIGHT_ENABLE 214#ifdef RGBLIGHT_ENABLE
215 rgblight_enable_noeeprom(); 215 rgblight_enable_noeeprom();
216 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 216 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
@@ -220,4 +220,5 @@ void shutdown_user(void) {
220 rgb_matrix_set_color_all(RGB_RED); 220 rgb_matrix_set_color_all(RGB_RED);
221 rgb_matrix_update_pwm_buffers(); 221 rgb_matrix_update_pwm_buffers();
222#endif // RGB_MATRIX_ENABLE 222#endif // RGB_MATRIX_ENABLE
223 return true;
223} 224}
diff --git a/keyboards/bastardkb/dilemma/dilemma.c b/keyboards/bastardkb/dilemma/dilemma.c
index 5452f9e7f6..7c87fdcadd 100644
--- a/keyboards/bastardkb/dilemma/dilemma.c
+++ b/keyboards/bastardkb/dilemma/dilemma.c
@@ -343,3 +343,20 @@ void keyboard_pre_init_kb(void) {
343 343
344 keyboard_pre_init_user(); 344 keyboard_pre_init_user();
345} 345}
346
347bool shutdown_kb(bool jump_to_bootloader) {
348 if (!shutdown_user(jump_to_bootloader)) {
349 return false;
350 }
351#ifdef RGBLIGHT_ENABLE
352 rgblight_enable_noeeprom();
353 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
354 rgblight_setrgb(RGB_RED);
355#endif // RGBLIGHT_ENABLE
356#ifdef RGB_MATRIX_ENABLE
357 void rgb_matrix_update_pwm_buffers(void);
358 rgb_matrix_set_color_all(RGB_RED);
359 rgb_matrix_update_pwm_buffers();
360#endif // RGB_MATRIX_ENABLE
361 return true;
362}
diff --git a/keyboards/bemeier/bmek/bmek.c b/keyboards/bemeier/bmek/bmek.c
index eaae446d63..dd0372aaee 100755
--- a/keyboards/bemeier/bmek/bmek.c
+++ b/keyboards/bemeier/bmek/bmek.c
@@ -15,9 +15,12 @@
15 */ 15 */
16#include "quantum.h" 16#include "quantum.h"
17 17
18__attribute__((weak)) 18bool shutdown_kb(bool jump_to_bootloader) {
19void shutdown_user(void) { 19 if (!shutdown_user(jump_to_bootloader)) {
20 return false;
21 }
20#ifdef RGBLIGHT_ENABLE 22#ifdef RGBLIGHT_ENABLE
21 rgblight_setrgb(255, 0, 0); 23 rgblight_setrgb(255, 0, 0);
22#endif 24#endif
25 return true;
23} 26}
diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c
index dd452dae1a..4acb0ee59b 100644
--- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c
+++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c
@@ -147,11 +147,12 @@ void keyboard_post_init_user(void) {
147 do_rgb_layers(layer_state, LAYER_BASE, LAYER_BASE_END); 147 do_rgb_layers(layer_state, LAYER_BASE, LAYER_BASE_END);
148} 148}
149 149
150void shutdown_user(void) { 150bool shutdown_user(bool jump_to_bootloader) {
151 clear_rgb_layers(); 151 clear_rgb_layers();
152 rgblight_enable(); 152 rgblight_enable();
153 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 153 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
154 rgblight_sethsv_noeeprom(HSV_RED); 154 rgblight_sethsv_noeeprom(HSV_RED);
155 return false;
155} 156}
156 157
157void spidey_glow(void) { 158void spidey_glow(void) {
@@ -218,4 +219,3 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
218 break; 219 break;
219 } 220 }
220} 221}
221
diff --git a/keyboards/dumbpad/v0x/v0x.c b/keyboards/dumbpad/v0x/v0x.c
index 6c89edaa11..d7e3841d76 100644
--- a/keyboards/dumbpad/v0x/v0x.c
+++ b/keyboards/dumbpad/v0x/v0x.c
@@ -22,10 +22,14 @@ void keyboard_pre_init_kb(void) {
22 keyboard_pre_init_user(); 22 keyboard_pre_init_user();
23} 23}
24 24
25void shutdown_user(void) { 25bool shutdown_kb(bool jump_to_bootloader) {
26 if (!shutdown_user(jump_to_bootloader)) {
27 return false;
28 }
26 // Shutdown LEDs 29 // Shutdown LEDs
27 writePinLow(LED_00); 30 writePinLow(LED_00);
28 writePinLow(LED_01); 31 writePinLow(LED_01);
32 return true;
29} 33}
30 34
31layer_state_t layer_state_set_kb(layer_state_t state) { 35layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c
index 6c89edaa11..d7e3841d76 100644
--- a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c
+++ b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c
@@ -22,10 +22,14 @@ void keyboard_pre_init_kb(void) {
22 keyboard_pre_init_user(); 22 keyboard_pre_init_user();
23} 23}
24 24
25void shutdown_user(void) { 25bool shutdown_kb(bool jump_to_bootloader) {
26 if (!shutdown_user(jump_to_bootloader)) {
27 return false;
28 }
26 // Shutdown LEDs 29 // Shutdown LEDs
27 writePinLow(LED_00); 30 writePinLow(LED_00);
28 writePinLow(LED_01); 31 writePinLow(LED_01);
32 return true;
29} 33}
30 34
31layer_state_t layer_state_set_kb(layer_state_t state) { 35layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/dumbpad/v0x_right/v0x_right.c b/keyboards/dumbpad/v0x_right/v0x_right.c
index 6c89edaa11..d7e3841d76 100644
--- a/keyboards/dumbpad/v0x_right/v0x_right.c
+++ b/keyboards/dumbpad/v0x_right/v0x_right.c
@@ -22,10 +22,14 @@ void keyboard_pre_init_kb(void) {
22 keyboard_pre_init_user(); 22 keyboard_pre_init_user();
23} 23}
24 24
25void shutdown_user(void) { 25bool shutdown_kb(bool jump_to_bootloader) {
26 if (!shutdown_user(jump_to_bootloader)) {
27 return false;
28 }
26 // Shutdown LEDs 29 // Shutdown LEDs
27 writePinLow(LED_00); 30 writePinLow(LED_00);
28 writePinLow(LED_01); 31 writePinLow(LED_01);
32 return true;
29} 33}
30 34
31layer_state_t layer_state_set_kb(layer_state_t state) { 35layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/dumbpad/v1x/v1x.c b/keyboards/dumbpad/v1x/v1x.c
index f1b1d66c7f..1022ad0605 100644
--- a/keyboards/dumbpad/v1x/v1x.c
+++ b/keyboards/dumbpad/v1x/v1x.c
@@ -23,11 +23,15 @@ void keyboard_pre_init_kb(void) {
23 keyboard_pre_init_user(); 23 keyboard_pre_init_user();
24} 24}
25 25
26void shutdown_user(void) { 26bool shutdown_kb(bool jump_to_bootloader) {
27 if (!shutdown_user(jump_to_bootloader)) {
28 return false;
29 }
27 // Shutdown LEDs 30 // Shutdown LEDs
28 writePinLow(LED_00); 31 writePinLow(LED_00);
29 writePinLow(LED_01); 32 writePinLow(LED_01);
30 writePinLow(LED_02); 33 writePinLow(LED_02);
34 return true;
31} 35}
32 36
33layer_state_t layer_state_set_kb(layer_state_t state) { 37layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c
index f1b1d66c7f..1022ad0605 100644
--- a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c
+++ b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c
@@ -23,11 +23,15 @@ void keyboard_pre_init_kb(void) {
23 keyboard_pre_init_user(); 23 keyboard_pre_init_user();
24} 24}
25 25
26void shutdown_user(void) { 26bool shutdown_kb(bool jump_to_bootloader) {
27 if (!shutdown_user(jump_to_bootloader)) {
28 return false;
29 }
27 // Shutdown LEDs 30 // Shutdown LEDs
28 writePinLow(LED_00); 31 writePinLow(LED_00);
29 writePinLow(LED_01); 32 writePinLow(LED_01);
30 writePinLow(LED_02); 33 writePinLow(LED_02);
34 return true;
31} 35}
32 36
33layer_state_t layer_state_set_kb(layer_state_t state) { 37layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/dumbpad/v1x_right/v1x_right.c b/keyboards/dumbpad/v1x_right/v1x_right.c
index f1b1d66c7f..1022ad0605 100644
--- a/keyboards/dumbpad/v1x_right/v1x_right.c
+++ b/keyboards/dumbpad/v1x_right/v1x_right.c
@@ -23,11 +23,15 @@ void keyboard_pre_init_kb(void) {
23 keyboard_pre_init_user(); 23 keyboard_pre_init_user();
24} 24}
25 25
26void shutdown_user(void) { 26bool shutdown_kb(bool jump_to_bootloader) {
27 if (!shutdown_user(jump_to_bootloader)) {
28 return false;
29 }
27 // Shutdown LEDs 30 // Shutdown LEDs
28 writePinLow(LED_00); 31 writePinLow(LED_00);
29 writePinLow(LED_01); 32 writePinLow(LED_01);
30 writePinLow(LED_02); 33 writePinLow(LED_02);
34 return true;
31} 35}
32 36
33layer_state_t layer_state_set_kb(layer_state_t state) { 37layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/dumbpad/v3x/v3x.c b/keyboards/dumbpad/v3x/v3x.c
index d0acca1947..89f13684f2 100644
--- a/keyboards/dumbpad/v3x/v3x.c
+++ b/keyboards/dumbpad/v3x/v3x.c
@@ -54,11 +54,15 @@ void keyboard_pre_init_kb(void) {
54 keyboard_pre_init_user(); 54 keyboard_pre_init_user();
55} 55}
56 56
57void shutdown_user(void) { 57bool shutdown_kb(bool jump_to_bootloader) {
58 if (!shutdown_user(jump_to_bootloader)) {
59 return false;
60 }
58 // Shutdown LEDs 61 // Shutdown LEDs
59 writePinLow(LED_00); 62 writePinLow(LED_00);
60 writePinLow(LED_01); 63 writePinLow(LED_01);
61 writePinLow(LED_02); 64 writePinLow(LED_02);
65 return true;
62} 66}
63 67
64layer_state_t layer_state_set_kb(layer_state_t state) { 68layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/eco/keymaps/that_canadian/keymap.c b/keyboards/eco/keymaps/that_canadian/keymap.c
index 0c8b53385d..edd88b184e 100644
--- a/keyboards/eco/keymaps/that_canadian/keymap.c
+++ b/keyboards/eco/keymaps/that_canadian/keymap.c
@@ -124,14 +124,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
124}; 124};
125 125
126#ifdef AUDIO_ENABLE 126#ifdef AUDIO_ENABLE
127
128float tone_startup[][2] = SONG(STARTUP_SOUND);
129float tone_qwerty[][2] = SONG(QWERTY_SOUND); 127float tone_qwerty[][2] = SONG(QWERTY_SOUND);
130float tone_dvorak[][2] = SONG(DVORAK_SOUND); 128float tone_dvorak[][2] = SONG(DVORAK_SOUND);
131float tone_colemak[][2] = SONG(COLEMAK_SOUND); 129float tone_colemak[][2] = SONG(COLEMAK_SOUND);
132float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
133
134float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
135#endif 130#endif
136 131
137 132
@@ -174,36 +169,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
174 } 169 }
175 return true; 170 return true;
176} 171}
177
178void matrix_init_user(void) {
179 #ifdef AUDIO_ENABLE
180 startup_user();
181 #endif
182}
183
184#ifdef AUDIO_ENABLE
185
186void startup_user(void)
187{
188 _delay_ms(20); // gets rid of tick
189 PLAY_SONG(tone_startup);
190}
191
192void shutdown_user(void)
193{
194 PLAY_SONG(tone_goodbye);
195 _delay_ms(150);
196 stop_all_notes();
197}
198
199void music_on_user(void)
200{
201 music_scale_user();
202}
203
204void music_scale_user(void)
205{
206 PLAY_SONG(music_scale);
207}
208
209#endif
diff --git a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
index f352b1c851..9cc621df2f 100644
--- a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
+++ b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
@@ -316,36 +316,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
316 } 316 }
317 return true; 317 return true;
318} 318}
319
320void matrix_init_user(void) {
321#ifdef AUDIO_ENABLE
322 startup_user();
323#endif
324}
325
326#ifdef AUDIO_ENABLE
327
328void startup_user(void)
329{
330 _delay_ms(20); // gets rid of tick
331 PLAY_SONG(tone_startup);
332}
333
334void shutdown_user(void)
335{cc
336 PLAY_SONG(tone_goodbye);
337 _delay_ms(150);
338 stop_all_notes();
339}
340
341void music_on_user(void)
342{
343 music_scale_user();
344}
345
346void music_scale_user(void)
347{
348 PLAY_SONG(music_scale);
349}
350
351#endif
diff --git a/keyboards/handwired/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c
index cbcc5fc6f8..c9de095cf8 100644
--- a/keyboards/handwired/atreus50/keymaps/default/keymap.c
+++ b/keyboards/handwired/atreus50/keymaps/default/keymap.c
@@ -94,20 +94,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
94}; 94};
95 95
96#ifdef AUDIO_ENABLE 96#ifdef AUDIO_ENABLE
97float tone_startup[][2] = { 97// float tone_startup[][2] = {
98 {NOTE_B5, 20}, 98// {NOTE_B5, 20},
99 {NOTE_B6, 8}, 99// {NOTE_B6, 8},
100 {NOTE_DS6, 20}, 100// {NOTE_DS6, 20},
101 {NOTE_B6, 8} 101// {NOTE_B6, 8}
102}; 102// };
103 103
104float tone_qwerty[][2] = SONG(QWERTY_SOUND); 104float tone_qwerty[][2] = SONG(QWERTY_SOUND);
105float tone_dvorak[][2] = SONG(DVORAK_SOUND); 105float tone_dvorak[][2] = SONG(DVORAK_SOUND);
106float tone_colemak[][2] = SONG(COLEMAK_SOUND); 106float tone_colemak[][2] = SONG(COLEMAK_SOUND);
107 107
108float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
109
110float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
111#endif 108#endif
112 109
113void persistent_default_layer_set(uint16_t default_layer) { 110void persistent_default_layer_set(uint16_t default_layer) {
@@ -178,36 +175,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
178 } 175 }
179 return true; 176 return true;
180}; 177};
181
182void matrix_init_user(void) {
183 #ifdef AUDIO_ENABLE
184 startup_user();
185 #endif
186}
187
188#ifdef AUDIO_ENABLE
189
190void startup_user(void)
191{
192 _delay_ms(20); // gets rid of tick
193 PLAY_SONG(tone_startup);
194}
195
196void shutdown_user(void)
197{
198 PLAY_SONG(tone_goodbye);
199 _delay_ms(150);
200 stop_all_notes();
201}
202
203void music_on_user(void)
204{
205 music_scale_user();
206}
207
208void music_scale_user(void)
209{
210 PLAY_SONG(music_scale);
211}
212
213#endif
diff --git a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
index ef975a215d..d725397199 100644
--- a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
+++ b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
@@ -163,20 +163,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
163}; 163};
164 164
165#ifdef AUDIO_ENABLE 165#ifdef AUDIO_ENABLE
166float tone_startup[][2] = { 166// float tone_startup[][2] = {
167 {NOTE_B5, 20}, 167// {NOTE_B5, 20},
168 {NOTE_B6, 8}, 168// {NOTE_B6, 8},
169 {NOTE_DS6, 20}, 169// {NOTE_DS6, 20},
170 {NOTE_B6, 8} 170// {NOTE_B6, 8}
171}; 171// };
172 172
173float tone_qwerty[][2] = SONG(QWERTY_SOUND); 173float tone_qwerty[][2] = SONG(QWERTY_SOUND);
174float tone_dvorak[][2] = SONG(DVORAK_SOUND); 174float tone_dvorak[][2] = SONG(DVORAK_SOUND);
175float tone_colemak[][2] = SONG(COLEMAK_SOUND); 175float tone_colemak[][2] = SONG(COLEMAK_SOUND);
176
177float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
178
179float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
180#endif 176#endif
181 177
182void persistent_default_layer_set(uint16_t default_layer) { 178void persistent_default_layer_set(uint16_t default_layer) {
@@ -247,36 +243,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
247 } 243 }
248 return true; 244 return true;
249}; 245};
250
251void matrix_init_user(void) {
252 #ifdef AUDIO_ENABLE
253 startup_user();
254 #endif
255}
256
257#ifdef AUDIO_ENABLE
258
259void startup_user(void)
260{
261 _delay_ms(20); // gets rid of tick
262 PLAY_SONG(tone_startup);
263}
264
265void shutdown_user(void)
266{
267 PLAY_SONG(tone_goodbye);
268 _delay_ms(150);
269 stop_all_notes();
270}
271
272void music_on_user(void)
273{
274 music_scale_user();
275}
276
277void music_scale_user(void)
278{
279 PLAY_SONG(music_scale);
280}
281
282#endif
diff --git a/keyboards/helix/pico/keymaps/default/keymap.c b/keyboards/helix/pico/keymaps/default/keymap.c
index 101a54bda6..3ee620360d 100644
--- a/keyboards/helix/pico/keymaps/default/keymap.c
+++ b/keyboards/helix/pico/keymaps/default/keymap.c
@@ -173,7 +173,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
173float tone_colemak[][2] = SONG(COLEMAK_SOUND); 173float tone_colemak[][2] = SONG(COLEMAK_SOUND);
174float tone_plover[][2] = SONG(PLOVER_SOUND); 174float tone_plover[][2] = SONG(PLOVER_SOUND);
175float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 175float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
176float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
177#endif 176#endif
178 177
179// define variables for reactive RGB 178// define variables for reactive RGB
@@ -329,36 +328,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
329} 328}
330 329
331void matrix_init_user(void) { 330void matrix_init_user(void) {
332 #ifdef AUDIO_ENABLE
333 startup_user();
334 #endif
335 #ifdef RGBLIGHT_ENABLE 331 #ifdef RGBLIGHT_ENABLE
336 RGB_current_mode = rgblight_config.mode; 332 RGB_current_mode = rgblight_config.mode;
337 #endif 333 #endif
338} 334}
339
340
341#ifdef AUDIO_ENABLE
342
343void startup_user(void)
344{
345 _delay_ms(50); // gets rid of tick
346}
347
348void shutdown_user(void)
349{
350 _delay_ms(150);
351 stop_all_notes();
352}
353
354void music_on_user(void)
355{
356 music_scale_user();
357}
358
359void music_scale_user(void)
360{
361 PLAY_SONG(music_scale);
362}
363
364#endif
diff --git a/keyboards/helix/pico/keymaps/mtei/keymap.c b/keyboards/helix/pico/keymaps/mtei/keymap.c
index 6a5f7d295a..9bf479df6f 100644
--- a/keyboards/helix/pico/keymaps/mtei/keymap.c
+++ b/keyboards/helix/pico/keymaps/mtei/keymap.c
@@ -237,7 +237,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
237float tone_colemak[][2] = SONG(COLEMAK_SOUND); 237float tone_colemak[][2] = SONG(COLEMAK_SOUND);
238float tone_plover[][2] = SONG(PLOVER_SOUND); 238float tone_plover[][2] = SONG(PLOVER_SOUND);
239float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 239float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
240float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
241#endif 240#endif
242 241
243static int current_default_layer; 242static int current_default_layer;
@@ -334,35 +333,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
334 } 333 }
335 return true; 334 return true;
336} 335}
337
338void matrix_init_user(void) {
339 #ifdef AUDIO_ENABLE
340 startup_user();
341 #endif
342}
343
344
345#ifdef AUDIO_ENABLE
346
347void startup_user(void)
348{
349 _delay_ms(50); // gets rid of tick
350}
351
352void shutdown_user(void)
353{
354 _delay_ms(150);
355 stop_all_notes();
356}
357
358void music_on_user(void)
359{
360 music_scale_user();
361}
362
363void music_scale_user(void)
364{
365 PLAY_SONG(music_scale);
366}
367
368#endif
diff --git a/keyboards/helix/rev2/keymaps/default/keymap.c b/keyboards/helix/rev2/keymaps/default/keymap.c
index b777d35d45..f23ff07b4f 100644
--- a/keyboards/helix/rev2/keymaps/default/keymap.c
+++ b/keyboards/helix/rev2/keymaps/default/keymap.c
@@ -185,7 +185,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
185float tone_colemak[][2] = SONG(COLEMAK_SOUND); 185float tone_colemak[][2] = SONG(COLEMAK_SOUND);
186float tone_plover[][2] = SONG(PLOVER_SOUND); 186float tone_plover[][2] = SONG(PLOVER_SOUND);
187float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 187float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
188float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
189#endif 188#endif
190 189
191// define variables for reactive RGB 190// define variables for reactive RGB
@@ -341,36 +340,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
341} 340}
342 341
343void matrix_init_user(void) { 342void matrix_init_user(void) {
344 #ifdef AUDIO_ENABLE
345 startup_user();
346 #endif
347 #ifdef RGBLIGHT_ENABLE 343 #ifdef RGBLIGHT_ENABLE
348 RGB_current_mode = rgblight_get_mode(); 344 RGB_current_mode = rgblight_get_mode();
349 #endif 345 #endif
350} 346}
351
352
353#ifdef AUDIO_ENABLE
354
355void startup_user(void)
356{
357 _delay_ms(20); // gets rid of tick
358}
359
360void shutdown_user(void)
361{
362 _delay_ms(150);
363 stop_all_notes();
364}
365
366void music_on_user(void)
367{
368 music_scale_user();
369}
370
371void music_scale_user(void)
372{
373 PLAY_SONG(music_scale);
374}
375
376#endif
diff --git a/keyboards/helix/rev2/keymaps/froggy/keymap.c b/keyboards/helix/rev2/keymaps/froggy/keymap.c
index dc047d3118..1680147157 100644
--- a/keyboards/helix/rev2/keymaps/froggy/keymap.c
+++ b/keyboards/helix/rev2/keymaps/froggy/keymap.c
@@ -181,7 +181,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
181float tone_colemak[][2] = SONG(COLEMAK_SOUND); 181float tone_colemak[][2] = SONG(COLEMAK_SOUND);
182float tone_plover[][2] = SONG(PLOVER_SOUND); 182float tone_plover[][2] = SONG(PLOVER_SOUND);
183float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 183float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
184float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
185#endif 184#endif
186 185
187// define variables for reactive RGB 186// define variables for reactive RGB
@@ -440,41 +439,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
440 439
441//keyboard start-up code. Runs once when the firmware starts up. 440//keyboard start-up code. Runs once when the firmware starts up.
442void matrix_init_user(void) { 441void matrix_init_user(void) {
443 #ifdef AUDIO_ENABLE
444 startup_user();
445 #endif
446 #ifdef RGBLIGHT_ENABLE 442 #ifdef RGBLIGHT_ENABLE
447 RGB_current_mode = rgblight_get_mode(); 443 RGB_current_mode = rgblight_get_mode();
448 #endif 444 #endif
449} 445}
450 446
451 447
452#ifdef AUDIO_ENABLE
453
454void startup_user(void)
455{
456 _delay_ms(20); // gets rid of tick
457}
458
459void shutdown_user(void)
460{
461 _delay_ms(150);
462 stop_all_notes();
463}
464
465void music_on_user(void)
466{
467 music_scale_user();
468}
469
470void music_scale_user(void)
471{
472 PLAY_SONG(music_scale);
473}
474
475#endif
476
477
478//assign the right code to your layers for OLED display 448//assign the right code to your layers for OLED display
479#define L_BASE 0 449#define L_BASE 0
480#define L_OPT 2 450#define L_OPT 2
diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
index 20fa181d77..6c060aadec 100644
--- a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
+++ b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
@@ -171,7 +171,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
171float tone_colemak[][2] = SONG(COLEMAK_SOUND); 171float tone_colemak[][2] = SONG(COLEMAK_SOUND);
172float tone_plover[][2] = SONG(PLOVER_SOUND); 172float tone_plover[][2] = SONG(PLOVER_SOUND);
173float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 173float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
174float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
175#endif 174#endif
176 175
177// define variables for reactive RGB 176// define variables for reactive RGB
@@ -322,40 +321,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
322} 321}
323 322
324void matrix_init_user(void) { 323void matrix_init_user(void) {
325 #ifdef AUDIO_ENABLE
326 startup_user();
327 #endif
328 #ifdef RGBLIGHT_ENABLE 324 #ifdef RGBLIGHT_ENABLE
329 RGB_current_mode = rgblight_get_mode(); 325 RGB_current_mode = rgblight_get_mode();
330 #endif 326 #endif
331} 327}
332 328
333
334#ifdef AUDIO_ENABLE
335
336void startup_user(void)
337{
338 _delay_ms(20); // gets rid of tick
339}
340
341void shutdown_user(void)
342{
343 _delay_ms(150);
344 stop_all_notes();
345}
346
347void music_on_user(void)
348{
349 music_scale_user();
350}
351
352void music_scale_user(void)
353{
354 PLAY_SONG(music_scale);
355}
356
357#endif
358
359#ifdef OLED_ENABLE 329#ifdef OLED_ENABLE
360oled_rotation_t oled_init_user(oled_rotation_t rotation) { 330oled_rotation_t oled_init_user(oled_rotation_t rotation) {
361 if (is_keyboard_master()) { 331 if (is_keyboard_master()) {
diff --git a/keyboards/matrix/abelx/abelx.c b/keyboards/matrix/abelx/abelx.c
index ea3e57aeaf..a05934238a 100644
--- a/keyboards/matrix/abelx/abelx.c
+++ b/keyboards/matrix/abelx/abelx.c
@@ -92,13 +92,8 @@ bool led_update_kb(led_t led_state) {
92} 92}
93 93
94#define REBOOT_MAGIC 0x41544B42 94#define REBOOT_MAGIC 0x41544B42
95void shutdown_user(void)
96{
97 // set the magic number for resetting to the bootloader
98 *(uint32_t *)(&(RTCD1.rtc->BKP0R)) = REBOOT_MAGIC;
99}
100 95
101void bootloader_jump(void) { 96void bootloader_jump(void) {
102 shutdown_user(); 97 *(uint32_t *)(&(RTCD1.rtc->BKP0R)) = REBOOT_MAGIC;
103 NVIC_SystemReset(); 98 NVIC_SystemReset();
104} 99}
diff --git a/keyboards/matrix/m20add/m20add.c b/keyboards/matrix/m20add/m20add.c
index cdcafb9779..ac483e8aab 100644
--- a/keyboards/matrix/m20add/m20add.c
+++ b/keyboards/matrix/m20add/m20add.c
@@ -54,13 +54,9 @@ bool led_update_kb(led_t led_state) {
54} 54}
55 55
56#define REBOOT_MAGIC 0x41544B42 56#define REBOOT_MAGIC 0x41544B42
57void shutdown_user(void)
58{
59 // set the magic number for resetting to the bootloader
60 *(uint32_t *)(&(RTCD1.rtc->BKP0R)) = REBOOT_MAGIC;
61}
62 57
63void bootloader_jump(void) { 58void bootloader_jump(void) {
64 shutdown_user(); 59 // set the magic number for resetting to the bootloader
60 *(uint32_t *)(&(RTCD1.rtc->BKP0R)) = REBOOT_MAGIC;
65 NVIC_SystemReset(); 61 NVIC_SystemReset();
66} 62}
diff --git a/keyboards/neopad/rev1/rev1.c b/keyboards/neopad/rev1/rev1.c
index 86e47c8932..c8216f4e70 100755
--- a/keyboards/neopad/rev1/rev1.c
+++ b/keyboards/neopad/rev1/rev1.c
@@ -22,10 +22,14 @@ void keyboard_pre_init_kb(void) {
22 keyboard_pre_init_user(); 22 keyboard_pre_init_user();
23} 23}
24 24
25void shutdown_user(void) { 25bool shutdown_kb(bool jump_to_bootloader) {
26 if (!shutdown_user(jump_to_bootloader)) {
27 return false;
28 }
26 // Shutdown LEDs 29 // Shutdown LEDs
27 writePinLow(LED_00); 30 writePinLow(LED_00);
28 writePinLow(LED_01); 31 writePinLow(LED_01);
32 return true;
29} 33}
30 34
31layer_state_t layer_state_set_kb(layer_state_t state) { 35layer_state_t layer_state_set_kb(layer_state_t state) {
diff --git a/keyboards/omkbd/ergodash/rev1/rev1.c b/keyboards/omkbd/ergodash/rev1/rev1.c
deleted file mode 100644
index 35a313f6fd..0000000000
--- a/keyboards/omkbd/ergodash/rev1/rev1.c
+++ /dev/null
@@ -1,32 +0,0 @@
1#include "quantum.h"
2
3#ifdef AUDIO_ENABLE
4 float tone_startup[][2] = SONG(STARTUP_SOUND);
5 float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
6#endif
7
8void matrix_init_kb(void) {
9
10 #ifdef AUDIO_ENABLE
11 _delay_ms(20); // gets rid of tick
12 PLAY_SONG(tone_startup);
13 #endif
14
15 // // green led on
16 // DDRD |= (1<<5);
17 // PORTD &= ~(1<<5);
18
19 // // orange led on
20 // DDRB |= (1<<0);
21 // PORTB &= ~(1<<0);
22
23 matrix_init_user();
24};
25
26void shutdown_user(void) {
27 #ifdef AUDIO_ENABLE
28 PLAY_SONG(tone_goodbye);
29 _delay_ms(150);
30 stop_all_notes();
31 #endif
32}
diff --git a/keyboards/planck/keymaps/altgr/common/init.h b/keyboards/planck/keymaps/altgr/common/init.h
index 6d0b4392fb..e6bb7101e9 100644
--- a/keyboards/planck/keymaps/altgr/common/init.h
+++ b/keyboards/planck/keymaps/altgr/common/init.h
@@ -6,9 +6,6 @@ void matrix_init_user(void)
6#ifdef STENO_ENABLE 6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI 7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif 8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12} 9}
13 10
14#ifdef AUDIO_ENABLE 11#ifdef AUDIO_ENABLE
@@ -31,27 +28,4 @@ bool led_update_user(led_t led_state)
31 return false; 28 return false;
32} 29}
33#endif 30#endif
34
35void startup_user(void)
36{
37 _delay_ms(20); // gets rid of tick
38 PLAY_SONG(song_startup);
39}
40
41void shutdown_user(void)
42{
43 PLAY_SONG(song_goodbye);
44 _delay_ms(150);
45 stop_all_notes();
46}
47
48void music_on_user(void)
49{
50 music_scale_user();
51}
52
53void music_scale_user(void)
54{
55 PLAY_SONG(music_scale);
56}
57#endif 31#endif
diff --git a/keyboards/planck/keymaps/circuit/keymap.c b/keyboards/planck/keymaps/circuit/keymap.c
index d150905dc8..b7d2b121b9 100644
--- a/keyboards/planck/keymaps/circuit/keymap.c
+++ b/keyboards/planck/keymaps/circuit/keymap.c
@@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
131 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , 131 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL ,
132 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 132 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
133 KC_CAPS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, KC_ENT , 133 KC_CAPS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, KC_ENT ,
134 _______, _______, _______, KC_MUTE, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END 134 _______, _______, _______, KC_MUTE, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END
135), 135),
136 136
137/* FUNCTIONS 137/* FUNCTIONS
@@ -155,11 +155,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
155}; 155};
156 156
157#ifdef AUDIO_ENABLE 157#ifdef AUDIO_ENABLE
158float tone_startup[][2] = SONG(STARTUP_SOUND);
159float tone_qwerty[][2] = SONG(QWERTY_SOUND); 158float tone_qwerty[][2] = SONG(QWERTY_SOUND);
160float tone_dvorak[][2] = SONG(DVORAK_SOUND); 159float tone_dvorak[][2] = SONG(DVORAK_SOUND);
161float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
162float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
163#endif 160#endif
164 161
165 162
@@ -210,36 +207,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
210 } 207 }
211 return true; 208 return true;
212} 209}
213
214void matrix_init_user(void) {
215#ifdef AUDIO_ENABLE
216 startup_user();
217#endif
218}
219
220#ifdef AUDIO_ENABLE
221
222void startup_user(void)
223{
224 _delay_ms(20); // gets rid of tick
225 PLAY_SONG(tone_startup);
226}
227
228void shutdown_user(void)
229{
230 PLAY_SONG(tone_goodbye);
231 _delay_ms(150);
232 stop_all_notes();
233}
234
235void music_on_user(void)
236{
237 music_scale_user();
238}
239
240void music_scale_user(void)
241{
242 PLAY_SONG(music_scale);
243}
244
245#endif
diff --git a/keyboards/planck/keymaps/dbroqua/keymap.c b/keyboards/planck/keymaps/dbroqua/keymap.c
index 95d0b85408..f7d1575dad 100644
--- a/keyboards/planck/keymaps/dbroqua/keymap.c
+++ b/keyboards/planck/keymaps/dbroqua/keymap.c
@@ -120,16 +120,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
120}; 120};
121 121
122#ifdef AUDIO_ENABLE 122#ifdef AUDIO_ENABLE
123
124float tone_startup[][2] = SONG(STARTUP_SOUND);
125float tone_qwerty[][2] = SONG(QWERTY_SOUND); 123float tone_qwerty[][2] = SONG(QWERTY_SOUND);
126float tone_dvorak[][2] = SONG(DVORAK_SOUND); 124float tone_dvorak[][2] = SONG(DVORAK_SOUND);
127float tone_colemak[][2] = SONG(COLEMAK_SOUND); 125float tone_colemak[][2] = SONG(COLEMAK_SOUND);
128float tone_plover[][2] = SONG(PLOVER_SOUND); 126float tone_plover[][2] = SONG(PLOVER_SOUND);
129float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 127float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
130float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
131
132float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
133#endif 128#endif
134 129
135 130
@@ -183,36 +178,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
183 } 178 }
184 return true; 179 return true;
185} 180}
186
187void matrix_init_user(void) {
188 #ifdef AUDIO_ENABLE
189 startup_user();
190 #endif
191}
192
193#ifdef AUDIO_ENABLE
194
195void startup_user(void)
196{
197 _delay_ms(20); // gets rid of tick
198 PLAY_SONG(tone_startup);
199}
200
201void shutdown_user(void)
202{
203 PLAY_SONG(tone_goodbye);
204 _delay_ms(150);
205 stop_all_notes();
206}
207
208void music_on_user(void)
209{
210 music_scale_user();
211}
212
213void music_scale_user(void)
214{
215 PLAY_SONG(music_scale);
216}
217
218#endif
diff --git a/keyboards/planck/keymaps/dr_notsokind/keymap.c b/keyboards/planck/keymaps/dr_notsokind/keymap.c
index ffceef11cc..f4fb3e0074 100644
--- a/keyboards/planck/keymaps/dr_notsokind/keymap.c
+++ b/keyboards/planck/keymaps/dr_notsokind/keymap.c
@@ -127,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
127 KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, 127 KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
128 KC_DEL , KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, 128 KC_DEL , KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
129 KC_LSFT, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______, KC_NUHS, KC_NUBS, XXXXXXX, KC_PGUP, KC_ENT, 129 KC_LSFT, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______, KC_NUHS, KC_NUBS, XXXXXXX, KC_PGUP, KC_ENT,
130 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END 130 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
131), 131),
132 132
133/* LOWER 133/* LOWER
@@ -145,7 +145,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
145 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , 145 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL ,
146 KC_DEL , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, 146 KC_DEL , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
147 KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, S(KC_NUHS), S(KC_NUBS), XXXXXXX, KC_PGUP, KC_ENT , 147 KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, S(KC_NUHS), S(KC_NUBS), XXXXXXX, KC_PGUP, KC_ENT ,
148 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END 148 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
149), 149),
150 150
151/* MEDIA AND COMMANDS 151/* MEDIA AND COMMANDS
@@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
163 XXXXXXX, XXXXXXX, KC_WHOM, XXXXXXX, XXXXXXX, XXXXXXX, KC_AGAIN, XXXXXXX, KC_INS, XXXXXXX, KC_PSCR, XXXXXXX, 163 XXXXXXX, XXXXXXX, KC_WHOM, XXXXXXX, XXXXXXX, XXXXXXX, KC_AGAIN, XXXXXXX, KC_INS, XXXXXXX, KC_PSCR, XXXXXXX,
164 XXXXXXX, XXXXXXX, KC_WSCH, XXXXXXX, KC_FIND, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_PLY1, DM_PLY2, 164 XXXXXXX, XXXXXXX, KC_WSCH, XXXXXXX, KC_FIND, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_PLY1, DM_PLY2,
165 KC_LSFT, XXXXXXX, XXXXXXX, KC_CALC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ZOOM_OUT, ZOOM_IN, KC_MPRV, DM_RSTP, 165 KC_LSFT, XXXXXXX, XXXXXXX, KC_CALC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ZOOM_OUT, ZOOM_IN, KC_MPRV, DM_RSTP,
166 ONESHOT, XXXXXXX, XXXXXXX, _______, KC_VOLD, KC_MUTE, KC_MUTE, KC_VOLU, ZOOM_NML, KC_MSTP, KC_MNXT, KC_MPLY 166 ONESHOT, XXXXXXX, XXXXXXX, _______, KC_VOLD, KC_MUTE, KC_MUTE, KC_VOLU, ZOOM_NML, KC_MSTP, KC_MNXT, KC_MPLY
167), 167),
168 168
169/* ONESHOT 169/* ONESHOT
@@ -205,14 +205,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
205}; 205};
206 206
207#ifdef AUDIO_ENABLE 207#ifdef AUDIO_ENABLE
208float tone_startup[][2] = SONG(STARTUP_SOUND);
209float tone_qwerty[][2] = SONG(QWERTY_SOUND); 208float tone_qwerty[][2] = SONG(QWERTY_SOUND);
210float tone_numpad[][2] = SONG(NUM_LOCK_ON_SOUND); 209float tone_numpad[][2] = SONG(NUM_LOCK_ON_SOUND);
211float tone_oneshot[][2] = SONG(TERMINAL_SOUND); 210float tone_oneshot[][2] = SONG(TERMINAL_SOUND);
212float tone_dyn_macro_rec[][2] = SONG(SONIC_RING); 211float tone_dyn_macro_rec[][2] = SONG(SONIC_RING);
213float tone_dyn_macro_stop[][2] = SONG(COIN_SOUND); 212float tone_dyn_macro_stop[][2] = SONG(COIN_SOUND);
214float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
215float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
216#endif 213#endif
217 214
218void press_key(uint16_t key) { 215void press_key(uint16_t key) {
@@ -303,36 +300,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
303 } 300 }
304 return true; 301 return true;
305} 302}
306
307void matrix_init_user(void) {
308#ifdef AUDIO_ENABLE
309 startup_user();
310#endif
311}
312
313#ifdef AUDIO_ENABLE
314
315void startup_user(void)
316{
317 _delay_ms(20); // gets rid of tick
318 PLAY_SONG(tone_startup);
319}
320
321void shutdown_user(void)
322{
323 PLAY_SONG(tone_goodbye);
324 _delay_ms(150);
325 stop_all_notes();
326}
327
328void music_on_user(void)
329{
330 music_scale_user();
331}
332
333void music_scale_user(void)
334{
335 PLAY_SONG(music_scale);
336}
337
338#endif
diff --git a/keyboards/planck/keymaps/emilyh/keymap.c b/keyboards/planck/keymaps/emilyh/keymap.c
index 17bbc98b7e..b226c1f6e7 100644
--- a/keyboards/planck/keymaps/emilyh/keymap.c
+++ b/keyboards/planck/keymaps/emilyh/keymap.c
@@ -164,16 +164,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
164}; 164};
165 165
166#ifdef AUDIO_ENABLE 166#ifdef AUDIO_ENABLE
167
168float tone_startup[][2] = SONG(STARTUP_SOUND);
169float tone_qwerty[][2] = SONG(QWERTY_SOUND); 167float tone_qwerty[][2] = SONG(QWERTY_SOUND);
170float tone_dvorak[][2] = SONG(DVORAK_SOUND); 168float tone_dvorak[][2] = SONG(DVORAK_SOUND);
171float tone_colemak[][2] = SONG(COLEMAK_SOUND); 169float tone_colemak[][2] = SONG(COLEMAK_SOUND);
172float tone_plover[][2] = SONG(PLOVER_SOUND); 170float tone_plover[][2] = SONG(PLOVER_SOUND);
173float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 171float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
174float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
175
176float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
177#endif 172#endif
178 173
179 174
@@ -273,36 +268,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
273 } 268 }
274 return true; 269 return true;
275} 270}
276
277void matrix_init_user(void) {
278 #ifdef AUDIO_ENABLE
279 startup_user();
280 #endif
281}
282
283#ifdef AUDIO_ENABLE
284
285void startup_user(void)
286{
287 _delay_ms(20); // gets rid of tick
288 PLAY_SONG(tone_startup);
289}
290
291void shutdown_user(void)
292{
293 PLAY_SONG(tone_goodbye);
294 _delay_ms(150);
295 stop_all_notes();
296}
297
298void music_on_user(void)
299{
300 music_scale_user();
301}
302
303void music_scale_user(void)
304{
305 PLAY_SONG(music_scale);
306}
307
308#endif
diff --git a/keyboards/planck/keymaps/experimental/keymap.c b/keyboards/planck/keymaps/experimental/keymap.c
index 6d6752952b..deaf5afb4d 100644
--- a/keyboards/planck/keymaps/experimental/keymap.c
+++ b/keyboards/planck/keymaps/experimental/keymap.c
@@ -176,16 +176,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
176}; 176};
177 177
178#ifdef AUDIO_ENABLE 178#ifdef AUDIO_ENABLE
179
180float tone_startup[][2] = SONG(STARTUP_SOUND);
181float tone_qwerty[][2] = SONG(QWERTY_SOUND); 179float tone_qwerty[][2] = SONG(QWERTY_SOUND);
182float tone_dvorak[][2] = SONG(DVORAK_SOUND); 180float tone_dvorak[][2] = SONG(DVORAK_SOUND);
183float tone_colemak[][2] = SONG(COLEMAK_SOUND); 181float tone_colemak[][2] = SONG(COLEMAK_SOUND);
184float tone_plover[][2] = SONG(PLOVER_SOUND); 182float tone_plover[][2] = SONG(PLOVER_SOUND);
185float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 183float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
186float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
187
188float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
189#endif 184#endif
190 185
191 186
@@ -339,38 +334,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
339 return true; 334 return true;
340}; 335};
341 336
342void matrix_init_user(void) {
343 #ifdef AUDIO_ENABLE
344 startup_user();
345 #endif
346}
347
348#ifdef AUDIO_ENABLE
349void startup_user(void)
350{
351 _delay_ms(20); // gets rid of tick
352 PLAY_SONG(tone_startup);
353}
354
355void shutdown_user(void)
356{
357 PLAY_SONG(tone_goodbye);
358 _delay_ms(150);
359 stop_all_notes();
360}
361
362void music_on_user(void)
363{
364 music_scale_user();
365}
366
367void music_scale_user(void)
368{
369 PLAY_SONG(music_scale);
370}
371
372#endif
373
374void leader_end_user(void) { 337void leader_end_user(void) {
375 if (leader_sequence_one_key(KC_R)) { 338 if (leader_sequence_one_key(KC_R)) {
376 tap_random_base64(); 339 tap_random_base64();
diff --git a/keyboards/planck/keymaps/gunp/keymap.c b/keyboards/planck/keymaps/gunp/keymap.c
index 7c2f6c0bd5..9fa05d593a 100644
--- a/keyboards/planck/keymaps/gunp/keymap.c
+++ b/keyboards/planck/keymaps/gunp/keymap.c
@@ -282,26 +282,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
282 return false; 282 return false;
283 } 283 }
284#endif 284#endif
285
286#ifdef AUDIO_ENABLE
287 float tone_startup[][2] = SONG(STARTUP_SOUND);
288 float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
289
290 float tone_ly_normal[][2] = SONG(QWERTY_SOUND);
291 float tone_ly_spacial[][2] = SONG(DVORAK_SOUND);
292
293 float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
294#endif
295
296void startup_user(void) {
297#ifdef AUDIO_ENABLE
298 PLAY_SONG(tone_startup);
299#endif
300}
301
302void shutdown_user(void) {
303#ifdef AUDIO_ENABLE
304 PLAY_SONG(tone_goodbye);
305 stop_all_notes();
306#endif
307}
diff --git a/keyboards/planck/keymaps/handwired_binaryplease/keymap.c b/keyboards/planck/keymaps/handwired_binaryplease/keymap.c
index 13917e516d..93e6f9b78e 100644
--- a/keyboards/planck/keymaps/handwired_binaryplease/keymap.c
+++ b/keyboards/planck/keymaps/handwired_binaryplease/keymap.c
@@ -163,15 +163,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
163 163
164#ifdef AUDIO_ENABLE 164#ifdef AUDIO_ENABLE
165 165
166float tone_startup[][2] = SONG(STARTUP_SOUND);
167float tone_qwerty[][2] = SONG(QWERTY_SOUND); 166float tone_qwerty[][2] = SONG(QWERTY_SOUND);
168float tone_dvorak[][2] = SONG(DVORAK_SOUND); 167float tone_dvorak[][2] = SONG(DVORAK_SOUND);
169float tone_colemak[][2] = SONG(COLEMAK_SOUND); 168float tone_colemak[][2] = SONG(COLEMAK_SOUND);
170float tone_plover[][2] = SONG(PLOVER_SOUND); 169float tone_plover[][2] = SONG(PLOVER_SOUND);
171float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 170float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
172float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
173
174float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
175#endif 171#endif
176 172
177 173
@@ -271,36 +267,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
271 } 267 }
272 return true; 268 return true;
273} 269}
274
275void matrix_init_user(void) {
276 #ifdef AUDIO_ENABLE
277 startup_user();
278 #endif
279}
280
281#ifdef AUDIO_ENABLE
282
283void startup_user(void)
284{
285 _delay_ms(20); // gets rid of tick
286 PLAY_SONG(tone_startup);
287}
288
289void shutdown_user(void)
290{
291 PLAY_SONG(tone_goodbye);
292 _delay_ms(150);
293 stop_all_notes();
294}
295
296void music_on_user(void)
297{
298 music_scale_user();
299}
300
301void music_scale_user(void)
302{
303 PLAY_SONG(music_scale);
304}
305
306#endif
diff --git a/keyboards/planck/keymaps/hiea/common/init.h b/keyboards/planck/keymaps/hiea/common/init.h
index 6d0b4392fb..e6bb7101e9 100644
--- a/keyboards/planck/keymaps/hiea/common/init.h
+++ b/keyboards/planck/keymaps/hiea/common/init.h
@@ -6,9 +6,6 @@ void matrix_init_user(void)
6#ifdef STENO_ENABLE 6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI 7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif 8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12} 9}
13 10
14#ifdef AUDIO_ENABLE 11#ifdef AUDIO_ENABLE
@@ -31,27 +28,4 @@ bool led_update_user(led_t led_state)
31 return false; 28 return false;
32} 29}
33#endif 30#endif
34
35void startup_user(void)
36{
37 _delay_ms(20); // gets rid of tick
38 PLAY_SONG(song_startup);
39}
40
41void shutdown_user(void)
42{
43 PLAY_SONG(song_goodbye);
44 _delay_ms(150);
45 stop_all_notes();
46}
47
48void music_on_user(void)
49{
50 music_scale_user();
51}
52
53void music_scale_user(void)
54{
55 PLAY_SONG(music_scale);
56}
57#endif 31#endif
diff --git a/keyboards/planck/keymaps/hieax/common/init.h b/keyboards/planck/keymaps/hieax/common/init.h
index 6d0b4392fb..d009bd69a1 100644
--- a/keyboards/planck/keymaps/hieax/common/init.h
+++ b/keyboards/planck/keymaps/hieax/common/init.h
@@ -6,9 +6,6 @@ void matrix_init_user(void)
6#ifdef STENO_ENABLE 6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI 7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif 8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12} 9}
13 10
14#ifdef AUDIO_ENABLE 11#ifdef AUDIO_ENABLE
@@ -32,26 +29,4 @@ bool led_update_user(led_t led_state)
32} 29}
33#endif 30#endif
34 31
35void startup_user(void)
36{
37 _delay_ms(20); // gets rid of tick
38 PLAY_SONG(song_startup);
39}
40
41void shutdown_user(void)
42{
43 PLAY_SONG(song_goodbye);
44 _delay_ms(150);
45 stop_all_notes();
46}
47
48void music_on_user(void)
49{
50 music_scale_user();
51}
52
53void music_scale_user(void)
54{
55 PLAY_SONG(music_scale);
56}
57#endif 32#endif
diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c
index 9145ad79aa..8aa3eb149f 100644
--- a/keyboards/planck/keymaps/impossible/keymap.c
+++ b/keyboards/planck/keymaps/impossible/keymap.c
@@ -140,16 +140,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
140}; 140};
141 141
142#ifdef AUDIO_ENABLE 142#ifdef AUDIO_ENABLE
143
144float tone_startup[][2] = SONG(STARTUP_SOUND);
145float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
146
147float tone_workman[][2] = SONG(QWERTY_SOUND); 143float tone_workman[][2] = SONG(QWERTY_SOUND);
148float tone_qwerty[][2] = SONG(COLEMAK_SOUND); 144float tone_qwerty[][2] = SONG(COLEMAK_SOUND);
149float tone_plover[][2] = SONG(PLOVER_SOUND); 145float tone_plover[][2] = SONG(PLOVER_SOUND);
150
151float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
152
153#endif 146#endif
154 147
155 148
@@ -196,36 +189,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
196 } 189 }
197 return true; 190 return true;
198} 191}
199
200void matrix_init_user(void) {
201 #ifdef AUDIO_ENABLE
202 startup_user();
203 #endif
204}
205
206#ifdef AUDIO_ENABLE
207
208void startup_user(void)
209{
210 _delay_ms(20); // gets rid of tick
211 PLAY_SONG(tone_startup);
212}
213
214void shutdown_user(void)
215{
216 PLAY_SONG(tone_goodbye);
217 _delay_ms(150);
218 stop_all_notes();
219}
220
221void music_on_user(void)
222{
223 music_scale_user();
224}
225
226void music_scale_user(void)
227{
228 PLAY_SONG(music_scale);
229}
230
231#endif
diff --git a/keyboards/planck/keymaps/ishtob/keymap.c b/keyboards/planck/keymaps/ishtob/keymap.c
index 75c581de19..5ec3115830 100644
--- a/keyboards/planck/keymaps/ishtob/keymap.c
+++ b/keyboards/planck/keymaps/ishtob/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, LT_RAI(KC_MINS), 23 KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, LT_RAI(KC_MINS),
24 KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, TG_NUMLAY, KC_APP, KC_DEL 24 KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, TG_NUMLAY, KC_APP, KC_DEL
25), 25),
26 26
27/* Colemak 27/* Colemak
28 * ,-----------------------------------------------------------------------------------. 28 * ,-----------------------------------------------------------------------------------.
29 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | 29 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41 KC_LSFT, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, LT_RAI(KC_MINS), 41 KC_LSFT, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, LT_RAI(KC_MINS),
42 KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, TG_NUMLAY, KC_APP, KC_DEL 42 KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, TG_NUMLAY, KC_APP, KC_DEL
43), 43),
44 44
45/* Dvorak 45/* Dvorak
46 * ,-----------------------------------------------------------------------------------. 46 * ,-----------------------------------------------------------------------------------.
47 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | 47 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
59 KC_LSFT, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________, LT_RAI(KC_MINS), 59 KC_LSFT, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________, LT_RAI(KC_MINS),
60 KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, TG_NUMLAY, KC_APP, KC_DEL 60 KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, TG_NUMLAY, KC_APP, KC_DEL
61), 61),
62 62
63/* Lower 63/* Lower
64 * ,-----------------------------------------------------------------------------------. 64 * ,-----------------------------------------------------------------------------------.
65 * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ~ | \ | 65 * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ~ | \ |
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
77 _______, __________________LONG_FUNC_RIGHT__________________,S(KC_NUHS),S(KC_NUBS),KC_LCBR, KC_RCBR, _______, 77 _______, __________________LONG_FUNC_RIGHT__________________,S(KC_NUHS),S(KC_NUBS),KC_LCBR, KC_RCBR, _______,
78 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY 78 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
79), 79),
80 80
81/* Raise 81/* Raise
82 * ,-----------------------------------------------------------------------------------. 82 * ,-----------------------------------------------------------------------------------.
83 * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | * | \ | 83 * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | * | \ |
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
95 _______, KC_LEFT, KC_DOWN, KC_RIGHT,KC_MUTE, KC_VOLD, KC_1, KC_2, KC_3, KC_UP, KC_SLSH, _______, 95 _______, KC_LEFT, KC_DOWN, KC_RIGHT,KC_MUTE, KC_VOLD, KC_1, KC_2, KC_3, KC_UP, KC_SLSH, _______,
96 _______, _______, _______, _______, _______, KC_SPC, KC_0, _______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NUM 96 _______, _______, _______, _______, _______, KC_SPC, KC_0, _______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NUM
97), 97),
98 98
99/* Plover layer (http://opensteno.org) 99/* Plover layer (http://opensteno.org)
100 * ,-----------------------------------------------------------------------------------. 100 * ,-----------------------------------------------------------------------------------.
101 * | # | # | # | # | # | # | # | # | # | # | # | # | 101 * | # | # | # | # | # | # | # | # | # | # | # | # |
@@ -107,14 +107,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
107 * | Exit | | | A | O | | E | U | | | | 107 * | Exit | | | A | O | | E | U | | | |
108 * `-----------------------------------------------------------------------------------' 108 * `-----------------------------------------------------------------------------------'
109 */ 109 */
110 110
111[_PLOVER] = LAYOUT_ortho_4x12_wrapper( 111[_PLOVER] = LAYOUT_ortho_4x12_wrapper(
112 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , 112 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
113 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, 113 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
114 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 114 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
115 EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX 115 EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
116), 116),
117 117
118/* FN layer on Esc key 118/* FN layer on Esc key
119 * ,-----------------------------------------------------------------------------------. 119 * ,-----------------------------------------------------------------------------------.
120 * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | + | 120 * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | + |
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
132 _______, __________________LONG_FUNC_RIGHT__________________,S(KC_NUHS),S(KC_NUBS),KC_LCBR, KC_RCBR, _______, 132 _______, __________________LONG_FUNC_RIGHT__________________,S(KC_NUHS),S(KC_NUBS),KC_LCBR, KC_RCBR, _______,
133 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY 133 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
134), 134),
135 135
136/* Num Layer 136/* Num Layer
137 * ,-----------------------------------------------------------------------------------. 137 * ,-----------------------------------------------------------------------------------.
138 * | | Q | Up | 4 | | | 7 | 8 | 9 | - | + | Bksp | 138 * | | Q | Up | 4 | | | 7 | 8 | 9 | - | + | Bksp |
@@ -150,7 +150,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
150 _______, KC_Z, KC_X, KC_C, KC_V, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PSLS, _______, 150 _______, KC_Z, KC_X, KC_C, KC_V, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PSLS, _______,
151 _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______, _______, KC_NUM, KC_MPLY 151 _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______, _______, KC_NUM, KC_MPLY
152), 152),
153 153
154/* Mouse Layer (semi-col) 154/* Mouse Layer (semi-col)
155 * ,-----------------------------------------------------------------------------------. 155 * ,-----------------------------------------------------------------------------------.
156 * | ACCL0| ACCL1| ACCL2|Email |Email2| Home | Wh_Up| WHL_L| M_Up | WHL_R|PASS| Meta | 156 * | ACCL0| ACCL1| ACCL2|Email |Email2| Home | Wh_Up| WHL_L| M_Up | WHL_R|PASS| Meta |
@@ -162,14 +162,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
162 * | | | | | | BTN1 | | | | Citx | | 162 * | | | | | | BTN1 | | | | Citx | |
163 * `-----------------------------------------------------------------------------------' 163 * `-----------------------------------------------------------------------------------'
164 */ 164 */
165 165
166[_MOUSECURSOR] = LAYOUT_ortho_4x12_wrapper( 166[_MOUSECURSOR] = LAYOUT_ortho_4x12_wrapper(
167 KC_ACL0, KC_ACL1, KC_ACL2, M_EMAIL,M_EMAIL2, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R, P_MPASS, P_META, 167 KC_ACL0, KC_ACL1, KC_ACL2, M_EMAIL,M_EMAIL2, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R, P_MPASS, P_META,
168 _______, XXXXXXX, XXXXXXX, XXXXXXX, O_RTQ6H, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, O_DAYRN, 168 _______, XXXXXXX, XXXXXXX, XXXXXXX, O_RTQ6H, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, O_DAYRN,
169 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, 169 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______,
170 _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, P_CITRIX, O_AUTODC 170 _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, P_CITRIX, O_AUTODC
171), 171),
172 172
173/* Adjust (Lower + Raise) 173/* Adjust (Lower + Raise)
174 * ,-----------------------------------------------------------------------------------. 174 * ,-----------------------------------------------------------------------------------.
175 * | Reset|RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +| | | Del | 175 * | Reset|RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +| | | Del |
@@ -187,21 +187,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
187 _______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, BL_DOWN,BL_UP, BL_STEP, BL_TOGG, 187 _______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, BL_DOWN,BL_UP, BL_STEP, BL_TOGG,
188 _______, _______, _______, _______, _______, _______, _______, _______, CK_RST, CK_DOWN, CK_UP, CK_TOGG 188 _______, _______, _______, _______, _______, _______, _______, _______, CK_RST, CK_DOWN, CK_UP, CK_TOGG
189) 189)
190 190
191 191
192}; 192};
193 193
194#ifdef AUDIO_ENABLE 194#ifdef AUDIO_ENABLE
195
196float tone_startup[][2] = SONG(STARTUP_SOUND);
197float tone_qwerty[][2] = SONG(QWERTY_SOUND); 195float tone_qwerty[][2] = SONG(QWERTY_SOUND);
198float tone_dvorak[][2] = SONG(DVORAK_SOUND); 196float tone_dvorak[][2] = SONG(DVORAK_SOUND);
199float tone_colemak[][2] = SONG(COLEMAK_SOUND); 197float tone_colemak[][2] = SONG(COLEMAK_SOUND);
200float tone_plover[][2] = SONG(PLOVER_SOUND); 198float tone_plover[][2] = SONG(PLOVER_SOUND);
201float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 199float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
202float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
203
204float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
205#endif 200#endif
206 201
207 202
@@ -307,38 +302,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
307} 302}
308 303
309void matrix_init_keymap(void) { 304void matrix_init_keymap(void) {
310 #ifdef AUDIO_ENABLE
311 startup_user();
312 #endif
313}
314
315#ifdef AUDIO_ENABLE
316
317void startup_user(void)
318{
319 #ifdef RGB_MATRIX_ENABLE 305 #ifdef RGB_MATRIX_ENABLE
320 rgblight_mode(RGB_MATRIX_CYCLE_ALL); 306 rgblight_mode(RGB_MATRIX_CYCLE_ALL);
321 #endif //RGB_matrix 307 #endif //RGB_matrix
322 wait_ms(20); // gets rid of tick
323 PLAY_SONG(tone_startup);
324} 308}
325
326void shutdown_user(void)
327{
328 PLAY_SONG(tone_goodbye);
329 wait_ms(150);
330 stop_all_notes();
331}
332
333void music_on_user(void)
334{
335 music_scale_user();
336}
337
338void music_scale_user(void)
339{
340 PLAY_SONG(music_scale);
341}
342
343#endif
344
diff --git a/keyboards/planck/keymaps/jhenahan/keymap.c b/keyboards/planck/keymaps/jhenahan/keymap.c
index 21c489922d..c884e864ac 100644
--- a/keyboards/planck/keymaps/jhenahan/keymap.c
+++ b/keyboards/planck/keymaps/jhenahan/keymap.c
@@ -160,15 +160,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
160}; 160};
161 161
162#ifdef AUDIO_ENABLE 162#ifdef AUDIO_ENABLE
163
164float tone_startup[][2] = SONG(STARTUP_SOUND);
165float tone_qwerty[][2] = SONG(QWERTY_SOUND); 163float tone_qwerty[][2] = SONG(QWERTY_SOUND);
166float tone_workman[][2] = SONG(WORKMAN_SOUND); 164float tone_workman[][2] = SONG(WORKMAN_SOUND);
167float tone_plover[][2] = SONG(PLOVER_SOUND); 165float tone_plover[][2] = SONG(PLOVER_SOUND);
168float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 166float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
169float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
170
171float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
172#endif 167#endif
173 168
174 169
@@ -268,36 +263,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
268 } 263 }
269 return true; 264 return true;
270} 265}
271
272void matrix_init_user(void) {
273 #ifdef AUDIO_ENABLE
274 startup_user();
275 #endif
276}
277
278#ifdef AUDIO_ENABLE
279
280void startup_user(void)
281{
282 _delay_ms(20); // gets rid of tick
283 PLAY_SONG(tone_startup);
284}
285
286void shutdown_user(void)
287{
288 PLAY_SONG(tone_goodbye);
289 _delay_ms(150);
290 stop_all_notes();
291}
292
293void music_on_user(void)
294{
295 music_scale_user();
296}
297
298void music_scale_user(void)
299{
300 PLAY_SONG(music_scale);
301}
302
303#endif
diff --git a/keyboards/planck/keymaps/lae3/keymap.c b/keyboards/planck/keymaps/lae3/keymap.c
index 7b6175d543..86c89a30a4 100644
--- a/keyboards/planck/keymaps/lae3/keymap.c
+++ b/keyboards/planck/keymaps/lae3/keymap.c
@@ -168,17 +168,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
168 168
169}; 169};
170 170
171#ifdef AUDIO_ENABLE 171bool process_record_user(uint16_t keycode, keyrecord_t *record) {
172
173float tone_startup[][2] = SONG(STARTUP_SOUND);
174float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
175
176float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
177
178#endif
179
180bool process_record_user(uint16_t keycode, keyrecord_t *record)
181{
182 switch (keycode) { 172 switch (keycode) {
183 case LOWER: 173 case LOWER:
184 if (record->event.pressed) { 174 if (record->event.pressed) {
@@ -217,37 +207,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record)
217 } 207 }
218 return true; 208 return true;
219} 209}
220
221void matrix_init_user(void)
222{
223#ifdef AUDIO_ENABLE
224 startup_user();
225#endif
226}
227
228#ifdef AUDIO_ENABLE
229
230void startup_user(void)
231{
232 _delay_ms(100); // gets rid of tick
233 PLAY_SONG(tone_startup);
234}
235
236void shutdown_user(void)
237{
238 PLAY_SONG(tone_goodbye);
239 _delay_ms(150);
240 stop_all_notes();
241}
242
243void music_on_user(void)
244{
245 music_scale_user();
246}
247
248void music_scale_user(void)
249{
250 PLAY_SONG(music_scale);
251}
252
253#endif
diff --git a/keyboards/planck/keymaps/mjt/keymap.c b/keyboards/planck/keymaps/mjt/keymap.c
index e927627e1f..7ab0fff241 100644
--- a/keyboards/planck/keymaps/mjt/keymap.c
+++ b/keyboards/planck/keymaps/mjt/keymap.c
@@ -133,16 +133,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
133}; 133};
134 134
135#ifdef AUDIO_ENABLE 135#ifdef AUDIO_ENABLE
136
137float tone_startup[][2] = SONG(STARTUP_SOUND);
138float tone_qwerty[][2] = SONG(QWERTY_SOUND); 136float tone_qwerty[][2] = SONG(QWERTY_SOUND);
139float tone_dyn_macro_rec[][2] = SONG(DVORAK_SOUND); 137float tone_dyn_macro_rec[][2] = SONG(DVORAK_SOUND);
140float tone_dyn_macro_play[][2] = SONG(COLEMAK_SOUND); 138float tone_dyn_macro_play[][2] = SONG(COLEMAK_SOUND);
141float tone_plover[][2] = SONG(PLOVER_SOUND); 139float tone_plover[][2] = SONG(PLOVER_SOUND);
142float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 140float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
143float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
144
145float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
146#endif 141#endif
147 142
148void persistant_default_layer_set(uint16_t default_layer) { 143void persistant_default_layer_set(uint16_t default_layer) {
@@ -239,36 +234,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
239 } 234 }
240 return true; 235 return true;
241} 236}
242
243void matrix_init_user(void) {
244 #ifdef AUDIO_ENABLE
245 startup_user();
246 #endif
247}
248
249#ifdef AUDIO_ENABLE
250
251void startup_user(void)
252{
253 _delay_ms(20); // gets rid of tick
254 PLAY_SONG(tone_startup);
255}
256
257void shutdown_user(void)
258{
259 PLAY_SONG(tone_goodbye);
260 _delay_ms(150);
261 stop_all_notes();
262}
263
264void music_on_user(void)
265{
266 music_scale_user();
267}
268
269void music_scale_user(void)
270{
271 PLAY_SONG(music_scale);
272}
273
274#endif
diff --git a/keyboards/planck/keymaps/mjtnumsym/keymap.c b/keyboards/planck/keymaps/mjtnumsym/keymap.c
index 3fa05ad178..4eaafb75d6 100644
--- a/keyboards/planck/keymaps/mjtnumsym/keymap.c
+++ b/keyboards/planck/keymaps/mjtnumsym/keymap.c
@@ -132,16 +132,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
132}; 132};
133 133
134#ifdef AUDIO_ENABLE 134#ifdef AUDIO_ENABLE
135
136float tone_startup[][2] = SONG(STARTUP_SOUND);
137float tone_qwerty[][2] = SONG(QWERTY_SOUND); 135float tone_qwerty[][2] = SONG(QWERTY_SOUND);
138float tone_dyn_macro_rec[][2] = SONG(DVORAK_SOUND); 136float tone_dyn_macro_rec[][2] = SONG(DVORAK_SOUND);
139float tone_dyn_macro_play[][2] = SONG(COLEMAK_SOUND); 137float tone_dyn_macro_play[][2] = SONG(COLEMAK_SOUND);
140float tone_plover[][2] = SONG(PLOVER_SOUND); 138float tone_plover[][2] = SONG(PLOVER_SOUND);
141float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 139float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
142float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
143
144float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
145#endif 140#endif
146 141
147void persistant_default_layer_set(uint16_t default_layer) { 142void persistant_default_layer_set(uint16_t default_layer) {
@@ -238,36 +233,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
238 } 233 }
239 return true; 234 return true;
240} 235}
241
242void matrix_init_user(void) {
243 #ifdef AUDIO_ENABLE
244 startup_user();
245 #endif
246}
247
248#ifdef AUDIO_ENABLE
249
250void startup_user(void)
251{
252 _delay_ms(20); // gets rid of tick
253 PLAY_SONG(tone_startup);
254}
255
256void shutdown_user(void)
257{
258 PLAY_SONG(tone_goodbye);
259 _delay_ms(150);
260 stop_all_notes();
261}
262
263void music_on_user(void)
264{
265 music_scale_user();
266}
267
268void music_scale_user(void)
269{
270 PLAY_SONG(music_scale);
271}
272
273#endif
diff --git a/keyboards/planck/keymaps/originerd/keymap.c b/keyboards/planck/keymaps/originerd/keymap.c
index 85e5cd3b16..d7c9ffb6b5 100644
--- a/keyboards/planck/keymaps/originerd/keymap.c
+++ b/keyboards/planck/keymaps/originerd/keymap.c
@@ -101,12 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
101}; 101};
102 102
103#ifdef AUDIO_ENABLE 103#ifdef AUDIO_ENABLE
104
105float tone_startup[][2] = SONG(STARTUP_SOUND);
106float tone_nerd[][2] = SONG(QWERTY_SOUND); 104float tone_nerd[][2] = SONG(QWERTY_SOUND);
107float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
108
109float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
110#endif 105#endif
111 106
112 107
@@ -149,36 +144,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
149 } 144 }
150 return true; 145 return true;
151} 146}
152
153void matrix_init_user(void) {
154 #ifdef AUDIO_ENABLE
155 startup_user();
156 #endif
157}
158
159#ifdef AUDIO_ENABLE
160
161void startup_user(void)
162{
163 _delay_ms(20); // gets rid of tick
164 PLAY_SONG(tone_startup);
165}
166
167void shutdown_user(void)
168{
169 PLAY_SONG(tone_goodbye);
170 _delay_ms(150);
171 stop_all_notes();
172}
173
174void music_on_user(void)
175{
176 music_scale_user();
177}
178
179void music_scale_user(void)
180{
181 PLAY_SONG(music_scale);
182}
183
184#endif
diff --git a/keyboards/planck/keymaps/premek/keymap.c b/keyboards/planck/keymaps/premek/keymap.c
index 76d3cabfbc..839a53a6fc 100644
--- a/keyboards/planck/keymaps/premek/keymap.c
+++ b/keyboards/planck/keymaps/premek/keymap.c
@@ -76,16 +76,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
76}; 76};
77 77
78#ifdef AUDIO_ENABLE 78#ifdef AUDIO_ENABLE
79
80float tone_startup[][2] = SONG(STARTUP_SOUND);
81float tone_qwerty[][2] = SONG(QWERTY_SOUND); 79float tone_qwerty[][2] = SONG(QWERTY_SOUND);
82float tone_dvorak[][2] = SONG(DVORAK_SOUND); 80float tone_dvorak[][2] = SONG(DVORAK_SOUND);
83float tone_colemak[][2] = SONG(COLEMAK_SOUND); 81float tone_colemak[][2] = SONG(COLEMAK_SOUND);
84float tone_plover[][2] = SONG(PLOVER_SOUND); 82float tone_plover[][2] = SONG(PLOVER_SOUND);
85float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); 83float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
86float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
87
88float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
89#endif 84#endif
90 85
91 86
@@ -185,36 +180,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
185 } 180 }
186 return true; 181 return true;
187} 182}
188
189void matrix_init_user(void) {
190 #ifdef AUDIO_ENABLE
191 startup_user();
192 #endif
193}
194
195#ifdef AUDIO_ENABLE
196
197void startup_user(void)
198{
199 _delay_ms(20); // gets rid of tick
200 PLAY_SONG(tone_startup);
201}
202
203void shutdown_user(void)
204{
205 PLAY_SONG(tone_goodbye);
206 _delay_ms(150);
207 stop_all_notes();
208}
209
210void music_on_user(void)
211{
212 music_scale_user();
213}
214
215void music_scale_user(void)
216{
217 PLAY_SONG(music_scale);
218}
219
220#endif
diff --git a/keyboards/planck/keymaps/roguepullrequest/keymap.c b/keyboards/planck/keymaps/roguepullrequest/keymap.c
index 61221601e6..31cce52a5f 100644
--- a/keyboards/planck/keymaps/roguepullrequest/keymap.c
+++ b/keyboards/planck/keymaps/roguepullrequest/keymap.c
@@ -28,7 +28,7 @@ enum {
28 RSHIFT, 28 RSHIFT,
29 LSHIFT, 29 LSHIFT,
30 TD_S, 30 TD_S,
31 SLASH 31 SLASH
32}; 32};
33 33
34int cur_dance (tap_dance_state_t *state); 34int cur_dance (tap_dance_state_t *state);
@@ -116,10 +116,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
116 TD(LSHIFT), KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, TD(RSHIFT), 116 TD(LSHIFT), KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, TD(RSHIFT),
117 TD(X_AT_FUN), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ALT_TAB, KC_SPACE, KC_ENTER, MT(MOD_LCTL | MOD_LSFT, KC_LGUI), KC_PGUP, KC_PGDN, LT(_LOWER, KC_PLUS) 117 TD(X_AT_FUN), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ALT_TAB, KC_SPACE, KC_ENTER, MT(MOD_LCTL | MOD_LSFT, KC_LGUI), KC_PGUP, KC_PGDN, LT(_LOWER, KC_PLUS)
118 ), 118 ),
119 119
120 [_UPPER] = LAYOUT_planck_grid( 120 [_UPPER] = LAYOUT_planck_grid(
121 KC_GRAVE, KC_AMPR, KC_PERC, KC_NO, KC_NO, KC_EQL, KC_ASTR, KC_NO, KC_NO, KC_EXLM, KC_HASH, KC_TRNS, 121 KC_GRAVE, KC_AMPR, KC_PERC, KC_NO, KC_NO, KC_EQL, KC_ASTR, KC_NO, KC_NO, KC_EXLM, KC_HASH, KC_TRNS,
122 KC_PLUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSLS, 122 KC_PLUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSLS,
123 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 123 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
124 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS 124 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS
125 ), 125 ),
@@ -156,7 +156,7 @@ int cur_dance (tap_dance_state_t *state) {
156 if (state->interrupted || !state->pressed)return TRIPLE_TAP; 156 if (state->interrupted || !state->pressed)return TRIPLE_TAP;
157 else return TRIPLE_HOLD; 157 else return TRIPLE_HOLD;
158 } 158 }
159 else return 8; // magic number that i dont believe works. 159 else return 8; // magic number that i dont believe works.
160} 160}
161 161
162// instance of tap for the 'X' dance. 162// instance of tap for the 'X' dance.
@@ -251,4 +251,7 @@ tap_dance_action_t tap_dance_actions[] = {
251 251
252}; 252};
253 253
254void shutdown_user(void) { clear_keyboard(); } 254bool shutdown_user(bool jump_to_bootloader) {
255 clear_keyboard();
256 return true;
257}
diff --git a/keyboards/planck/keymaps/sdothum/common/init.h b/keyboards/planck/keymaps/sdothum/common/init.h
index 6d0b4392fb..e6bb7101e9 100644
--- a/keyboards/planck/keymaps/sdothum/common/init.h
+++ b/keyboards/planck/keymaps/sdothum/common/init.h
@@ -6,9 +6,6 @@ void matrix_init_user(void)
6#ifdef STENO_ENABLE 6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI 7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif 8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12} 9}
13 10
14#ifdef AUDIO_ENABLE 11#ifdef AUDIO_ENABLE
@@ -31,27 +28,4 @@ bool led_update_user(led_t led_state)
31 return false; 28 return false;
32} 29}
33#endif 30#endif
34
35void startup_user(void)
36{
37 _delay_ms(20); // gets rid of tick
38 PLAY_SONG(song_startup);
39}
40
41void shutdown_user(void)
42{
43 PLAY_SONG(song_goodbye);
44 _delay_ms(150);
45 stop_all_notes();
46}
47
48void music_on_user(void)
49{
50 music_scale_user();
51}
52
53void music_scale_user(void)
54{
55 PLAY_SONG(music_scale);
56}
57#endif 31#endif
diff --git a/keyboards/planck/keymaps/sgoodwin/keymap.c b/keyboards/planck/keymaps/sgoodwin/keymap.c
index e61cd4de68..fbfe793cb8 100644
--- a/keyboards/planck/keymaps/sgoodwin/keymap.c
+++ b/keyboards/planck/keymaps/sgoodwin/keymap.c
@@ -120,13 +120,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
120}; 120};
121 121
122#ifdef AUDIO_ENABLE 122#ifdef AUDIO_ENABLE
123
124float tone_startup[][2] = SONG(STARTUP_SOUND);
125float tone_qwerty[][2] = SONG(QWERTY_SOUND); 123float tone_qwerty[][2] = SONG(QWERTY_SOUND);
126float tone_colemak[][2] = SONG(COLEMAK_SOUND); 124float tone_colemak[][2] = SONG(COLEMAK_SOUND);
127float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
128
129float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
130#endif 125#endif
131 126
132 127
@@ -189,36 +184,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
189 } 184 }
190 return true; 185 return true;
191} 186}
192
193void matrix_init_user(void) {
194 #ifdef AUDIO_ENABLE
195 startup_user();
196 #endif
197}
198
199#ifdef AUDIO_ENABLE
200
201void startup_user(void)
202{
203 _delay_ms(20); // gets rid of tick
204 PLAY_SONG(tone_startup);
205}
206
207void shutdown_user(void)
208{
209 PLAY_SONG(tone_goodbye);
210 _delay_ms(150);
211 stop_all_notes();
212}
213
214void music_on_user(void)
215{
216 music_scale_user();
217}
218
219void music_scale_user(void)
220{
221 PLAY_SONG(music_scale);
222}
223
224#endif
diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c
index 6320e11fcf..7d558e4383 100644
--- a/keyboards/planck/keymaps/smt/keymap.c
+++ b/keyboards/planck/keymaps/smt/keymap.c
@@ -142,14 +142,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
142}; 142};
143 143
144#ifdef AUDIO_ENABLE 144#ifdef AUDIO_ENABLE
145
146float tone_startup[][2] = SONG(STARTUP_SOUND);
147float tone_qwerty[][2] = SONG(QWERTY_SOUND); 145float tone_qwerty[][2] = SONG(QWERTY_SOUND);
148float tone_colemak[][2] = SONG(COLEMAK_SOUND); 146float tone_colemak[][2] = SONG(COLEMAK_SOUND);
149float tone_dvorak[][2] = SONG(DVORAK_SOUND); 147float tone_dvorak[][2] = SONG(DVORAK_SOUND);
150float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
151
152float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
153#endif 148#endif
154 149
155 150
@@ -221,36 +216,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
221 } 216 }
222 return true; 217 return true;
223} 218}
224
225void matrix_init_user(void) {
226 #ifdef AUDIO_ENABLE
227 startup_user();
228 #endif
229}
230
231#ifdef AUDIO_ENABLE
232
233void startup_user(void)
234{
235 _delay_ms(20); // gets rid of tick
236 PLAY_SONG(tone_startup);
237}
238
239void shutdown_user(void)
240{
241 PLAY_SONG(tone_goodbye);
242 _delay_ms(150);
243 stop_all_notes();
244}
245
246void music_on_user(void)
247{
248 music_scale_user();
249}
250
251void music_scale_user(void)
252{
253 PLAY_SONG(music_scale);
254}
255
256#endif
diff --git a/keyboards/planck/keymaps/that_canadian/keymap.c b/keyboards/planck/keymaps/that_canadian/keymap.c
index 9f3a415fa3..d7b8a6b356 100644
--- a/keyboards/planck/keymaps/that_canadian/keymap.c
+++ b/keyboards/planck/keymaps/that_canadian/keymap.c
@@ -123,14 +123,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
123}; 123};
124 124
125#ifdef AUDIO_ENABLE 125#ifdef AUDIO_ENABLE
126
127float tone_startup[][2] = SONG(STARTUP_SOUND);
128float tone_qwerty[][2] = SONG(QWERTY_SOUND); 126float tone_qwerty[][2] = SONG(QWERTY_SOUND);
129float tone_dvorak[][2] = SONG(DVORAK_SOUND); 127float tone_dvorak[][2] = SONG(DVORAK_SOUND);
130float tone_colemak[][2] = SONG(COLEMAK_SOUND); 128float tone_colemak[][2] = SONG(COLEMAK_SOUND);
131float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
132
133float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
134#endif 129#endif
135 130
136 131
@@ -173,36 +168,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
173 } 168 }
174 return true; 169 return true;
175} 170}
176
177void matrix_init_user(void) {
178 #ifdef AUDIO_ENABLE
179 startup_user();
180 #endif
181}
182
183#ifdef AUDIO_ENABLE
184
185void startup_user(void)
186{
187 _delay_ms(20); // gets rid of tick
188 PLAY_SONG(tone_startup);
189}
190
191void shutdown_user(void)
192{
193 PLAY_SONG(tone_goodbye);
194 _delay_ms(150);
195 stop_all_notes();
196}
197
198void music_on_user(void)
199{
200 music_scale_user();
201}
202
203void music_scale_user(void)
204{
205 PLAY_SONG(music_scale);
206}
207
208#endif
diff --git a/keyboards/planck/keymaps/vaire/keymap.c b/keyboards/planck/keymaps/vaire/keymap.c
index f58486cda8..00b49e52d7 100644
--- a/keyboards/planck/keymaps/vaire/keymap.c
+++ b/keyboards/planck/keymaps/vaire/keymap.c
@@ -31,42 +31,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31 31
32 32
33 LAYOUT_planck_grid( 33 LAYOUT_planck_grid(
34 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 34 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
35 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 35 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
36 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, SFT_T(KC_ENT), 36 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, SFT_T(KC_ENT),
37 MO(1), KC_LCTL, KC_LALT, KC_LGUI, MO(2), LT(5,KC_ENT), LT(4,KC_SPC), MO(3), KC_SLSH, KC_LEFT, KC_DOWN, CTL_T(KC_RGHT)), 37 MO(1), KC_LCTL, KC_LALT, KC_LGUI, MO(2), LT(5,KC_ENT), LT(4,KC_SPC), MO(3), KC_SLSH, KC_LEFT, KC_DOWN, CTL_T(KC_RGHT)),
38 38
39 LAYOUT_planck_grid( 39 LAYOUT_planck_grid(
40 KC_ESC, KC_NUM, LCTL(KC_SPC), KC_UP, LSFT(KC_SPC), KC_DLR, KC_EQL, KC_P7, KC_P8, KC_P9, KC_PPLS, LCTL(KC_BSPC), 40 KC_ESC, KC_NUM, LCTL(KC_SPC), KC_UP, LSFT(KC_SPC), KC_DLR, KC_EQL, KC_P7, KC_P8, KC_P9, KC_PPLS, LCTL(KC_BSPC),
41 KC_TAB, FIND, KC_LEFT, KC_DOWN, KC_RGHT, KC_PERC, KC_CIRC, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_BSLS, 41 KC_TAB, FIND, KC_LEFT, KC_DOWN, KC_RGHT, KC_PERC, KC_CIRC, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_BSLS,
42 KC_LSFT, UNDO, CUT, COPY, PASTE, EXCEL_HOME, KC_PSCR, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_LSFT, 42 KC_LSFT, UNDO, CUT, COPY, PASTE, EXCEL_HOME, KC_PSCR, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_LSFT,
43 KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, TO(1), KC_ENT, KC_SPC, KC_PENT, KC_P0, KC_PDOT, KC_PAST, KC_LCTL), 43 KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, TO(1), KC_ENT, KC_SPC, KC_PENT, KC_P0, KC_PDOT, KC_PAST, KC_LCTL),
44 44
45 LAYOUT_planck_grid( 45 LAYOUT_planck_grid(
46 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, 46 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
47 KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_EQL, KC_LT, KC_GT, KC_LPRN, 47 KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_EQL, KC_LT, KC_GT, KC_LPRN,
48 KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_MPLY, KC_MNXT, KC_PGUP, SFT_T(KC_VOLU), 48 KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_MPLY, KC_MNXT, KC_PGUP, SFT_T(KC_VOLU),
49 TO(0), KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_ENT, KC_SPC, MO(3), KC_PSCR, KC_MPRV, KC_PGDN, CTL_T(KC_VOLD)), 49 TO(0), KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_ENT, KC_SPC, MO(3), KC_PSCR, KC_MPRV, KC_PGDN, CTL_T(KC_VOLD)),
50 50
51 LAYOUT_planck_grid( 51 LAYOUT_planck_grid(
52 KC_TILD, DESK_LEFT, WIN_LEFT, KC_F4, WIN_RIGHT, DESK_RIGHT, DOCS, SNAP_LEFT, SNAP_UP, SNAP_RIGHT, SNAP_DOWN, KC_DEL, 52 KC_TILD, DESK_LEFT, WIN_LEFT, KC_F4, WIN_RIGHT, DESK_RIGHT, DOCS, SNAP_LEFT, SNAP_UP, SNAP_RIGHT, SNAP_DOWN, KC_DEL,
53 KC_CAPS, KC_QUOT, KC_LBRC, KC_LCBR, KC_LPRN, KC_BSLS, KC_SLSH, KC_RPRN, KC_RCBR, KC_RBRC, KC_DQUO, KC_QUOT, 53 KC_CAPS, KC_QUOT, KC_LBRC, KC_LCBR, KC_LPRN, KC_BSLS, KC_SLSH, KC_RPRN, KC_RCBR, KC_RBRC, KC_DQUO, KC_QUOT,
54 KC_PWR, KC_SLEP, KC_WAKE, KC_HOME, BL_BRTG, BL_STEP, KC_TRNS, KC_CALC, KC_LT, KC_GT, KC_COLON, KC_LSFT, 54 KC_PWR, KC_SLEP, KC_WAKE, KC_HOME, BL_BRTG, BL_STEP, KC_TRNS, KC_CALC, KC_LT, KC_GT, KC_COLON, KC_LSFT,
55 TO(0), KC_LCTL, KC_LALT, KC_LGUI, KC_LALT, KC_LCTL, KC_TRNS, KC_TRNS, AU_TOGG, MU_TOGG, MU_NEXT, LCTL(KC_RGHT)), 55 TO(0), KC_LCTL, KC_LALT, KC_LGUI, KC_LALT, KC_LCTL, KC_TRNS, KC_TRNS, AU_TOGG, MU_TOGG, MU_NEXT, LCTL(KC_RGHT)),
56 56
57 LAYOUT_planck_grid( 57 LAYOUT_planck_grid(
58 TO(0), KC_LSCR, WIN_LEFT, KC_MS_WH_UP, WIN_RIGHT, KC_TRNS, KC_TRNS, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, KC_TRNS, KC_TRNS, 58 TO(0), KC_LSCR, WIN_LEFT, KC_MS_WH_UP, WIN_RIGHT, KC_TRNS, KC_TRNS, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, KC_TRNS, KC_TRNS,
59 KC_TRNS, KC_INS, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, 59 KC_TRNS, KC_INS, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
60 QK_BOOT, KC_APP, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_TRNS, KC_TRNS, TO(0), TO(1), TO(2), TO(3), TO(4), 60 QK_BOOT, KC_APP, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_TRNS, KC_TRNS, TO(0), TO(1), TO(2), TO(3), TO(4),
61 TO(0), KC_MENU, KC_TRNS, KC_TRNS, KC_LALT, KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RCTL), 61 TO(0), KC_MENU, KC_TRNS, KC_TRNS, KC_LALT, KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RCTL),
62 62
63 LAYOUT_planck_grid( 63 LAYOUT_planck_grid(
64 KC_BSPC, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_T, KC_R, KC_E, KC_W, KC_Q, KC_BSPC, 64 KC_BSPC, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_T, KC_R, KC_E, KC_W, KC_Q, KC_BSPC,
65 KC_TAB, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_G, KC_F, KC_D, KC_S, KC_A, KC_QUOT, 65 KC_TAB, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_G, KC_F, KC_D, KC_S, KC_A, KC_QUOT,
66 KC_LSFT, KC_ENT, KC_DOT, KC_COMM, KC_M, KC_N, KC_B, KC_V, KC_C, KC_X, KC_Z, SFT_T(KC_ENT), 66 KC_LSFT, KC_ENT, KC_DOT, KC_COMM, KC_M, KC_N, KC_B, KC_V, KC_C, KC_X, KC_Z, SFT_T(KC_ENT),
67 TO(0), KC_LCTL, KC_LALT, KC_LGUI, MO(2), KC_TRNS, KC_TRNS, MO(3), KC_SLSH, KC_LEFT, KC_DOWN, LCTL(KC_RGHT)), 67 TO(0), KC_LCTL, KC_LALT, KC_LGUI, MO(2), KC_TRNS, KC_TRNS, MO(3), KC_SLSH, KC_LEFT, KC_DOWN, LCTL(KC_RGHT)),
68 68
69 69
70 70
71}; 71};
72 72
@@ -76,7 +76,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
76void matrix_init_user(void) 76void matrix_init_user(void)
77{ 77{
78 set_voice(default_voice); 78 set_voice(default_voice);
79 startup_user();
80 println("Matrix Init"); 79 println("Matrix Init");
81} 80}
82 81
@@ -123,29 +122,4 @@ bool led_update_user(led_t led_state)
123 old_led_state = led_state; 122 old_led_state = led_state;
124 return false; 123 return false;
125} 124}
126 125#endif /* AUDIO_ENABLE */
127
128void startup_user(void)
129{
130 _delay_ms(30); // gets rid of tick
131 PLAY_SONG(tone_my_startup);
132}
133
134void shutdown_user(void)
135{
136 PLAY_SONG(tone_my_goodbye);
137 _delay_ms(3000);
138 stop_all_notes();
139}
140
141void audio_on_user(void)
142{
143 PLAY_SONG(tone_audio_on);
144}
145
146void music_on_user(void)
147{
148 PLAY_SONG(tone_music_on);
149}
150
151#endif /* AUDIO_ENABLE */ \ No newline at end of file
diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
index ae5f44e713..e17e31c7b5 100644
--- a/keyboards/planck/keymaps/zach/zach_common_functions.c
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -52,8 +52,6 @@ enum my_keycodes{
52 52
53#ifdef AUDIO_ENABLE 53#ifdef AUDIO_ENABLE
54#include "audio.h" 54#include "audio.h"
55float tone_startup[][2] = SONG(STARTUP_SOUND);
56float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
57float tone_colemak[][2] = SONG(COLEMAK_SOUND); 55float tone_colemak[][2] = SONG(COLEMAK_SOUND);
58float tone_swcole[][2] = SONG(QWERTY_SOUND); 56float tone_swcole[][2] = SONG(QWERTY_SOUND);
59float tone_capslock_on[][2] = SONG(CAPS_LOCK_ON_SOUND); 57float tone_capslock_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
@@ -414,32 +412,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
414 return true; 412 return true;
415}; 413};
416 414
417void matrix_init_user(void){ // Run once at startup
418 #ifdef AUDIO_ENABLE
419 _delay_ms(50); // gets rid of tick
420 PLAY_SONG(tone_startup);
421 #endif
422}
423
424#ifdef AUDIO_ENABLE
425void play_goodbye_tone(void){
426 PLAY_SONG(tone_goodbye);
427 _delay_ms(150);
428}
429
430void shutdown_user(void){
431 PLAY_SONG(tone_goodbye);
432 _delay_ms(150);
433 stop_all_notes();
434}
435
436void music_on_user(void){ // Run when the music layer is turned on
437 PLAY_SONG(tone_startup);
438}
439
440void music_off_user(void){ // Run when music is turned off
441 PLAY_SONG(tone_goodbye);
442}
443#endif
444
445#endif 415#endif
diff --git a/keyboards/preonic/keymaps/0xdec/keymap.c b/keyboards/preonic/keymaps/0xdec/keymap.c
index fafa5c4460..fad47842a5 100644
--- a/keyboards/preonic/keymaps/0xdec/keymap.c
+++ b/keyboards/preonic/keymaps/0xdec/keymap.c
@@ -81,13 +81,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
81 81
82 82
83#ifdef AUDIO_ENABLE 83#ifdef AUDIO_ENABLE
84
85float tone_startup[][2] = {
86 {NOTE_B5, 20},
87 {NOTE_B6, 8},
88 {NOTE_DS6, 20},
89 {NOTE_B6, 8}
90};
91float tone_colemak[][2] = SONG(COLEMAK_SOUND); 84float tone_colemak[][2] = SONG(COLEMAK_SOUND);
92float tone_game[][2] = { 85float tone_game[][2] = {
93 {NOTE_E6, 10} ,{NOTE_E6, 10} ,{NOTE_REST, 10} ,{NOTE_E6, 10} , 86 {NOTE_E6, 10} ,{NOTE_E6, 10} ,{NOTE_REST, 10} ,{NOTE_E6, 10} ,
@@ -95,26 +88,6 @@ float tone_game[][2] = {
95 {NOTE_G6, 10} ,{NOTE_REST, 30}, 88 {NOTE_G6, 10} ,{NOTE_REST, 30},
96 {NOTE_G5, 10} ,{NOTE_REST, 30} 89 {NOTE_G5, 10} ,{NOTE_REST, 30}
97}; 90};
98float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
99float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
100
101void startup_user(void) {
102 _delay_ms(20); // gets rid of tick
103 PLAY_SONG(tone_startup);
104}
105void shutdown_user(void) {
106 PLAY_SONG(tone_goodbye);
107 _delay_ms(150);
108 stop_all_notes();
109}
110
111void music_on_user(void) {
112 music_scale_user();
113}
114void music_scale_user(void) {
115 PLAY_SONG(music_scale);
116}
117
118#endif 91#endif
119 92
120 93
diff --git a/keyboards/preonic/keymaps/bucktooth/keymap.c b/keyboards/preonic/keymaps/bucktooth/keymap.c
index 593083f201..09602a1673 100644
--- a/keyboards/preonic/keymaps/bucktooth/keymap.c
+++ b/keyboards/preonic/keymaps/bucktooth/keymap.c
@@ -69,47 +69,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
69) 69)
70 70
71}; 71};
72
73#ifdef AUDIO_ENABLE
74float tone_startup[][2] = {
75 {NOTE_C5, 8},
76 {NOTE_E6, 4},
77 {NOTE_D6, 16},
78 {NOTE_G6, 8}
79};
80
81float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
82
83float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
84#endif
85
86void matrix_init_user(void) {
87 #ifdef AUDIO_ENABLE
88 startup_user();
89 #endif
90}
91
92#ifdef AUDIO_ENABLE
93
94void startup_user(void)
95{
96 PLAY_SONG(tone_startup);
97}
98
99void shutdown_user(void)
100{
101 PLAY_SONG(tone_goodbye);
102 stop_all_notes();
103}
104
105void music_on_user(void)
106{
107 music_scale_user();
108}
109
110void music_scale_user(void)
111{
112 PLAY_SONG(music_scale);
113}
114
115#endif
diff --git a/keyboards/preonic/keymaps/jacwib/keymap.c b/keyboards/preonic/keymaps/jacwib/keymap.c
index 9de460c2a4..694c44b3c7 100644
--- a/keyboards/preonic/keymaps/jacwib/keymap.c
+++ b/keyboards/preonic/keymaps/jacwib/keymap.c
@@ -174,19 +174,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
174 174
175}; 175};
176 176
177#ifdef AUDIO_ENABLE
178float tone_startup[][2] = {
179 {NOTE_D5, 8},
180 {NOTE_E6, 8},
181 {NOTE_D6, 8},
182 {NOTE_E5, 8}
183};
184
185float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
186
187float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
188#endif
189
190void persistent_default_layer_set(uint16_t default_layer) { 177void persistent_default_layer_set(uint16_t default_layer) {
191 eeconfig_update_default_layer(default_layer); 178 eeconfig_update_default_layer(default_layer);
192 default_layer_set(default_layer); 179 default_layer_set(default_layer);
@@ -249,36 +236,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
249 } 236 }
250 return true; 237 return true;
251}; 238};
252
253void matrix_init_user(void) {
254 #ifdef AUDIO_ENABLE
255 startup_user();
256 #endif
257}
258
259#ifdef AUDIO_ENABLE
260
261void startup_user(void)
262{
263 _delay_ms(20); // gets rid of tick
264 PLAY_SONG(tone_startup);
265}
266
267void shutdown_user(void)
268{
269 PLAY_SONG(tone_goodbye);
270 _delay_ms(150);
271 stop_all_notes();
272}
273
274void music_on_user(void)
275{
276 music_scale_user();
277}
278
279void music_scale_user(void)
280{
281 PLAY_SONG(music_scale);
282}
283
284#endif
diff --git a/keyboards/preonic/keymaps/nikchi/keymap.c b/keyboards/preonic/keymaps/nikchi/keymap.c
index e14f8f0052..50589039b7 100644
--- a/keyboards/preonic/keymaps/nikchi/keymap.c
+++ b/keyboards/preonic/keymaps/nikchi/keymap.c
@@ -111,20 +111,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
111}; 111};
112 112
113#ifdef AUDIO_ENABLE 113#ifdef AUDIO_ENABLE
114float tone_startup[][2] = {
115 {NOTE_B5, 20},
116 {NOTE_B6, 8},
117 {NOTE_DS6, 20},
118 {NOTE_B6, 8}
119};
120
121float tone_qwerty[][2] = SONG(QWERTY_SOUND); 114float tone_qwerty[][2] = SONG(QWERTY_SOUND);
122float tone_dvorak[][2] = SONG(DVORAK_SOUND); 115float tone_dvorak[][2] = SONG(DVORAK_SOUND);
123float tone_colemak[][2] = SONG(COLEMAK_SOUND); 116float tone_colemak[][2] = SONG(COLEMAK_SOUND);
124
125float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
126
127float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
128#endif 117#endif
129 118
130void persistent_default_layer_set(uint16_t default_layer) { 119void persistent_default_layer_set(uint16_t default_layer) {
@@ -177,36 +166,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
177 } 166 }
178 return true; 167 return true;
179}; 168};
180
181void matrix_init_user(void) {
182 #ifdef AUDIO_ENABLE
183 startup_user();
184 #endif
185}
186
187#ifdef AUDIO_ENABLE
188
189void startup_user(void)
190{
191 _delay_ms(20); // gets rid of tick
192 PLAY_SONG(tone_startup);
193}
194
195void shutdown_user(void)
196{
197 PLAY_SONG(tone_goodbye);
198 _delay_ms(150);
199 stop_all_notes();
200}
201
202void music_on_user(void)
203{
204 music_scale_user();
205}
206
207void music_scale_user(void)
208{
209 PLAY_SONG(music_scale);
210}
211
212#endif
diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c
index 7dd9545261..22f6c39a92 100644
--- a/keyboards/preonic/keymaps/smt/keymap.c
+++ b/keyboards/preonic/keymaps/smt/keymap.c
@@ -158,20 +158,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
158}; 158};
159 159
160#ifdef AUDIO_ENABLE 160#ifdef AUDIO_ENABLE
161float tone_startup[][2] = {
162 {NOTE_B5, 20},
163 {NOTE_B6, 8},
164 {NOTE_DS6, 20},
165 {NOTE_B6, 8}
166};
167
168float tone_qwerty[][2] = SONG(QWERTY_SOUND); 161float tone_qwerty[][2] = SONG(QWERTY_SOUND);
169float tone_colemak[][2] = SONG(COLEMAK_SOUND); 162float tone_colemak[][2] = SONG(COLEMAK_SOUND);
170float tone_dvorak[][2] = SONG(DVORAK_SOUND); 163float tone_dvorak[][2] = SONG(DVORAK_SOUND);
171
172float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
173
174float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
175#endif 164#endif
176 165
177void persistent_default_layer_set(uint16_t default_layer) { 166void persistent_default_layer_set(uint16_t default_layer) {
@@ -242,36 +231,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
242 } 231 }
243 return true; 232 return true;
244}; 233};
245
246void matrix_init_user(void) {
247 #ifdef AUDIO_ENABLE
248 startup_user();
249 #endif
250}
251
252#ifdef AUDIO_ENABLE
253
254void startup_user(void)
255{
256 _delay_ms(20); // gets rid of tick
257 PLAY_SONG(tone_startup);
258}
259
260void shutdown_user(void)
261{
262 PLAY_SONG(tone_goodbye);
263 _delay_ms(150);
264 stop_all_notes();
265}
266
267void music_on_user(void)
268{
269 music_scale_user();
270}
271
272void music_scale_user(void)
273{
274 PLAY_SONG(music_scale);
275}
276
277#endif
diff --git a/keyboards/preonic/keymaps/that_canadian/keymap.c b/keyboards/preonic/keymaps/that_canadian/keymap.c
index 8af796821c..18b2e046e8 100644
--- a/keyboards/preonic/keymaps/that_canadian/keymap.c
+++ b/keyboards/preonic/keymaps/that_canadian/keymap.c
@@ -135,20 +135,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
135}; 135};
136 136
137#ifdef AUDIO_ENABLE 137#ifdef AUDIO_ENABLE
138float tone_startup[][2] = {
139 {NOTE_B5, 20},
140 {NOTE_B6, 8},
141 {NOTE_DS6, 20},
142 {NOTE_B6, 8}
143};
144
145float tone_qwerty[][2] = SONG(QWERTY_SOUND); 138float tone_qwerty[][2] = SONG(QWERTY_SOUND);
146float tone_dvorak[][2] = SONG(DVORAK_SOUND); 139float tone_dvorak[][2] = SONG(DVORAK_SOUND);
147float tone_colemak[][2] = SONG(COLEMAK_SOUND); 140float tone_colemak[][2] = SONG(COLEMAK_SOUND);
148
149float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
150
151float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
152#endif 141#endif
153 142
154void persistant_default_layer_set(uint16_t default_layer) { 143void persistant_default_layer_set(uint16_t default_layer) {
@@ -201,36 +190,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
201 } 190 }
202 return true; 191 return true;
203}; 192};
204
205void matrix_init_user(void) {
206 #ifdef AUDIO_ENABLE
207 startup_user();
208 #endif
209}
210
211#ifdef AUDIO_ENABLE
212
213void startup_user(void)
214{
215 _delay_ms(20); // gets rid of tick
216 PLAY_SONG(tone_startup);
217}
218
219void shutdown_user(void)
220{
221 PLAY_SONG(tone_goodbye);
222 _delay_ms(150);
223 stop_all_notes();
224}
225
226void music_on_user(void)
227{
228 music_scale_user();
229}
230
231void music_scale_user(void)
232{
233 PLAY_SONG(music_scale);
234}
235
236#endif
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
index ae5f44e713..ba6c402526 100644
--- a/keyboards/preonic/keymaps/zach/zach_common_functions.c
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -52,7 +52,6 @@ enum my_keycodes{
52 52
53#ifdef AUDIO_ENABLE 53#ifdef AUDIO_ENABLE
54#include "audio.h" 54#include "audio.h"
55float tone_startup[][2] = SONG(STARTUP_SOUND);
56float tone_goodbye[][2] = SONG(GOODBYE_SOUND); 55float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
57float tone_colemak[][2] = SONG(COLEMAK_SOUND); 56float tone_colemak[][2] = SONG(COLEMAK_SOUND);
58float tone_swcole[][2] = SONG(QWERTY_SOUND); 57float tone_swcole[][2] = SONG(QWERTY_SOUND);
@@ -414,32 +413,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
414 return true; 413 return true;
415}; 414};
416 415
417void matrix_init_user(void){ // Run once at startup
418 #ifdef AUDIO_ENABLE
419 _delay_ms(50); // gets rid of tick
420 PLAY_SONG(tone_startup);
421 #endif
422}
423
424#ifdef AUDIO_ENABLE
425void play_goodbye_tone(void){
426 PLAY_SONG(tone_goodbye);
427 _delay_ms(150);
428}
429
430void shutdown_user(void){
431 PLAY_SONG(tone_goodbye);
432 _delay_ms(150);
433 stop_all_notes();
434}
435
436void music_on_user(void){ // Run when the music layer is turned on
437 PLAY_SONG(tone_startup);
438}
439
440void music_off_user(void){ // Run when music is turned off
441 PLAY_SONG(tone_goodbye);
442}
443#endif
444 416
445#endif 417#endif
diff --git a/layouts/community/numpad_5x6/bjohnson/keymap.c b/layouts/community/numpad_5x6/bjohnson/keymap.c
index 63b358f226..49713df2c3 100644
--- a/layouts/community/numpad_5x6/bjohnson/keymap.c
+++ b/layouts/community/numpad_5x6/bjohnson/keymap.c
@@ -44,10 +44,11 @@ bool led_update_user(led_t led_state) {
44 return false; 44 return false;
45} 45}
46 46
47void shutdown_user (void) { 47bool shutdown_user(bool jump_to_bootloader) {
48 #ifdef RGBLIGHT_ENABLE 48 #ifdef RGBLIGHT_ENABLE
49 rgblight_enable_noeeprom(); 49 rgblight_enable_noeeprom();
50 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 50 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
51 rgblight_setrgb(RGB_RED); 51 rgblight_setrgb(RGB_RED);
52 #endif // RGBLIGHT_ENABLE 52 #endif // RGBLIGHT_ENABLE
53 return false;
53} 54}
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 86c6768729..6639dc2291 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -172,7 +172,7 @@ __attribute__((weak)) void post_process_record_kb(uint16_t keycode, keyrecord_t
172 172
173__attribute__((weak)) void post_process_record_user(uint16_t keycode, keyrecord_t *record) {} 173__attribute__((weak)) void post_process_record_user(uint16_t keycode, keyrecord_t *record) {}
174 174
175void shutdown_quantum(void) { 175void shutdown_quantum(bool jump_to_bootloader) {
176 clear_keyboard(); 176 clear_keyboard();
177#if defined(MIDI_ENABLE) && defined(MIDI_BASIC) 177#if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
178 process_midi_all_notes_off(); 178 process_midi_all_notes_off();
@@ -183,12 +183,12 @@ void shutdown_quantum(void) {
183# endif 183# endif
184 uint16_t timer_start = timer_read(); 184 uint16_t timer_start = timer_read();
185 PLAY_SONG(goodbye_song); 185 PLAY_SONG(goodbye_song);
186 shutdown_user(); 186 shutdown_kb(jump_to_bootloader);
187 while (timer_elapsed(timer_start) < 250) 187 while (timer_elapsed(timer_start) < 250)
188 wait_ms(1); 188 wait_ms(1);
189 stop_all_notes(); 189 stop_all_notes();
190#else 190#else
191 shutdown_user(); 191 shutdown_kb(jump_to_bootloader);
192 wait_ms(250); 192 wait_ms(250);
193#endif 193#endif
194#ifdef HAPTIC_ENABLE 194#ifdef HAPTIC_ENABLE
@@ -197,12 +197,12 @@ void shutdown_quantum(void) {
197} 197}
198 198
199void reset_keyboard(void) { 199void reset_keyboard(void) {
200 shutdown_quantum(); 200 shutdown_quantum(true);
201 bootloader_jump(); 201 bootloader_jump();
202} 202}
203 203
204void soft_reset_keyboard(void) { 204void soft_reset_keyboard(void) {
205 shutdown_quantum(); 205 shutdown_quantum(false);
206 mcu_reset(); 206 mcu_reset();
207} 207}
208 208
@@ -491,9 +491,16 @@ void set_single_persistent_default_layer(uint8_t default_layer) {
491// Override these functions in your keymap file to play different tunes on 491// Override these functions in your keymap file to play different tunes on
492// different events such as startup and bootloader jump 492// different events such as startup and bootloader jump
493 493
494__attribute__((weak)) void startup_user(void) {} 494__attribute__((weak)) bool shutdown_user(bool jump_to_bootloader) {
495 return true;
496}
495 497
496__attribute__((weak)) void shutdown_user(void) {} 498__attribute__((weak)) bool shutdown_kb(bool jump_to_bootloader) {
499 if (!shutdown_user(jump_to_bootloader)) {
500 return false;
501 }
502 return true;
503}
497 504
498void suspend_power_down_quantum(void) { 505void suspend_power_down_quantum(void) {
499 suspend_power_down_kb(); 506 suspend_power_down_kb();
diff --git a/quantum/quantum.h b/quantum/quantum.h
index e41542e4af..996e93a12f 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -255,8 +255,8 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record);
255void reset_keyboard(void); 255void reset_keyboard(void);
256void soft_reset_keyboard(void); 256void soft_reset_keyboard(void);
257 257
258void startup_user(void); 258bool shutdown_kb(bool jump_to_bootloader);
259void shutdown_user(void); 259bool shutdown_user(bool jump_to_bootloader);
260 260
261void register_code16(uint16_t code); 261void register_code16(uint16_t code);
262void unregister_code16(uint16_t code); 262void unregister_code16(uint16_t code);
diff --git a/users/brandonschlack/brandonschlack.c b/users/brandonschlack/brandonschlack.c
index 6a9c04a73d..bcf3ebcb80 100644
--- a/users/brandonschlack/brandonschlack.c
+++ b/users/brandonschlack/brandonschlack.c
@@ -68,7 +68,7 @@ void shutdown_keymap(void) {}
68 * If RGBs enabled, 68 * If RGBs enabled,
69 * then set RGB color to Red 69 * then set RGB color to Red
70 */ 70 */
71void shutdown_user (void) { 71bool shutdown_user(bool jump_to_bootloader) {
72#ifdef RGBLIGHT_ENABLE 72#ifdef RGBLIGHT_ENABLE
73 rgblight_enable_noeeprom(); 73 rgblight_enable_noeeprom();
74 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 74 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
@@ -78,6 +78,7 @@ void shutdown_user (void) {
78 rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 ); 78 rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
79#endif //RGB_MATRIX_ENABLE 79#endif //RGB_MATRIX_ENABLE
80 shutdown_keymap(); 80 shutdown_keymap();
81 return false;
81} 82}
82 83
83__attribute__ ((weak)) 84__attribute__ ((weak))
diff --git a/users/curry/curry.c b/users/curry/curry.c
index f29b9c3ff7..aae7377a87 100644
--- a/users/curry/curry.c
+++ b/users/curry/curry.c
@@ -54,7 +54,7 @@ __attribute__((weak)) void shutdown_keymap(void) {}
54void rgb_matrix_update_pwm_buffers(void); 54void rgb_matrix_update_pwm_buffers(void);
55 55
56// On RESET, set all RGB to red, shutdown the keymap. 56// On RESET, set all RGB to red, shutdown the keymap.
57void shutdown_user(void) { 57bool shutdown_user(bool jump_to_bootloader) {
58#if defined(RGBLIGHT_ENABLE) 58#if defined(RGBLIGHT_ENABLE)
59 rgblight_enable_noeeprom(); 59 rgblight_enable_noeeprom();
60 rgblight_mode_noeeprom(1); 60 rgblight_mode_noeeprom(1);
@@ -66,6 +66,7 @@ void shutdown_user(void) {
66 rgb_matrix_update_pwm_buffers(); 66 rgb_matrix_update_pwm_buffers();
67#endif 67#endif
68 shutdown_keymap(); 68 shutdown_keymap();
69 return false;
69} 70}
70 71
71__attribute__((weak)) void suspend_power_down_keymap(void) {} 72__attribute__((weak)) void suspend_power_down_keymap(void) {}
diff --git a/users/drashna/callbacks.c b/users/drashna/callbacks.c
index cab7e5278f..2ace2ff9e6 100644
--- a/users/drashna/callbacks.c
+++ b/users/drashna/callbacks.c
@@ -73,8 +73,13 @@ void keyboard_post_init_user(void) {
73void rgb_matrix_update_pwm_buffers(void); 73void rgb_matrix_update_pwm_buffers(void);
74#endif 74#endif
75 75
76__attribute__((weak)) void shutdown_keymap(void) {} 76__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) {
77void shutdown_user(void) { 77 return true;
78}
79bool shutdown_user(bool jump_to_bootloader) {
80 if (!shutdown_keymap(jump_to_bootloader)) {
81 return false;
82 }
78#ifdef RGBLIGHT_ENABLE 83#ifdef RGBLIGHT_ENABLE
79 rgblight_enable_noeeprom(); 84 rgblight_enable_noeeprom();
80 rgblight_mode_noeeprom(1); 85 rgblight_mode_noeeprom(1);
@@ -87,8 +92,7 @@ void shutdown_user(void) {
87#ifdef OLED_ENABLE 92#ifdef OLED_ENABLE
88 oled_off(); 93 oled_off();
89#endif 94#endif
90 95 return true;
91 shutdown_keymap();
92} 96}
93 97
94__attribute__((weak)) void suspend_power_down_keymap(void) {} 98__attribute__((weak)) void suspend_power_down_keymap(void) {}
@@ -268,11 +272,6 @@ void matrix_slave_scan_user(void) {
268 272
269__attribute__((weak)) void housekeeping_task_keymap(void) {} 273__attribute__((weak)) void housekeeping_task_keymap(void) {}
270void housekeeping_task_user(void) { 274void housekeeping_task_user(void) {
271 static bool has_ran_yet;
272 if (!has_ran_yet) {
273 has_ran_yet = true;
274 startup_user();
275 }
276#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. 275#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
277 run_diablo_macro_check(); 276 run_diablo_macro_check();
278#endif // TAP_DANCE_ENABLE 277#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/callbacks.h b/users/drashna/callbacks.h
index d3d260378d..77c0403f82 100644
--- a/users/drashna/callbacks.h
+++ b/users/drashna/callbacks.h
@@ -7,7 +7,7 @@
7 7
8void keyboard_post_init_keymap(void); 8void keyboard_post_init_keymap(void);
9void matrix_init_secret(void); 9void matrix_init_secret(void);
10void shutdown_keymap(void); 10bool shutdown_keymap(bool jump_to_bootloader);
11void suspend_power_down_keymap(void); 11void suspend_power_down_keymap(void);
12void suspend_wakeup_init_keymap(void); 12void suspend_wakeup_init_keymap(void);
13void matrix_scan_keymap(void); 13void matrix_scan_keymap(void);
diff --git a/users/drashna/callbacks.md b/users/drashna/callbacks.md
index e23f7f6d86..8ef2707fc2 100644
--- a/users/drashna/callbacks.md
+++ b/users/drashna/callbacks.md
@@ -53,9 +53,14 @@ void suspend_wakeup_init_user(void) {
53} 53}
54 54
55 55
56__attribute__ ((weak)) void shutdown_keymap(void) {} 56__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) {
57void shutdown_user (void) { 57 return true;
58 shutdown_keymap(); 58}
59bool shutdown_user(bool jump_to_bootloader) {
60 if (!shutdown_keymap(jump_to_bootloader)) {
61 return false;
62 }
63 return true;
59} 64}
60 65
61__attribute__ ((weak)) void eeconfig_init_keymap(void) {} 66__attribute__ ((weak)) void eeconfig_init_keymap(void) {}
diff --git a/users/drashna/template.c b/users/drashna/template.c
index c032bd1ce3..300cdbc934 100644
--- a/users/drashna/template.c
+++ b/users/drashna/template.c
@@ -55,16 +55,3 @@ void suspend_wakeup_init_user(void) {
55 wait_ms(10); 55 wait_ms(10);
56#endif 56#endif
57} 57}
58
59__attribute__((weak)) void startup_keymap(void) {}
60
61void startup_user(void) {
62#ifdef RGBLIGHT_ENABLE
63 matrix_init_rgb();
64#endif // RGBLIGHT_ENABLE
65 startup_keymap();
66}
67
68__attribute__((weak)) void shutdown_keymap(void) {}
69
70void shutdown_user(void) { shutdown_keymap(); }
diff --git a/users/jjerrell/jjerrell.c b/users/jjerrell/jjerrell.c
index 47aa9bc042..e061977ab6 100644
--- a/users/jjerrell/jjerrell.c
+++ b/users/jjerrell/jjerrell.c
@@ -1,18 +1,18 @@
1/** 1/**
2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> 2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3 * 3 *
4 * This file is part of qmk_firmware. 4 * This file is part of qmk_firmware.
5 * 5 *
6 * qmk_firmware is free software: you can redistribute it and/or modify 6 * qmk_firmware is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or 8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version. 9 * (at your option) any later version.
10 * 10 *
11 * qmk_firmware is distributed in the hope that it will be useful, 11 * qmk_firmware is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details. 14 * GNU General Public License for more details.
15 * 15 *
16 * You should have received a copy of the GNU General Public License 16 * You should have received a copy of the GNU General Public License
17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. 17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18 */ 18 */
@@ -114,12 +114,16 @@ void startup_user(void)
114 startup_keymap(); 114 startup_keymap();
115} 115}
116 116
117__attribute__((weak)) void shutdown_keymap(void) {} 117__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) {
118void shutdown_user(void) 118 return true;
119{ 119}
120bool shutdown_user(bool jump_to_bootloader) {
121 if (!shutdown_keymap(jump_to_bootloader)) {
122 return false;
123 }
120 wait_ms(TAP_CODE_DELAY); 124 wait_ms(TAP_CODE_DELAY);
121 stop_all_notes(); 125 stop_all_notes();
122 shutdown_keymap(); 126 return true;
123} 127}
124 128
125__attribute__((weak)) void music_on_keymap(void) {} 129__attribute__((weak)) void music_on_keymap(void) {}
diff --git a/users/jjerrell/jjerrell.h b/users/jjerrell/jjerrell.h
index 92b95ccc01..a5488b28ab 100644
--- a/users/jjerrell/jjerrell.h
+++ b/users/jjerrell/jjerrell.h
@@ -1,18 +1,18 @@
1/** 1/**
2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> 2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3 * 3 *
4 * This file is part of qmk_firmware. 4 * This file is part of qmk_firmware.
5 * 5 *
6 * qmk_firmware is free software: you can redistribute it and/or modify 6 * qmk_firmware is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or 8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version. 9 * (at your option) any later version.
10 * 10 *
11 * qmk_firmware is distributed in the hope that it will be useful, 11 * qmk_firmware is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details. 14 * GNU General Public License for more details.
15 * 15 *
16 * You should have received a copy of the GNU General Public License 16 * You should have received a copy of the GNU General Public License
17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. 17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18 */ 18 */
@@ -30,7 +30,7 @@
30 30
31/************************* Userspace Layers ************************* 31/************************* Userspace Layers *************************
32 * Keymaps can define additional layers by making the first case 32 * Keymaps can define additional layers by making the first case
33 * equal to `LAYER_SAFE_RANGE` 33 * equal to `LAYER_SAFE_RANGE`
34 ********************************************************************/ 34 ********************************************************************/
35enum userspace_layers { 35enum userspace_layers {
36 _WORKMAN, 36 _WORKMAN,
@@ -49,5 +49,5 @@ void dip_switch_update_keymap(uint8_t index, bool active);
49bool music_mask_keymap(uint16_t keycode); 49bool music_mask_keymap(uint16_t keycode);
50layer_state_t default_layer_state_set_keymap(layer_state_t state); 50layer_state_t default_layer_state_set_keymap(layer_state_t state);
51void startup_keymap(void); 51void startup_keymap(void);
52void shutdown_keymap(void); 52bool shutdown_keymap(bool jump_to_bootloader);
53void music_on_keymap(void); 53void music_on_keymap(void);
diff --git a/users/kuchosauronad0/kuchosauronad0.c b/users/kuchosauronad0/kuchosauronad0.c
index 2c63eadfd1..3fc66d809b 100644
--- a/users/kuchosauronad0/kuchosauronad0.c
+++ b/users/kuchosauronad0/kuchosauronad0.c
@@ -62,11 +62,14 @@ void keyboard_post_init_user(void){
62 keyboard_post_init_keymap(); 62 keyboard_post_init_keymap();
63} 63}
64 64
65__attribute__ ((weak)) 65__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) {
66void shutdown_keymap(void) {} 66 return true;
67 67}
68void shutdown_user (void) { 68bool shutdown_user(bool jump_to_bootloader) {
69 #ifdef RGBLIGHT_ENABLE 69 if (!shutdown_keymap(jump_to_bootloader)) {
70 return false;
71 }
72 #ifdef RGBLIGHT_ENABLE
70 rgblight_enable_noeeprom(); 73 rgblight_enable_noeeprom();
71 rgblight_mode_noeeprom(1); 74 rgblight_mode_noeeprom(1);
72 rgblight_setrgb(RGB_TEAL); 75 rgblight_setrgb(RGB_TEAL);
@@ -76,7 +79,7 @@ void shutdown_user (void) {
76 // rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 ); 79 // rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
77 // while(timer_elapsed(timer_start) < 250) { wait_ms(1); } 80 // while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
78 #endif //RGB_MATRIX_ENABLE 81 #endif //RGB_MATRIX_ENABLE
79 shutdown_keymap(); 82 return true;
80} 83}
81 84
82__attribute__ ((weak)) 85__attribute__ ((weak))
diff --git a/users/kuchosauronad0/kuchosauronad0.h b/users/kuchosauronad0/kuchosauronad0.h
index 5cbd517d67..244c3cbf55 100644
--- a/users/kuchosauronad0/kuchosauronad0.h
+++ b/users/kuchosauronad0/kuchosauronad0.h
@@ -61,7 +61,7 @@ bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed);
61bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); 61bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
62bool send_game_macro(const char *str, keyrecord_t *record, bool override); 62bool send_game_macro(const char *str, keyrecord_t *record, bool override);
63void matrix_init_keymap(void); 63void matrix_init_keymap(void);
64void shutdown_keymap(void); 64bool shutdown_keymap(bool jump_to_bootloader);
65void suspend_power_down_keymap(void); 65void suspend_power_down_keymap(void);
66void suspend_wakeup_init_keymap(void); 66void suspend_wakeup_init_keymap(void);
67void matrix_scan_keymap(void); 67void matrix_scan_keymap(void);
diff --git a/users/spidey3/init.c b/users/spidey3/init.c
index bd6ea5cac9..15789b3958 100644
--- a/users/spidey3/init.c
+++ b/users/spidey3/init.c
@@ -17,5 +17,8 @@ void eeconfig_init_user(void) {
17} 17}
18 18
19#ifdef RGBLIGHT_ENABLE 19#ifdef RGBLIGHT_ENABLE
20void shutdown_user(void) { shutdown_user_rgb(); } 20bool shutdown_user(bool jump_to_bootloader) {
21 shutdown_user_rgb();
22 return true;
23}
21#endif 24#endif