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