1 // pvinis' ergodox keymap
6 // easier name for left ctrl-alt-gui
7 #define ALLM(kc) LCAG(kc)
24 TD_FLSH, // flash keyboard
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)
34 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36 * the base of the keyboard.
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 * `--------------------' `----------------------'
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
64 ,TG(BEGIN) ,TG(QWERTY)
66 ,KC_BSPC ,KC_LSFT ,TG(SYSCTL)
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
76 ,AP_MSGR ,KC_ENT ,KC_SPC
80 * a beginner's keymap i currently use.
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 * ,-------------. ,-------------.
95 * ,------|------|------| |------+--------+------.
97 * | | |------| |------| | |
99 * `--------------------' `----------------------'
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
110 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
120 ,KC_TRNS ,KC_TRNS ,KC_TRNS
124 * the default qwerty keymap. not really used, but i'll keep it here for now.
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 * ,-------------. ,-------------.
139 * ,------|------|------| |------+--------+------.
141 * | | |------| |------| | |
143 * `--------------------' `----------------------'
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
154 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
164 ,KC_TRNS ,KC_TRNS ,KC_TRNS
168 * the keymap i would like to transition to.
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 * ,-------------. ,-------------.
183 * ,------|------|------| |------+------+------.
185 * | | |------| |------| | |
187 * `--------------------' `--------------------'
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
198 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
208 ,KC_TRNS ,KC_TRNS ,KC_TRNS
212 * a keymap to control my system.
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 * ,-------------. ,-------------.
227 * ,------|------|------| |------+------+------.
229 * | | |------| |------| | |
231 * `--------------------' `--------------------'
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
242 ,KC_NO ,KC_NO ,KC_TRNS
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
256 * a keymap to control my system.
258 * ,--------------------------------------------------. ,--------------------------------------------------.
259 * | ^ | | | | | | | | | | | | | | |
260 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
261 * | | | | | | | | | | | | MsUp | | | |
262 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
263 * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | |
264 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
265 * | | | | | | | | | | | | | | | |
266 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
267 * | | | | | | | | | | | |
268 * `----------------------------------' `----------------------------------'
269 * ,-------------. ,-------------.
271 * ,------|------|------| |------+------+------.
272 * | | | | | |Left |Right |
273 * | | |------| |------| Click| Click|
275 * `--------------------' `--------------------'
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
286 ,KC_NO ,KC_NO ,KC_TRNS
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
300 * keymap template with transparent and non-transparent keys
302 * ,--------------------------------------------------. ,--------------------------------------------------.
303 * | | | | | | | | | | | | | | | |
304 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
305 * | | | | | | | | | | | | | | | |
306 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
307 * | | | | | | |------| |------| | | | | | |
308 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
309 * | | | | | | | | | | | | | | | |
310 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
311 * | | | | | | | | | | | |
312 * `----------------------------------' `----------------------------------'
313 * ,-------------. ,-------------.
315 * ,------|------|------| |------+--------+------.
317 * | | |------| |------| | |
319 * `--------------------' `----------------------'
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
331 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
341 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
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
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);
375 for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
376 ergodox_led_all_set(i);
379 ergodox_led_all_off();
382 // light up leds based on the layer
383 void matrix_scan_user(void) {
384 uint8_t layer = biton32(layer_state);
388 ergodox_right_led_3_on();
391 ergodox_right_led_2_on();
394 ergodox_right_led_1_off();
395 ergodox_right_led_2_off();
396 ergodox_right_led_3_off();
402 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
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) {
414 ergodox_right_led_3_on();
417 ergodox_right_led_2_on();
420 ergodox_right_led_1_on();
423 ergodox_right_led_3_off();
425 ergodox_right_led_2_off();
427 ergodox_right_led_1_off();
432 void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
433 if (state->count >= 4) {
435 reset_tap_dance(state);
439 void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
440 ergodox_right_led_1_off();
442 ergodox_right_led_2_off();
444 ergodox_right_led_3_off();
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 ),