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