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