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)
36 #define AP_MSGR ALLM(KC_M)
39 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41 * the base of the keyboard.
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 * `--------------------' `----------------------'
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
69 ,TG(BEGIN) ,TG(QWERTY)
71 ,KC_BSPC ,KC_LSFT ,TG(SYSCTL)
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
81 ,AP_MSGR ,KC_ENT ,KC_SPC
85 * a beginner's keymap i currently use.
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 * ,-------------. ,-------------.
100 * ,------|------|------| |------+--------+------.
102 * | | |------| |------| | |
104 * `--------------------' `----------------------'
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
115 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
125 ,KC_TRNS ,KC_TRNS ,KC_TRNS
129 * the default qwerty keymap. not really used, but i'll keep it here for now.
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 * ,-------------. ,-------------.
144 * ,------|------|------| |------+--------+------.
146 * | | |------| |------| | |
148 * `--------------------' `----------------------'
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
159 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
169 ,KC_TRNS ,KC_TRNS ,KC_TRNS
173 * the keymap i would like to transition to.
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 * ,-------------. ,-------------.
188 * ,------|------|------| |------+------+------.
190 * | | |------| |------| | |
192 * `--------------------' `--------------------'
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
203 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
213 ,KC_TRNS ,KC_TRNS ,KC_TRNS
218 * a keymap to control my system.
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 * ,-------------. ,-------------.
233 * ,------|------|------| |------+------+------.
234 * | | | | | |Left |Right |
235 * | | |------| |------| Click| Click|
237 * `--------------------' `--------------------'
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
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
262 * keymap template with transparent and non-transparent keys
264 * ,--------------------------------------------------. ,--------------------------------------------------.
265 * | | | | | | | | | | | | | | | |
266 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
267 * | | | | | | | | | | | | | | | |
268 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
269 * | | | | | | |------| |------| | | | | | |
270 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
271 * | | | | | | | | | | | | | | | |
272 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
273 * | | | | | | | | | | | |
274 * `----------------------------------' `----------------------------------'
275 * ,-------------. ,-------------.
277 * ,------|------|------| |------+--------+------.
279 * | | |------| |------| | |
281 * `--------------------' `----------------------'
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
293 ,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 ,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
303 ,KC_TRNS ,KC_TRNS ,KC_TRNS
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
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
329 // keyboard initialization
330 void 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);
337 for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
338 ergodox_led_all_set(i);
341 ergodox_led_all_off();
345 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
350 if (record->event.pressed) {
351 mousekey_on(KC_MS_UP);
352 mousekey_on(KC_MS_LEFT);
354 mousekey_off(KC_MS_UP);
355 mousekey_off(KC_MS_LEFT);
359 if (record->event.pressed) {
360 mousekey_on(KC_MS_UP);
361 mousekey_on(KC_MS_RIGHT);
363 mousekey_off(KC_MS_UP);
364 mousekey_off(KC_MS_RIGHT);
368 if (record->event.pressed) {
369 mousekey_on(KC_MS_DOWN);
370 mousekey_on(KC_MS_LEFT);
372 mousekey_off(KC_MS_DOWN);
373 mousekey_off(KC_MS_LEFT);
377 if (record->event.pressed) {
378 mousekey_on(KC_MS_DOWN);
379 mousekey_on(KC_MS_RIGHT);
381 mousekey_off(KC_MS_DOWN);
382 mousekey_off(KC_MS_RIGHT);
391 // flash keyboard on 4x tap, with leds
392 void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
393 switch (state->count) {
395 ergodox_right_led_3_on();
398 ergodox_right_led_2_on();
401 ergodox_right_led_1_on();
404 ergodox_right_led_3_off();
406 ergodox_right_led_2_off();
408 ergodox_right_led_1_off();
413 void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
414 if (state->count >= 4) {
416 reset_tap_dance(state);
420 void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
421 ergodox_right_led_1_off();
423 ergodox_right_led_2_off();
425 ergodox_right_led_3_off();
428 qk_tap_dance_action_t tap_dance_actions[] = {
429 [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),