Diff
1diff --git a/keyboards/capsunlocked/cu75/cu75.c b/keyboards/capsunlocked/cu75/cu75.c
2index 42d5f4e29079d18baa57f8581444c4890db7b7d3..155b8958fc4308b3141ad0686720acb4a4c84607 100644
3--- a/keyboards/capsunlocked/cu75/cu75.c
4+++ b/keyboards/capsunlocked/cu75/cu75.c
5@@ -54,17 +54,19 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
6 if (click_toggle && record->event.pressed){
7 click(click_hz, click_time);
8 }
9- if (keycode == QK_BOOT) {
10- reset_keyboard_kb();
11- }
12 return process_record_user(keycode, record);
13 }
14
15-void reset_keyboard_kb(void){
16+bool shutdown_kb(bool jump_to_bootloader) {
17 #ifdef WATCHDOG_ENABLE
18+ // Unconditionally run so shutdown_user can't mess up watchdog
19 MCUSR = 0;
20 wdt_disable();
21 wdt_reset();
22 #endif
23- reset_keyboard();
24+
25+ if (!shutdown_user(jump_to_bootloader)) {
26+ return false;
27+ }
28+ return true;
29 }
30diff --git a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c
31deleted file mode 100644
32index ee8d8b2e7307dba8b0b735cd09c768b3fa4db523..0000000000000000000000000000000000000000
33--- a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c
34+++ /dev/null
35@@ -1,19 +0,0 @@
36-#include "lfk65_hs.h"
37-#include <avr/wdt.h>
38-
39-bool process_record_kb(uint16_t keycode, keyrecord_t* record)
40-{
41- if (keycode == QK_BOOT) {
42- reset_keyboard_kb();
43- }
44- return process_record_user(keycode, record);
45-}
46-
47-void reset_keyboard_kb(void){
48-#ifdef WATCHDOG_ENABLE
49- MCUSR = 0;
50- wdt_disable();
51- wdt_reset();
52-#endif
53- reset_keyboard();
54-}
55diff --git a/keyboards/lfkeyboards/lfk78/lfk78.c b/keyboards/lfkeyboards/lfk78/lfk78.c
56index 3f6cb61263bf5c9dbe6bf508b0e12ddb376ac824..6fe282bb0b594966e3fea37e2f6c04642ef8df30 100644
57--- a/keyboards/lfkeyboards/lfk78/lfk78.c
58+++ b/keyboards/lfkeyboards/lfk78/lfk78.c
59@@ -43,20 +43,19 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
60 if (click_toggle && record->event.pressed) {
61 clicking_notes(click_hz, click_time);
62 }
63-
64- if (keycode == QK_BOOT) {
65- reset_keyboard_kb();
66- }
67-
68 return process_record_user(keycode, record);
69 }
70
71-void reset_keyboard_kb(void) {
72+bool shutdown_kb(bool jump_to_bootloader) {
73 #ifdef WATCHDOG_ENABLE
74+ // Unconditionally run so shutdown_user can't mess up watchdog
75 MCUSR = 0;
76 wdt_disable();
77 wdt_reset();
78 #endif
79
80- reset_keyboard();
81+ if (!shutdown_user(jump_to_bootloader)) {
82+ return false;
83+ }
84+ return true;
85 }
86diff --git a/keyboards/lfkeyboards/lfk87/lfk87.c b/keyboards/lfkeyboards/lfk87/lfk87.c
87index e6288eb6c139e57c9266860d6514eec639da0598..ff0a0381145ffdcb04a085515805a655051b01b0 100644
88--- a/keyboards/lfkeyboards/lfk87/lfk87.c
89+++ b/keyboards/lfkeyboards/lfk87/lfk87.c
90@@ -45,17 +45,19 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
91 if (click_toggle && record->event.pressed){
92 clicking_notes(click_hz, click_time);
93 }
94- if (keycode == QK_BOOT) {
95- reset_keyboard_kb();
96- }
97 return process_record_user(keycode, record);
98 }
99
100-void reset_keyboard_kb(void){
101+bool shutdown_kb(bool jump_to_bootloader) {
102 #ifdef WATCHDOG_ENABLE
103+ // Unconditionally run so shutdown_user can't mess up watchdog
104 MCUSR = 0;
105 wdt_disable();
106 wdt_reset();
107 #endif
108- reset_keyboard();
109+
110+ if (!shutdown_user(jump_to_bootloader)) {
111+ return false;
112+ }
113+ return true;
114 }
115diff --git a/keyboards/lfkeyboards/mini1800/mini1800.c b/keyboards/lfkeyboards/mini1800/mini1800.c
116index 96dc56c03c32b786595ba3b83106e27c8c5e7b4a..1d07ea7b0d2c7c4c21599a9c7f73056f600b4b28 100644
117--- a/keyboards/lfkeyboards/mini1800/mini1800.c
118+++ b/keyboards/lfkeyboards/mini1800/mini1800.c
119@@ -47,17 +47,19 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
120 if (click_toggle && record->event.pressed){
121 click(click_hz, click_time);
122 }
123- if (keycode == QK_BOOT) {
124- reset_keyboard_kb();
125- }
126 return process_record_user(keycode, record);
127 }
128
129-void reset_keyboard_kb(void){
130+bool shutdown_kb(bool jump_to_bootloader) {
131 #ifdef WATCHDOG_ENABLE
132+ // Unconditionally run so shutdown_user can't mess up watchdog
133 MCUSR = 0;
134 wdt_disable();
135 wdt_reset();
136 #endif
137- reset_keyboard();
138+
139+ if (!shutdown_user(jump_to_bootloader)) {
140+ return false;
141+ }
142+ return true;
143 }
144diff --git a/keyboards/lfkeyboards/smk65/revb/revb.c b/keyboards/lfkeyboards/smk65/revb/revb.c
145index c183ae1b0207a16223595f32531f570ae66d31a3..970a4d3a10bee85c7dac26f38a9e79414fef574e 100644
146--- a/keyboards/lfkeyboards/smk65/revb/revb.c
147+++ b/keyboards/lfkeyboards/smk65/revb/revb.c
148@@ -61,17 +61,19 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
149 if (click_toggle && record->event.pressed){
150 click(click_hz, click_time);
151 }
152- if (keycode == QK_BOOT) {
153- reset_keyboard_kb();
154- }
155 return process_record_user(keycode, record);
156 }
157
158-void reset_keyboard_kb(void){
159+bool shutdown_kb(bool jump_to_bootloader) {
160 #ifdef WATCHDOG_ENABLE
161+ // Unconditionally run so shutdown_user can't mess up watchdog
162 MCUSR = 0;
163 wdt_disable();
164 wdt_reset();
165 #endif
166- reset_keyboard();
167+
168+ if (!shutdown_user(jump_to_bootloader)) {
169+ return false;
170+ }
171+ return true;
172 }
173diff --git a/keyboards/nullbitsco/tidbit/tidbit.c b/keyboards/nullbitsco/tidbit/tidbit.c
174index 15bc0f6a7ac2893461a0e5322c07a8a35a495496..0ccdda01d8f61f32f2d8ae5c57ba7d4678d5089c 100644
175--- a/keyboards/nullbitsco/tidbit/tidbit.c
176+++ b/keyboards/nullbitsco/tidbit/tidbit.c
177@@ -92,22 +92,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
178 numlock_set = true;
179 }
180
181- switch (keycode) {
182- case QK_BOOT:
183- if (record->event.pressed) {
184- set_bitc_LED(LED_DIM);
185- rgblight_disable_noeeprom();
186- #ifdef OLED_ENABLE
187- oled_off();
188- #endif
189- bootloader_jump(); // jump to bootloader
190- }
191- return false;
192-
193- default:
194- break;
195- }
196-
197 return true;
198 }
199
200@@ -121,3 +105,16 @@ void matrix_scan_kb(void) {
201 matrix_scan_remote_kb();
202 matrix_scan_user();
203 }
204+
205+bool shutdown_kb(bool jump_to_bootloader) {
206+ if (!shutdown_user(jump_to_bootloader)) {
207+ return false;
208+ }
209+
210+ set_bitc_LED(LED_DIM);
211+ rgblight_disable_noeeprom();
212+#ifdef OLED_ENABLE
213+ oled_off();
214+#endif
215+ return true;
216+}
217diff --git a/keyboards/snes_macropad/snes_macropad.c b/keyboards/snes_macropad/snes_macropad.c
218index 74fa434fb2aa5a56388398a19f5fe9fb1db33c83..97e942e0267c0fc57d4106b5b4872a2e4cdc099a 100644
219--- a/keyboards/snes_macropad/snes_macropad.c
220+++ b/keyboards/snes_macropad/snes_macropad.c
221@@ -92,9 +92,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
222 if (record->event.pressed) {
223 set_keylog(keycode, record);
224 }
225- if (keycode == QK_BOOT) {
226- setupForFlashing();
227- }
228 return process_record_user(keycode, record);
229 }
230
231@@ -104,3 +101,11 @@ void keyboard_post_init_kb(void) {
232 rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
233 keyboard_post_init_user();
234 }
235+
236+bool shutdown_kb(bool jump_to_bootloader) {
237+ if (!shutdown_user(jump_to_bootloader)) {
238+ return false;
239+ }
240+ setupForFlashing();
241+ return true;
242+}
243diff --git a/keyboards/woodkeys/meira/meira.c b/keyboards/woodkeys/meira/meira.c
244index 2141c171c885fb93d6962ca9ead2785eaf86206a..6cb7affcb367bd5a2655070d27d38bfb4d36b016 100644
245--- a/keyboards/woodkeys/meira/meira.c
246+++ b/keyboards/woodkeys/meira/meira.c
247@@ -15,11 +15,7 @@
248 */
249 #include "meira.h"
250
251-void matrix_init_kb(void)
252-{
253- debug_enable=true;
254- print("meira matrix_init_kb\n");
255-
256+void matrix_init_kb(void) {
257 #ifdef WATCHDOG_ENABLE
258 // This is done after turning the layer LED red, if we're caught in a loop
259 // we should get a flashing red light
260@@ -37,21 +33,16 @@ void housekeeping_task_kb(void) {
261 #endif
262 }
263
264-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
265- // Test code that turns on the switch led for the key that is pressed
266- // set_backlight_by_keymap(record->event.key.col, record->event.key.row);
267- if (keycode == QK_BOOT) {
268- reset_keyboard_kb();
269- }
270- return process_record_user(keycode, record);
271-}
272-
273-void reset_keyboard_kb(void){
274+bool shutdown_kb(bool jump_to_bootloader) {
275 #ifdef WATCHDOG_ENABLE
276+ // Unconditionally run so shutdown_user can't mess up watchdog
277 MCUSR = 0;
278 wdt_disable();
279 wdt_reset();
280 #endif
281- xprintf("programming!\n");
282- reset_keyboard();
283+
284+ if (!shutdown_user(jump_to_bootloader)) {
285+ return false;
286+ }
287+ return true;
288 }