2 #include "action_layer.h"
5 #define _CMD 0 // Base Colemak Mod-DH
6 #define _QW 1 // Base QWERTY
7 #define _CG 2 // Colemak Mod-DH gaming layer
8 #define _QG 3 // QWERTY gaming layer
9 #define _NM 4 // Number layer
10 #define _MD 5 // Media Layer
11 #define _KP 6 // KP layer
12 #define _LY 7 // Layer switcher
13 #define _FN 8 // Function layer
14 #define _FN2 9 // Function layer (identical as _FN; used to deal with minor key interaction issue)
16 #define _______ KC_TRNS
19 //Tap Dance Declarations
25 qk_tap_dance_action_t tap_dance_actions[] = {
26 [LPN_LBC] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC),
27 [RPN_RBC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC)
32 Function Keys on All Layers (Keypad toggles):
33 ,-----------------------------------------------------------------.
34 | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 |
35 `-----------------------------------------------------------------'
36 ,---------------------------------------------------------------- --------------.
37 | F9 | F10 | F11 | F12 | PScr | SLck | Paus | Keypad | Layer/ |
38 | | | | | | | | | RESET (in Fn layer) |
39 `-------------------------------------------------------------------------------'
42 ,-------------------------------------------.,-------------------------------------------.
43 | = | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | - |
44 |--------+------+------+------+------+------||------+------+------+------+------+--------|
45 | Tab | Q | W | F | P | B || J | L | U | Y | ; | \ |
46 |--------+------+------+------+------+------||------+------+------+------+------+--------|
47 | Ctl/Esc| A | R | S | T | G || M | N | E | I | O | ' |
48 |--------+------+------+------+------+------||------+------+------+------+------+--------|
49 | ( [ | Z | X | C | D | V || K | H | , | . | / | ) ] |
50 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
51 | ` | | [ | ] | | Left | Down | Up | Right|
52 `---------------------------' `---------------------------'
53 ,--------------.,--------------.
54 |Ctl/Esc| LAlt || RAlt | RCtl |
55 ,------|-------|------||------+-------+-------.
56 | | Enter |Number|| RGUI | Delete| |
57 | Space| / |------||------| / | Bspc |
58 | /Fn | LShift| Bspc || Media| RShift| /Fn |
59 `---------------------'`----------------------'
63 ,-------------------------------------------.,-------------------------------------------.
64 | = | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | - |
65 |--------+------+------+------+------+------||------+------+------+------+------+--------|
66 | Tab | Q | W | E | R | T || Y | U | I | O | P | \ |
67 |--------+------+------+------+------+------||------+------+------+------+------+--------|
68 | Ctl/Esc| A | S | D | F | G || H | J | K | L | ; | ' |
69 |--------+------+------+------+------+------||------+------+------+------+------+--------|
70 | ( [ | Z | X | C | V | B || N | M | , | . | / | ) ] |
71 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
72 | ` | | [ | ] | | Left | Down | Up | Right|
73 `---------------------------' `---------------------------'
74 ,--------------.,--------------.
75 |Ctl/Esc| LAlt || RAlt | RCtl |
76 ,------|-------|------||------+-------+-------.
77 | | Enter |Number|| RGUI | Delete| |
78 | Space| / |------||------| / | Bspc |
79 | /Fn | LShift| Bspc || Media| RShift| /Fn |
80 `---------------------'`----------------------'
83 Colemak Mod-DH Gaming layer:
84 ,-------------------------------------------.,-------------------------------------------.
85 | = | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | - |
86 |--------+------+------+------+------+------||------+------+------+------+------+--------|
87 | Tab | Q | W | F | P | B || J | L | U | Y | ; | \ |
88 |--------+------+------+------+------+------||------+------+------+------+------+--------|
89 | Ctl/Esc| A | R | S | T | G || M | N | E | I | O | ' |
90 |--------+------+------+------+------+------||------+------+------+------+------+--------|
91 | LShift | Z | X | C | D | V || K | H | , | . | / | RShift |
92 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
93 | ` | | [ | ] | | Left | Down | Up | Right|
94 `---------------------------' `---------------------------'
95 ,--------------.,--------------.
96 |Ctl/Esc| LAlt || RAlt | RCtl |
97 ,------|-------|------||------+-------+-------.
98 | | Enter |Number|| RGUI | Delete| |
99 | Space| / |------||------| / | Bspc |
100 | | LShift| Bspc || Media| RShift| |
101 `---------------------'`----------------------'
105 ,-------------------------------------------.,-------------------------------------------.
106 | = | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | - |
107 |--------+------+------+------+------+------||------+------+------+------+------+--------|
108 | Tab | Q | W | E | R | T || Y | U | I | O | P | \ |
109 |--------+------+------+------+------+------||------+------+------+------+------+--------|
110 | Ctl/Esc| A | S | D | F | G || H | J | K | L | ; | ' |
111 |--------+------+------+------+------+------||------+------+------+------+------+--------|
112 | LShift | Z | X | C | V | B || N | M | , | . | / | RShift |
113 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
114 | ` | | [ | ] | | Left | Down | Up | Right|
115 `---------------------------' `---------------------------'
116 ,--------------.,--------------.
117 |Ctl/Esc| LAlt || RAlt | RCtl |
118 ,------|-------|------||------+-------+-------.
119 | | Enter |Number|| RGUI | Delete| |
120 | Space| / |------||------| / | Bspc |
121 | | LShift| Bspc || Media| RShift| |
122 `---------------------'`----------------------'
126 ,-------------------------------------------.,-------------------------------------------.
127 | | | | | | || | | | | | |
128 |--------+------+------+------+------+------||------+------+------+------+------+--------|
129 | | | | | | || | | | | | |
130 |--------+------+------+------+------+------||------+------+------+------+------+--------|
131 | | | Mute | Vol- | Vol+ | || | | | | | |
132 |--------+------+------+------+------+------||------+------+------+------+------+--------|
133 | | | Prev | Play | Next | Stop || | | | | | |
134 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
136 `---------------------------' `---------------------------'
137 ,-------------.,-------------.
139 ,------|------|------||------+------+------.
141 | | |------||------| | |
143 `--------------------'`--------------------'
146 ,-------------------------------------------.,-------------------------------------------.
147 | | | | | | || | | KP = | KP / | KP * | |
148 |--------+------+------+------+------+------||------+------+------+------+------+--------|
149 | | | | Up | | || | KP 7 | KP 8 | KP 9 | KP - | |
150 |--------+------+------+------+------+------||------+------+------+------+------+--------|
151 | | | Left | Down | Right| || | KP 4 | KP 5 | KP 6 | KP + | |
152 |--------+------+------+------+------+------||------+------+------+------+------+--------|
153 | | | | | | || | KP 1 | KP 2 | KP 3 |KP Ent| |
154 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
155 | | INS | | | | | | KP . |KP Ent|
156 `---------------------------' `---------------------------'
157 ,-------------.,-------------.
159 ,------|------|------||------+------+------.
161 | | |------||------| | KP 0 |
163 `--------------------'`--------------------'
166 ,-------------------------------------------.,-------------------------------------------.
167 | |Col DH|QWERTY|Col GM|QW GM | || | | | | | |
168 |--------+------+------+------+------+------||------+------+------+------+------+--------|
169 | | | | | | || | | | | | |
170 |--------+------+------+------+------+------||------+------+------+------+------+--------|
171 | | | | | | || | | | | | |
172 |--------+------+------+------+------+------||------+------+------+------+------+--------|
173 | | | | | | || | | | | | |
174 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
176 `---------------------------' `---------------------------'
177 ,-------------.,-------------.
179 ,------|------|------||------+------+------.
181 | | |------||------| | |
183 `--------------------'`--------------------'
186 ,-------------------------------------------.,-------------------------------------------.
187 | F11 | F1 | F2 | F3 | F4 | F5 || F6 | F7 | F8 | F9 | F10 | F12 |
188 |--------+------+------+------+------+------||------+------+------+------+------+--------|
189 | | | | Up | | || | Home | Up | End | | |
190 |--------+------+------+------+------+------||------+------+------+------+------+--------|
191 | | | Left | Down | Right| || PgUp | Right| Down | Left | | |
192 |--------+------+------+------+------+------||------+------+------+------+------+--------|
193 | | | | | | || PgDn | | | | | |
194 `--------+------+------+------+------+------'`------+------+------+------+------+--------'
195 | | INS | | | | | | | |
196 `---------------------------' `---------------------------'
197 ,-------------.,-------------.
199 ,------|------|------||------+------+------.
201 | | |------||------| | |
203 `--------------------'`--------------------'
208 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
212 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
213 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
214 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B,
215 CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_G,
216 TD(LPN_LBC), KC_Z, KC_X, KC_C, KC_D, KC_V,
217 KC_GRV, XXXXXXX, KC_LBRC, KC_RBRC,
220 CTL_T(KC_ESC), KC_LALT,
222 LT(_FN, KC_SPC), LSFT_T(KC_ENT), KC_BSPC,
225 KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KP), MO(_LY),
226 KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
227 KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
228 KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
229 KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, TD(RPN_RBC),
230 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
235 MO(_MD), RSFT_T(KC_DEL), LT(_FN2, KC_BSPC)
240 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
241 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
242 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
243 CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
244 TD(LPN_LBC), KC_Z, KC_X, KC_C, KC_V, KC_B,
245 KC_GRV, XXXXXXX, KC_LBRC, KC_RBRC,
248 CTL_T(KC_ESC), KC_LALT,
250 LT(_FN, KC_SPC), LSFT_T(KC_ENT), KC_BSPC,
253 KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KP), MO(_LY),
254 KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
255 KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
256 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
257 KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(RPN_RBC),
258 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
263 MO(_MD), RSFT_T(KC_DEL), LT(_FN2, KC_BSPC)
269 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
270 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
271 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B,
272 CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_G,
273 KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V,
274 KC_GRV, XXXXXXX, KC_LBRC, KC_RBRC,
277 CTL_T(KC_ESC), KC_LALT,
279 KC_SPC, LSFT_T(KC_ENT), KC_BSPC,
282 KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KP), MO(_LY),
283 KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
284 KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
285 KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
286 KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
287 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
292 MO(_MD), RSFT_T(KC_DEL), KC_BSPC
297 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
298 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
299 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
300 CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
301 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
302 KC_GRV, XXXXXXX, KC_LBRC, KC_RBRC,
305 CTL_T(KC_ESC), KC_LALT,
307 KC_SPC, LSFT_T(KC_ENT), KC_BSPC,
310 KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KP), MO(_LY),
311 KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
312 KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
313 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
314 KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
315 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
320 MO(_MD), RSFT_T(KC_DEL), KC_BSPC
325 _______, _______, _______, _______, _______, _______, _______, _______, _______,
326 _______, _______, _______, _______, _______, _______,
327 _______, _______, _______, _______, _______, _______,
328 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
329 _______, _______, _______, _______, _______, _______,
330 _______, _______, _______, _______,
335 _______, _______, _______,
338 _______, _______, _______, _______, _______, _______, _______, _______, _______,
339 _______, _______, _______, _______, _______, _______,
340 _______, _______, _______, _______, _______, _______,
341 KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
342 _______, _______, _______, _______, _______, _______,
343 _______, _______, _______, _______,
348 _______, _______, _______
353 _______, _______, _______, _______, _______, _______, _______, _______, _______,
354 _______, _______, _______, _______, _______, _______,
355 _______, _______, _______, _______, _______, _______,
356 _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______,
357 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP,
358 _______, _______, _______, _______,
363 _______, _______, _______,
366 _______, _______, _______, _______, _______, _______, _______, _______, _______,
367 _______, _______, _______, _______, _______, _______,
368 _______, _______, _______, _______, _______, _______,
369 _______, _______, _______, _______, _______, _______,
370 _______, _______, _______, _______, _______, _______,
371 _______, _______, _______, _______,
376 _______, _______, _______
381 _______, _______, _______, _______, _______, _______, _______, _______, _______,
382 _______, _______, _______, _______, _______, _______,
383 _______, _______, _______, KC_UP, _______, _______,
384 _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
385 _______, _______, _______, _______, _______, _______,
386 _______, KC_INS, _______, _______,
391 _______, _______, _______,
394 _______, _______, _______, _______, _______, _______, _______, _______, _______,
395 _______, _______, KC_PEQL, KC_PSLS, KC_PAST, _______,
396 _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
397 _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______,
398 _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______,
399 _______, _______, KC_PDOT, KC_PENT,
404 _______, _______, KC_P0
409 _______, _______, _______, _______, _______, _______, _______, _______, _______,
410 _______, DF(_CMD), DF(_QW), DF(_CG), DF(_QG), _______,
411 _______, _______, _______, _______, _______, _______,
412 _______, _______, _______, _______, _______, _______,
413 _______, _______, _______, _______, _______, _______,
414 _______, _______, _______, _______,
419 _______, _______, _______,
422 _______, _______, _______, _______, _______, _______, _______, _______, _______,
423 _______, _______, _______, _______, _______, _______,
424 _______, _______, _______, _______, _______, _______,
425 _______, _______, _______, _______, _______, _______,
426 _______, _______, _______, _______, _______, _______,
427 _______, _______, _______, _______,
432 _______, _______, _______
437 _______, _______, _______, _______, _______, _______, _______, _______, _______,
438 KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
439 _______, _______, _______, KC_UP, _______, _______,
440 _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
441 _______, _______, _______, _______, _______, _______,
442 _______, KC_INS, _______, _______,
447 _______, _______, _______,
450 _______, _______, _______, _______, _______, _______, _______, _______, RESET,
451 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
452 _______, KC_HOME, KC_UP, KC_END, _______, _______,
453 KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
454 KC_PGDN, _______, _______, _______, _______, _______,
455 _______, _______, _______, _______,
460 _______, _______, _______
465 _______, _______, _______, _______, _______, _______, _______, _______, _______,
466 KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
467 _______, _______, _______, KC_UP, _______, _______,
468 _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
469 _______, _______, _______, _______, _______, _______,
470 _______, KC_INS, _______, _______,
475 _______, _______, _______,
478 _______, _______, _______, _______, _______, _______, _______, _______, RESET,
479 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
480 _______, KC_HOME, KC_UP, KC_END, _______, _______,
481 KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
482 KC_PGDN, _______, _______, _______, _______, _______,
483 _______, _______, _______, _______,
488 _______, _______, _______
493 const uint16_t PROGMEM fn_actions[] = {
497 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
499 // MACRODOWN only works in this function
502 if (record->event.pressed) {
503 register_code(KC_RSFT);
505 unregister_code(KC_RSFT);
513 void matrix_init_user(void) {
517 void matrix_scan_user(void) {
521 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
525 void led_set_user(uint8_t usb_led) {