1 // pvinis' ergodox keymap
6 // easier name for left ctrl-alt-gui
7 #define ALLM(kc) LCAG(kc)
29 TD_FLSH, // flash keyboard
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)
38 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
40 * the base of the keyboard.
42 * ,--------------------------------------------------. ,--------------------------------------------------.
43 * |4x FLASH| | | | | | | | | | | | | | |
44 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
45 * | | | | | | | | | | | | | | | |
46 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
47 * | | | | | | |------| |------| | | | | | |
48 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
49 * | | | | | | | | | | | | | | | |
50 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
51 * | | | | | | | | | | | |
52 * `----------------------------------' `----------------------------------'
53 * ,-------------. ,-------------.
54 * |BEGIN |QWERTY| |SYSCTL| |
55 * ,------|------|------| |------+--------+------.
56 * | | |CARPAL| |Slack | | |
57 * |Backsp|LShift|------| |------| Enter |Space |
58 * | | |SYSCTL| |Xcode | | |
59 * `--------------------' `----------------------'
62 TD(TD_FLSH) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
63 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
64 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
65 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
66 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
68 ,TG(BEGIN) ,TG(QWERTY)
70 ,KC_BSPC ,KC_LSFT ,TG(SYSCTL)
72 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
73 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
74 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
75 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
76 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
80 ,AP_XCOD ,KC_ENT ,KC_SPC
84 * a beginner's keymap i currently use.
86 * ,--------------------------------------------------. ,--------------------------------------------------.
87 * | | 1 | 2 | 3 | 4 | 5 | 6 | | 6 | 7 | 8 | 9 | 0 | - | = |
88 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
89 * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
90 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
91 * |Esc/Ctrl| A | S | D | F | G |------| |------| H | J | K | L | ; | Enter |
92 * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
93 * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
94 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
95 * | | ` | Cmd | | Cmd | | | | | ' | |
96 * `----------------------------------' `----------------------------------'
97 * ,-------------. ,-------------.
99 * ,------|------|------| |------+--------+------.
101 * | | |------| |------| | |
103 * `--------------------' `----------------------'
106 KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6
107 ,KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC
108 ,CTL_T(KC_ESC) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
109 ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LPRN
110 ,KC_TRNS ,KC_GRV ,KC_LGUI ,KC_LEFT ,KC_RIGHT
114 ,KC_TRNS ,KC_TRNS ,KC_TRNS
116 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL
117 ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS
118 ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT
119 ,KC_RPRN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT
120 ,KC_UP ,KC_DOWN ,KC_TRNS ,KC_QUOT ,KC_TRNS
124 ,KC_TRNS ,KC_TRNS ,KC_TRNS
128 * the default qwerty keymap. not really used, but i'll keep it here for now.
130 * ,--------------------------------------------------. ,--------------------------------------------------.
131 * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
132 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
133 * | | Q | W | E | R | T | | | | Y | U | I | O | P | |
134 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
135 * | | A | S | D | F | G |------| |------| H | J | K | L | ; | |
136 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
137 * | | Z | X | C | V | B | | | | N | M | , | . | / | |
138 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
139 * | | | | | | | | | | | |
140 * `----------------------------------' `----------------------------------'
141 * ,-------------. ,-------------.
143 * ,------|------|------| |------+--------+------.
145 * | | |------| |------| | |
147 * `--------------------' `----------------------'
150 KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_TRNS
151 ,KC_TRNS ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_TRNS
152 ,KC_TRNS ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
153 ,KC_TRNS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_TRNS
154 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
158 ,KC_TRNS ,KC_TRNS ,KC_TRNS
160 ,KC_TRNS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_TRNS
161 ,KC_TRNS ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_TRNS
162 ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_TRNS
163 ,KC_TRNS ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_TRNS
164 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
168 ,KC_TRNS ,KC_TRNS ,KC_TRNS
172 * the keymap i would like to transition to.
174 * ,--------------------------------------------------. ,--------------------------------------------------.
175 * | | 1 | 2 | 3 | 4 | 5 | | | RIGHT| 6 | 7 | 8 | 9 | 0 | |
176 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
177 * | | Q | G | M | L | W | | | L1 | Y | F | U | B | ; | |
178 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
179 * | | D | S | T | N | R |------| |------| I | A | E | O | H | |
180 * |--------+------+------+------+------+------| | | Meh |------+------+------+------+------+--------|
181 * | | Z | X | C | V | J | | | | K | P | , | . | / | |
182 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
183 * | | | | | | | Up | | | | |
184 * `----------------------------------' `----------------------------------'
185 * ,-------------. ,-------------.
187 * ,------|------|------| |------+------+------.
189 * | | |------| |------| | |
191 * `--------------------' `--------------------'
194 KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_TRNS
195 ,KC_TRNS ,KC_Q ,KC_G ,KC_M ,KC_L ,KC_W ,KC_TRNS
196 ,KC_TRNS ,KC_D ,KC_S ,KC_T ,KC_N ,KC_R
197 ,KC_TRNS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_J ,KC_TRNS
198 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
202 ,KC_TRNS ,KC_TRNS ,KC_TRNS
204 ,KC_TRNS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_TRNS
205 ,KC_TRNS ,KC_Y ,KC_F ,KC_U ,KC_B ,KC_SCLN ,KC_TRNS
206 ,KC_I ,KC_A ,KC_E ,KC_O ,KC_H ,KC_TRNS
207 ,KC_TRNS ,KC_K ,KC_P ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_TRNS
208 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
212 ,KC_TRNS ,KC_TRNS ,KC_TRNS
217 * a keymap to control my system.
219 * ,--------------------------------------------------. ,--------------------------------------------------.
220 * | | | | | | | | | | | | Mute |VolDn |VolUp | |
221 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
222 * | | | | | | | | | | |MsUpL | MsUp |MsUpR | | |
223 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
224 * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | Lock |
225 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
226 * | | | | | | | | | | |MsDnL | MsDn | | | Sleep |
227 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
228 * | | | | | | | | | | | Power|
229 * `----------------------------------' `----------------------------------'
230 * ,-------------. ,-------------.
232 * ,------|------|------| |------+------+------.
233 * | | | | | |Left |Right |
234 * | | |------| |------| Click| Click|
236 * `--------------------' `--------------------'
239 KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
240 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
241 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
242 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
243 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
249 /*,KC_POP*/,KC_NO ,KC_NO ,KC_NO ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_NO
250 /*,KC_PTRN*/,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
251 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LCTL(LSFT(KC_PWR))
252 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_SLEP
253 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR
261 * keymap template with transparent and non-transparent keys
263 * ,--------------------------------------------------. ,--------------------------------------------------.
264 * | | | | | | | | | | | | | | | |
265 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
266 * | | | | | | | | | | | | | | | |
267 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
268 * | | | | | | |------| |------| | | | | | |
269 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
270 * | | | | | | | | | | | | | | | |
271 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
272 * | | | | | | | | | | | |
273 * `----------------------------------' `----------------------------------'
274 * ,-------------. ,-------------.
276 * ,------|------|------| |------+--------+------.
278 * | | |------| |------| | |
280 * `--------------------' `----------------------'
284 KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
285 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
286 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
287 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
288 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
292 ,KC_TRNS ,KC_TRNS ,KC_TRNS
294 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
295 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
296 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
297 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
298 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
302 ,KC_TRNS ,KC_TRNS ,KC_TRNS
305 KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
306 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
307 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
308 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
309 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
315 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
316 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
317 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
318 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
319 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
328 // keyboard initialization
329 void matrix_init_user() {
330 ergodox_led_all_on();
331 for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
332 ergodox_led_all_set(i);
336 for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
337 ergodox_led_all_set(i);
340 ergodox_led_all_off();
344 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
349 if (record->event.pressed) {
350 mousekey_on(KC_MS_UP);
351 mousekey_on(KC_MS_LEFT);
353 mousekey_off(KC_MS_UP);
354 mousekey_off(KC_MS_LEFT);
358 if (record->event.pressed) {
359 mousekey_on(KC_MS_UP);
360 mousekey_on(KC_MS_RIGHT);
362 mousekey_off(KC_MS_UP);
363 mousekey_off(KC_MS_RIGHT);
367 if (record->event.pressed) {
368 mousekey_on(KC_MS_DOWN);
369 mousekey_on(KC_MS_LEFT);
371 mousekey_off(KC_MS_DOWN);
372 mousekey_off(KC_MS_LEFT);
376 if (record->event.pressed) {
377 mousekey_on(KC_MS_DOWN);
378 mousekey_on(KC_MS_RIGHT);
380 mousekey_off(KC_MS_DOWN);
381 mousekey_off(KC_MS_RIGHT);
390 // flash keyboard on 4x tap, with leds
391 void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
392 switch (state->count) {
394 ergodox_right_led_3_on();
397 ergodox_right_led_2_on();
400 ergodox_right_led_1_on();
403 ergodox_right_led_3_off();
405 ergodox_right_led_2_off();
407 ergodox_right_led_1_off();
412 void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
413 if (state->count >= 4) {
415 reset_tap_dance(state);
419 void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
420 ergodox_right_led_1_off();
422 ergodox_right_led_2_off();
424 ergodox_right_led_3_off();
427 qk_tap_dance_action_t tap_dance_actions[] = {
428 [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),