1 // pvinis' ergodox keymap
6 // easier name for left ctrl-alt-gui
7 #define ALLM(kc) LCAG(kc)
24 TD_FLSH, // flash keyboard
25 TD_LAYR, // SYSCTL and MOUSE layer switch
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)
35 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37 * the base of the keyboard.
39 * ,--------------------------------------------------. ,--------------------------------------------------.
40 * |4x FLASH| | | | | | | | | | | | | | |
41 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
42 * | | | | | | | | | | | | | | | |
43 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
44 * | | | | | | |------| |------| | | | | | |
45 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
46 * | | | | | | | | | | | | | | | |
47 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
48 * | | | | | | | | | | | |
49 * `----------------------------------' `----------------------------------'
50 * ,-------------. ,-------------.
51 * |BEGIN |QWERTY| | | |
52 * ,------|------|------| |------+--------+------.
53 * | | |CARPAL| |Slack | | |
54 * |Backsp|LShift|------| |------| Enter |Space |
55 * | | |SYSCTL| |Msngr | | |
56 * `--------------------' `----------------------'
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
65 ,TG(BEGIN) ,TD(TD_LAYR)
67 ,KC_BSPC ,KC_LSFT ,TD(TD_LAYR)
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 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
77 ,AP_MSGR ,KC_ENT ,KC_SPC
81 * a beginner's keymap i currently use.
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 * ,-------------. ,-------------.
96 * ,------|------|------| |------+--------+------.
98 * | | |------| |------| | |
100 * `--------------------' `----------------------'
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
111 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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_UP ,KC_DOWN ,KC_TRNS ,KC_QUOT ,KC_TRNS
121 ,KC_TRNS ,KC_TRNS ,KC_TRNS
125 * the default qwerty keymap. not really used, but i'll keep it here for now.
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 * ,-------------. ,-------------.
140 * ,------|------|------| |------+--------+------.
142 * | | |------| |------| | |
144 * `--------------------' `----------------------'
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
155 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
165 ,KC_TRNS ,KC_TRNS ,KC_TRNS
169 * the keymap i would like to transition to.
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 * ,-------------. ,-------------.
184 * ,------|------|------| |------+------+------.
186 * | | |------| |------| | |
188 * `--------------------' `--------------------'
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
199 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
209 ,KC_TRNS ,KC_TRNS ,KC_TRNS
213 * a keymap to control my system.
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 * ,-------------. ,-------------.
228 * ,------|------|------| |------+------+------.
230 * | | |------| |------| | |
232 * `--------------------' `--------------------'
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
243 ,KC_NO ,KC_NO ,KC_TRNS
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_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR
257 * a keymap to control my system.
259 * ,--------------------------------------------------. ,--------------------------------------------------.
260 * | ^ | | | | | | | | | | | | | | |
261 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
262 * | | | | | | | | | | | | MsUp | | | |
263 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
264 * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | |
265 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
266 * | | | | | | | | | | | | | | | |
267 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
268 * | | | | | | | | | | | |
269 * `----------------------------------' `----------------------------------'
270 * ,-------------. ,-------------.
272 * ,------|------|------| |------+------+------.
273 * | | | | | |Left |Right |
274 * | | |------| |------| Click| Click|
276 * `--------------------' `--------------------'
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
287 ,KC_NO ,KC_NO ,KC_TRNS
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
301 * keymap template with transparent and non-transparent keys
303 * ,--------------------------------------------------. ,--------------------------------------------------.
304 * | | | | | | | | | | | | | | | |
305 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
306 * | | | | | | | | | | | | | | | |
307 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
308 * | | | | | | |------| |------| | | | | | |
309 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
310 * | | | | | | | | | | | | | | | |
311 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
312 * | | | | | | | | | | | |
313 * `----------------------------------' `----------------------------------'
314 * ,-------------. ,-------------.
316 * ,------|------|------| |------+--------+------.
318 * | | |------| |------| | |
320 * `--------------------' `----------------------'
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
332 ,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 ,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
342 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
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
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);
376 for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
377 ergodox_led_all_set(i);
380 ergodox_led_all_off();
383 // light up leds based on the layer
384 void matrix_scan_user(void) {
385 uint8_t layer = biton32(layer_state);
389 ergodox_right_led_3_on();
392 ergodox_right_led_2_on();
395 ergodox_right_led_1_off();
396 ergodox_right_led_2_off();
397 ergodox_right_led_3_off();
403 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
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) {
415 ergodox_right_led_3_on();
418 ergodox_right_led_2_on();
421 ergodox_right_led_1_on();
424 ergodox_right_led_3_off();
426 ergodox_right_led_2_off();
428 ergodox_right_led_1_off();
433 void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
434 if (state->count >= 4) {
436 reset_tap_dance(state);
440 void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
441 ergodox_right_led_1_off();
443 ergodox_right_led_2_off();
445 ergodox_right_led_3_off();
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);
452 switch(state->count) {
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 ),