]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox/keymaps/pvinis/keymap.c
init keymap
[qmk_firmware.git] / keyboards / ergodox / keymaps / pvinis / keymap.c
1 // pvinis' ergodox keymap
2
3 #include "ergodox.h"
4 #include "mousekey.h"
5
6 // easier name for left ctrl-alt-gui
7 #define ALLM(kc) LCAG(kc)
8
9 // layers
10 enum {
11   BASE = 0,
12   BEGIN,
13   QWERTY,
14   CARPALX,
15   SYSCTL,
16 };
17
18 // extra keys
19 enum {
20   NONE = 0,
21
22   // mouse
23   MS_UL, // up   left
24   MS_UR, // up   right
25   MS_DL, // down left
26   MS_DR, // down right
27
28   // tap dance
29   TD_FLSH, // flash keyboard
30 };
31
32 // application selection
33 // this is sending ctrl-alt-gui-<key>, and this is picked up by hammerspoon
34 #define AP_SLCK ALLM(KC_S)
35 #define AP_XCOD ALLM(KC_X)
36
37 // keymaps
38 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
39 /* BASE
40  * the base of the keyboard.
41  *
42  * ,--------------------------------------------------.           ,--------------------------------------------------.
43  * |4x FLASH|      |      |      |      |      |      |           |      |      |      |      |      |      |        |
44  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
45  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
46  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
47  * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
48  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
49  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
50  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
51  *   |      |      |      |      |      |                                       |      |      |      |      |      |
52  *   `----------------------------------'                                       `----------------------------------'
53  *                                        ,-------------.       ,-------------.
54  *                                        |BEGIN |QWERTY|       |SYSCTL|      |
55  *                                 ,------|------|------|       |------+--------+------.
56  *                                 |      |      |CARPAL|       |Slack |        |      |
57  *                                 |Backsp|LShift|------|       |------| Enter  |Space |
58  *                                 |      |      |SYSCTL|       |Xcode |        |      |
59  *                                 `--------------------'       `----------------------'
60  */
61 [BASE] = KEYMAP(
62  TD(TD_FLSH)    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
63 ,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
64 ,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
65 ,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
66 ,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
67
68                                                           ,TG(BEGIN)  ,TG(QWERTY)
69                                                                       ,TG(CARPALX)
70                                                   ,KC_BSPC  ,KC_LSFT  ,TG(SYSCTL)
71
72                 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
73                 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
74                           ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
75                 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
76                                   ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
77
78    ,TG(SYSCTL)  ,KC_NO
79    ,AP_SLCK
80    ,AP_XCOD     ,KC_ENT  ,KC_SPC
81 ),
82
83 /* BEGIN
84  * a beginner's keymap i currently use.
85  *
86  * ,--------------------------------------------------.           ,--------------------------------------------------.
87  * |        |   1  |   2  |   3  |   4  |   5  |   6  |           |   6  |   7  |   8  |   9  |   0  |   -  |   =    |
88  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
89  * |  Tab   |   Q  |   W  |   E  |   R  |   T  |   [  |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
90  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
91  * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
92  * |--------+------+------+------+------+------|   (  |           |   )  |------+------+------+------+------+--------|
93  * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
94  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
95  *   |      |   `  |  Cmd |      | Cmd  |                                       |      |      |      |   '  |      |
96  *   `----------------------------------'                                       `----------------------------------'
97  *                                        ,-------------.       ,-------------.
98  *                                        |      |      |       |      |      |
99  *                                 ,------|------|------|       |------+--------+------.
100  *                                 |      |      |      |       |      |        |      |
101  *                                 |      |      |------|       |------|        |      |
102  *                                 |      |      |      |       |      |        |      |
103  *                                 `--------------------'       `----------------------'
104  */
105 [BEGIN] = KEYMAP(
106  KC_TRNS          ,KC_1    ,KC_2     ,KC_3     ,KC_4      ,KC_5    ,KC_6
107 ,KC_TAB           ,KC_Q    ,KC_W     ,KC_E     ,KC_R      ,KC_T    ,KC_LBRC
108 ,CTL_T(KC_ESC)    ,KC_A    ,KC_S     ,KC_D     ,KC_F      ,KC_G
109 ,KC_LSFT          ,KC_Z    ,KC_X     ,KC_C     ,KC_V      ,KC_B    ,KC_LPRN
110 ,KC_TRNS          ,KC_GRV  ,KC_LGUI  ,KC_LEFT  ,KC_RIGHT
111
112                                                                    ,KC_TRNS  ,KC_TRNS
113                                                                              ,KC_TRNS
114                                                          ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
115
116                 ,KC_6       ,KC_7  ,KC_8   ,KC_9     ,KC_0     ,KC_MINS    ,KC_EQL
117                 ,KC_RBRC    ,KC_Y  ,KC_U   ,KC_I     ,KC_O     ,KC_P       ,KC_BSLS
118                             ,KC_H  ,KC_J   ,KC_K     ,KC_L     ,KC_SCLN    ,KC_ENT
119                 ,KC_RPRN    ,KC_N  ,KC_M   ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_RSFT
120                                    ,KC_UP  ,KC_DOWN  ,KC_TRNS  ,KC_QUOT    ,KC_TRNS
121
122       ,KC_TRNS  ,KC_TRNS
123       ,KC_TRNS
124       ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
125 ),
126
127 /* QWERTY
128  * the default qwerty keymap. not really used, but i'll keep it here for now.
129  *
130  * ,--------------------------------------------------.           ,--------------------------------------------------.
131  * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
132  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
133  * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
134  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
135  * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
136  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
137  * |        |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  |        |
138  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
139  *   |      |      |      |      |      |                                       |      |      |      |      |      |
140  *   `----------------------------------'                                       `----------------------------------'
141  *                                        ,-------------.       ,-------------.
142  *                                        |      |      |       |      |      |
143  *                                 ,------|------|------|       |------+--------+------.
144  *                                 |      |      |      |       |      |        |      |
145  *                                 |      |      |------|       |------|        |      |
146  *                                 |      |      |      |       |      |        |      |
147  *                                 `--------------------'       `----------------------'
148  */
149 [QWERTY] = KEYMAP(
150  KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
151 ,KC_TRNS    ,KC_Q     ,KC_W     ,KC_E     ,KC_R     ,KC_T    ,KC_TRNS
152 ,KC_TRNS    ,KC_A     ,KC_S     ,KC_D     ,KC_F     ,KC_G
153 ,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_B    ,KC_TRNS
154 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
155
156                                                              ,KC_TRNS  ,KC_TRNS
157                                                                        ,KC_TRNS
158                                                    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
159
160                 ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
161                 ,KC_TRNS    ,KC_Y  ,KC_U     ,KC_I     ,KC_O     ,KC_P       ,KC_TRNS
162                             ,KC_H  ,KC_J     ,KC_K     ,KC_L     ,KC_SCLN    ,KC_TRNS
163                 ,KC_TRNS    ,KC_N  ,KC_M     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
164                                    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
165
166       ,KC_TRNS  ,KC_TRNS
167       ,KC_TRNS
168       ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
169 ),
170
171 /* CARPALX
172  * the keymap i would like to transition to.
173  *
174  * ,--------------------------------------------------.           ,--------------------------------------------------.
175  * |        |   1  |   2  |   3  |   4  |   5  |      |           | RIGHT|   6  |   7  |   8  |   9  |   0  |        |
176  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
177  * |        |   Q  |   G  |   M  |   L  |   W  |      |           |  L1  |   Y  |   F  |   U  |   B  |   ;  |        |
178  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
179  * |        |   D  |   S  |   T  |   N  |   R  |------|           |------|   I  |   A  |   E  |   O  |   H  |        |
180  * |--------+------+------+------+------+------|      |           | Meh  |------+------+------+------+------+--------|
181  * |        |   Z  |   X  |   C  |   V  |   J  |      |           |      |   K  |   P  |   ,  |   .  |   /  |        |
182  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
183  *   |      |      |      |      |      |                                       |  Up  |      |      |      |      |
184  *   `----------------------------------'                                       `----------------------------------'
185  *                                        ,-------------.       ,-------------.
186  *                                        |      |      |       |      |      |
187  *                                 ,------|------|------|       |------+------+------.
188  *                                 |      |      |      |       |      |      |      |
189  *                                 |      |      |------|       |------|      |      |
190  *                                 |      |      |      |       |      |      |      |
191  *                                 `--------------------'       `--------------------'
192  */
193 [CARPALX] = KEYMAP(
194  KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
195 ,KC_TRNS    ,KC_Q     ,KC_G     ,KC_M     ,KC_L     ,KC_W    ,KC_TRNS
196 ,KC_TRNS    ,KC_D     ,KC_S     ,KC_T     ,KC_N     ,KC_R
197 ,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_J    ,KC_TRNS
198 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
199
200                                                              ,KC_TRNS  ,KC_TRNS
201                                                                        ,KC_TRNS
202                                                    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
203
204                 ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
205                 ,KC_TRNS    ,KC_Y  ,KC_F     ,KC_U     ,KC_B     ,KC_SCLN    ,KC_TRNS
206                             ,KC_I  ,KC_A     ,KC_E     ,KC_O     ,KC_H       ,KC_TRNS
207                 ,KC_TRNS    ,KC_K  ,KC_P     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
208                                    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
209
210       ,KC_TRNS  ,KC_TRNS
211       ,KC_TRNS
212       ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
213 ),
214
215
216 /* SYSCTL
217  * a keymap to control my system.
218  *
219  * ,--------------------------------------------------.           ,--------------------------------------------------.
220  * |        |      |      |      |      |      |      |           |      |      |      | Mute |VolDn |VolUp |        |
221  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
222  * |        |      |      |      |      |      |      |           |      |      |MsUpL | MsUp |MsUpR |      |        |
223  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
224  * |        |      |      |      |      |      |------|           |------|      |MsLeft| MsDn |MsRght|      | Lock   |
225  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
226  * |        |      |      |      |      |      |      |           |      |      |MsDnL | MsDn |      |      | Sleep  |
227  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
228  *   |      |      |      |      |      |                                       |      |      |      |      | Power|
229  *   `----------------------------------'                                       `----------------------------------'
230  *                                        ,-------------.       ,-------------.
231  *                                        |      |      |       |      |MidClk|
232  *                                 ,------|------|------|       |------+------+------.
233  *                                 |      |      |      |       |      |Left  |Right |
234  *                                 |      |      |------|       |------| Click| Click|
235  *                                 |      |      |      |       |      |      |      |
236  *                                 `--------------------'       `--------------------'
237  */
238 [SYSCTL] = KEYMAP(
239  KC_TRNS    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
240 ,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
241 ,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
242 ,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
243 ,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
244
245                                                       ,KC_NO  ,KC_NO
246                                                               ,KC_NO
247                                               ,KC_NO  ,KC_NO  ,KC_NO
248
249        /*,KC_POP*/,KC_NO    ,KC_NO  ,KC_NO  ,KC_MUTE  ,KC_VOLD  ,KC_VOLU    ,KC_NO
250       /*,KC_PTRN*/,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,KC_NO
251                             ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,LCTL(LSFT(KC_PWR))
252                   ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,KC_SLEP
253                                     ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,KC_PWR
254
255           ,KC_NO  ,KC_NO
256           ,KC_NO
257           ,KC_NO  ,KC_NO  ,KC_NO
258 ),
259
260 /* TEMPLATE
261  * keymap template with transparent and non-transparent keys
262  *
263  * ,--------------------------------------------------.           ,--------------------------------------------------.
264  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
265  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
266  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
267  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
268  * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
269  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
270  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
271  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
272  *   |      |      |      |      |      |                                       |      |      |      |      |      |
273  *   `----------------------------------'                                       `----------------------------------'
274  *                                        ,-------------.       ,-------------.
275  *                                        |      |      |       |      |      |
276  *                                 ,------|------|------|       |------+--------+------.
277  *                                 |      |      |      |       |      |        |      |
278  *                                 |      |      |------|       |------|        |      |
279  *                                 |      |      |      |       |      |        |      |
280  *                                 `--------------------'       `----------------------'
281  */
282 /*
283 [TEMPLATE] = KEYMAP(
284  KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
285 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
286 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
287 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
288 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
289
290                                                                 ,KC_TRNS  ,KC_TRNS
291                                                                           ,KC_TRNS
292                                                       ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
293
294                 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
295                 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
296                             ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
297                 ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
298                                       ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
299
300       ,KC_TRNS  ,KC_TRNS
301       ,KC_TRNS
302       ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
303 ),
304 [TEMPLATE] = KEYMAP(
305  KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
306 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
307 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
308 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
309 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
310
311                                                     ,KC_NO  ,KC_NO
312                                                             ,KC_NO
313                                             ,KC_NO  ,KC_NO  ,KC_NO
314
315                 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
316                 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
317                           ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
318                 ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
319                                   ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
320
321         ,KC_NO  ,KC_NO
322         ,KC_NO
323         ,KC_NO  ,KC_NO  ,KC_NO
324 ),
325 */
326 };
327
328 // keyboard initialization
329 void matrix_init_user() {
330   ergodox_led_all_on();
331   for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
332     ergodox_led_all_set(i);
333     _delay_ms(5);
334   }
335   _delay_ms(1000);
336   for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
337     ergodox_led_all_set(i);
338     _delay_ms(10);
339   }
340   ergodox_led_all_off();
341 }
342
343 // extra keys
344 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
345   switch (id) {
346
347     // mouse
348   case MS_UL:
349     if (record->event.pressed) {
350       mousekey_on(KC_MS_UP);
351       mousekey_on(KC_MS_LEFT);
352     } else {
353       mousekey_off(KC_MS_UP);
354       mousekey_off(KC_MS_LEFT);
355     }
356     break;
357   case MS_UR:
358     if (record->event.pressed) {
359       mousekey_on(KC_MS_UP);
360       mousekey_on(KC_MS_RIGHT);
361     } else {
362       mousekey_off(KC_MS_UP);
363       mousekey_off(KC_MS_RIGHT);
364     }
365     break;
366   case MS_DL:
367     if (record->event.pressed) {
368       mousekey_on(KC_MS_DOWN);
369       mousekey_on(KC_MS_LEFT);
370     } else {
371       mousekey_off(KC_MS_DOWN);
372       mousekey_off(KC_MS_LEFT);
373     }
374     break;
375   case MS_DR:
376     if (record->event.pressed) {
377       mousekey_on(KC_MS_DOWN);
378       mousekey_on(KC_MS_RIGHT);
379     } else {
380       mousekey_off(KC_MS_DOWN);
381       mousekey_off(KC_MS_RIGHT);
382     }
383     break;
384   }
385   return MACRO_NONE;
386 }
387
388 // tap dances
389
390 // flash keyboard on 4x tap, with leds
391 void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
392   switch (state->count) {
393   case 1:
394     ergodox_right_led_3_on();
395     break;
396   case 2:
397     ergodox_right_led_2_on();
398     break;
399   case 3:
400     ergodox_right_led_1_on();
401     break;
402   case 4:
403     ergodox_right_led_3_off();
404     _delay_ms(50);
405     ergodox_right_led_2_off();
406     _delay_ms(50);
407     ergodox_right_led_1_off();
408     break;
409   }
410 }
411
412 void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
413   if (state->count >= 4) {
414     reset_keyboard();
415     reset_tap_dance(state);
416   }
417 }
418
419 void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
420   ergodox_right_led_1_off();
421   _delay_ms(50);
422   ergodox_right_led_2_off();
423   _delay_ms(50);
424   ergodox_right_led_3_off();
425 }
426
427 qk_tap_dance_action_t tap_dance_actions[] = {
428   [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
429 };