aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/ergodox/keymaps/pvinis/Changelog.md7
-rw-r--r--keyboards/ergodox/keymaps/pvinis/Makefile9
-rw-r--r--keyboards/ergodox/keymaps/pvinis/Readme.md65
-rw-r--r--keyboards/ergodox/keymaps/pvinis/keymap.c430
4 files changed, 511 insertions, 0 deletions
diff --git a/keyboards/ergodox/keymaps/pvinis/Changelog.md b/keyboards/ergodox/keymaps/pvinis/Changelog.md
new file mode 100644
index 000000000..e5816200b
--- /dev/null
+++ b/keyboards/ergodox/keymaps/pvinis/Changelog.md
@@ -0,0 +1,7 @@
1## v0.3
2
3*2016-10-11*
4
5### Starting point
6
7* The starting point of this keymap. A beginner layout, and a couple placeholders.
diff --git a/keyboards/ergodox/keymaps/pvinis/Makefile b/keyboards/ergodox/keymaps/pvinis/Makefile
new file mode 100644
index 000000000..7ceb51ce4
--- /dev/null
+++ b/keyboards/ergodox/keymaps/pvinis/Makefile
@@ -0,0 +1,9 @@
1CONSOLE_ENABLE = no # for debugging
2
3SLEEP_LED_ENABLE = no # no led blinking while sleeping
4NKRO_ENABLE = yes # disable for windows
5TAP_DANCE_ENABLE = yes # tap-tap-tap
6
7ifndef QUANTUM_DIR
8 include ../../../../Makefile
9endif
diff --git a/keyboards/ergodox/keymaps/pvinis/Readme.md b/keyboards/ergodox/keymaps/pvinis/Readme.md
new file mode 100644
index 000000000..2a4a0c8f3
--- /dev/null
+++ b/keyboards/ergodox/keymaps/pvinis/Readme.md
@@ -0,0 +1,65 @@
1pvinis' keymap
2==============
3
4This is a getting-used-to keymap for the [ErgoDox EZ][ez]. It's very much a work in progress.
5
6[ez]: https://ergodox-ez.com/
7
8## Table of Contents
9
10* [Todo](#todo)
11* [Layouts](#layouts)
12 - [Base layer](#base-layer)
13 - [Beginner layer](#beginner-layer)
14 - [QWERTY layer](#qwerty-layer)
15 - [CARPALX layer](#carpalx-layer)
16 - [System Control layer](#system-control-layer)
17 - [Template layers](#template-layers)
18* [Building](#building)
19
20# Todo
21
22- [ ] Generate images from keymap
23- [ ] Implement algernon's heatmap
24- [ ] Implement `KC_POP`
25
26# Layouts
27
28## Base layer
29
30This is the base layer that contains the common buttons of all keymaps. Right now, it has the top left button as a `flash` button when it's tapped 4 times, and the two thumb islands. The islands contain the `space` and `enter` keys on the right, the `backspace` and `shift` on the left, and all the 1x1 keys are just layer switches.
31Every time I connect the keyboard, I press the `BEGIN` layer switch, and then start typing.
32Recently, I added a few application "shortcuts", that basically call `ctrl`+`alt`+`cmd`+`<key>`, and `<key>` is `S` for Slack, `X` for Xcode, `M` for Messenger. Using [Hammerspoon][hammerspoon], I show/hide the application.
33
34[hammerspoon]: http://www.hammerspoon.org/
35
36## Beginner layer
37
38This is a basic keymap I use right now until I'm comfortable typing on the Ergodox. Currently uses a QWERTY layout, and the `([{}])` on the middle keys. Not a perfect layout, and its going to go away at some point, but for now thats my daily driver.
39
40## QWERTY layer
41
42This is basically the same as the `BEGIN` layer, but it might go away. I'm not using it, but I should have a QWERTY layout on the keyboard, in case someone else wants to try it out, or if I completely forget how keyboards work! At some point, this and the `BEGIN` layer will become one.
43
44## CARPALX layer
45
46This is here as a placeholder. I want to transition to [Carpalx QGMLWY][carpalx] or [White][white] at some point. They both look very interesting and more comfortable to type on, but after I'm confident with typing on the Ergodox.
47
48[carpalx]: http://mkweb.bcgsc.ca/carpalx/?full_optimization
49[white]: https://github.com/mw8/white_keyboard_layout
50
51## System Control layer
52
53This one is a layer that, in time, will have controls like mouse movement, volume up/down, mute, sleep, restart, shutdown, etc.
54
55## Template layers
56
57I have two commented out layers that are just templates, so I can easily create a new layer.
58
59# Building
60
61```
62$ git clone https://github.com/jackhumbert/qmk_firmware.git
63$ cd qmk_firmware/keyboards/ergodox/keymaps/pvinis
64$ make
65```
diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c
new file mode 100644
index 000000000..df906201a
--- /dev/null
+++ b/keyboards/ergodox/keymaps/pvinis/keymap.c
@@ -0,0 +1,430 @@
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
10enum {
11 BASE = 0,
12 BEGIN,
13 QWERTY,
14 CARPALX,
15 SYSCTL,
16};
17
18// extra keys
19enum {
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
39const 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
330void 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
345const 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
392void 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
413void 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
420void 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
428qk_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};