3 #include "action_layer.h"
7 #include "keymap_colemak.h"
9 extern keymap_config_t keymap_config;
18 // Intermediate layers for SuperDuper (Combo keys does not work on Infinity yet)
28 enum ergodox_keycodes {
41 SDTOGG, // Toggle SuperDuper
48 M_GUI_UNDS, // Simulate GUI_T(KC_UNDS)
49 M_SFT_PO, // SFT_T(KC_LPRN)
50 M_SFT_PC, // SFT_T(KC_RPRN)
53 // Timer for custom mod tap
54 static uint16_t m_gui_unds_timer;
55 static uint16_t m_sft_po_timer;
56 static uint16_t m_sft_pc_timer;
58 // Fillers to make layering more clear
59 #define _______ KC_TRNS
62 // Narze : Custom Macros
63 #define HPR_ESC ALL_T(KC_ESC)
64 #define SFT_ENT SFT_T(KC_ENT)
65 #define SFT_PO F(M_SFT_PO)
66 #define SFT_PC F(M_SFT_PC)
67 #define GUI_MINS GUI_T(KC_MINS)
68 #define GUI_UNDS F(M_GUI_UNDS)
70 // Combo : SuperDuper layer from S+D (R+S in Colemak)
71 // #define COMBO_COUNT 1
72 // #define SUPERDUPER_COMBO_COUNT 3
73 // #define EECONFIG_SUPERDUPER_INDEX (uint8_t *) 19
75 // enum process_combo_event {
79 // const uint16_t PROGMEM superduper_combos[SUPERDUPER_COMBO_COUNT][3] = {
80 // [_QWERTY] = {KC_S, KC_D, COMBO_END},
81 // [_COLEMAK] = {KC_R, KC_S, COMBO_END},
82 // [_QWOC] = {CM_S, CM_D, COMBO_END},
85 // combo_t PROGMEM key_combos[COMBO_COUNT] = {
86 // [CB_SUPERDUPER] = COMBO_ACTION(superduper_combos[_QWERTY]),
89 // volatile bool superduper_enabled = true;
91 // const uint16_t empty_combo[] = {COMBO_END};
93 // void set_superduper_key_combos(void);
94 // void clear_superduper_key_combos(void);
96 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
99 * ,--------------------------------------------------. ,--------------------------------------------------.
100 * | ` | 1 | 2 | 3 | 4 | 5 | Mdia | | Mdia | 6 | 7 | 8 | 9 | 0 | - |
101 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
102 * | Tab | Q | W | E | R | T | Symb | | Symb | Y | U | I | O | P | \ |
103 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
104 * | Hp/Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
105 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
106 * | Sft/( | Z/Mo | X | C | V | B | | | | N | M | , | . | SD-/ | Sft/) |
107 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
108 * |Rse/[ | Ctrl | Alt | Gui/_| Lwr | | Rse | GUI/-| Alt | Ctrl | Low/] |
109 * `----------------------------------' `----------------------------------'
110 * ,-------------. ,-------------.
111 * | Enter| LGui | | Alt |Ctrl/Esc|
112 * ,------|------|------| |------+--------+------.
113 * | | | Home | | PgUp | | |
114 * | Space| Back |------| |------| Back |Enter |
115 * | | Space| End | | PgDn | Space | |
116 * `--------------------' `----------------------'
120 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
121 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, LT(_SYMB, KC_NO),
122 HPR_ESC, KC_A, LT(_SUPER, KC_S), LT(_DUPER, KC_D), KC_F, KC_G,
123 SFT_PO, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
124 LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
127 KC_SPC,KC_BSPC,KC_END,
129 LT(_MDIA, KC_NO), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
130 LT(_SYMB, KC_NO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
131 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
132 MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC,
133 RAISE, GUI_MINS,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC),
134 KC_LALT, CTL_T(KC_ESC),
136 KC_PGDN,KC_BSPC, KC_ENT
140 * ,--------------------------------------------------. ,--------------------------------------------------.
141 * | ` | 1 | 2 | 3 | 4 | 5 | Mdia | | Mdia | 6 | 7 | 8 | 9 | 0 | - |
142 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
143 * | Tab | Q | W | F | P | G | Symb | | Symb | J | L | U | Y | ; | \ |
144 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
145 * | Hp/Esc | A | R | S | T | D |------| |------| H | N | E | I | O | ' |
146 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
147 * | Sft/( | Z/Mo | X | C | V | B | | | | K | M | , | . | SD-/ | Sft/) |
148 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
149 * |Rse/[ | Ctrl | Alt | Gui/_| Lwr | | Rse | GUI/-| Alt | Ctrl | Low/] |
150 * `----------------------------------' `----------------------------------'
151 * ,-------------. ,-------------.
152 * | Enter| LGui | | Alt |Ctrl/Esc|
153 * ,------|------|------| |------+--------+------.
154 * | | | Home | | PgUp | | |
155 * | Space| Back |------| |------| Back |Enter |
156 * | | Space| End | | PgDn | Space | |
157 * `--------------------' `----------------------'
161 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
162 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, LT(_SYMB, KC_NO),
163 HPR_ESC, KC_A, LT(_SUPER,KC_R), LT(_DUPER,KC_S), KC_T, KC_D,
164 SFT_PO, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
165 LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
168 KC_SPC,KC_BSPC,KC_END,
170 LT(_MDIA, KC_NO), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
171 LT(_SYMB, KC_NO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
172 KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
173 MEH_T(KC_NO),KC_K, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC,
174 RAISE, GUI_MINS,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC),
175 KC_LALT, CTL_T(KC_ESC),
177 KC_PGDN,KC_BSPC, KC_ENT
179 /* Qwerty on software Colemak : Useful for gaming with qwerty keymaps! */
182 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
183 KC_TAB, CM_Q, CM_W, CM_E, CM_R, CM_T, LT(_SYMB, KC_NO),
184 HPR_ESC, CM_A, LT(_SUPER,CM_S), LT(_DUPER,CM_D), CM_F, CM_G,
185 SFT_PO, LT(_MOUSE, CM_Z), CM_X, CM_C, CM_V, CM_B, ALL_T(KC_NO),
186 LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
189 KC_SPC,KC_BSPC,KC_END,
191 LT(_MDIA, KC_NO), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
192 LT(_SYMB, KC_NO), CM_Y, CM_U, CM_I, CM_O, CM_P, KC_BSLS,
193 CM_H, CM_J, CM_K, CM_L, CM_SCLN, KC_QUOT,
194 MEH_T(KC_NO),CM_N, CM_M, CM_COMM,CM_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC,
195 RAISE, GUI_MINS,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC),
196 KC_LALT, CTL_T(KC_ESC),
198 KC_PGDN,KC_BSPC, KC_ENT
202 * ,--------------------------------------------------. ,--------------------------------------------------.
203 * | | | | | | | | | | | | | | | |
204 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
205 * | | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | |
206 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
207 * | | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | _ | + | { | } | | |
208 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
209 * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | | | |
210 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
211 * | | | | | | | | | | | |
212 * `----------------------------------' `----------------------------------'
213 * ,-------------. ,-------------.
215 * ,------|------|------| |------+------+------.
217 * | | |------| |------| | |
219 * `--------------------' `--------------------'
222 _______, _______, _______, _______, _______, _______, _______,
223 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______,
224 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
225 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
226 _______, _______, _______, KC_BTN1, KC_BTN2,
229 _______, _______, _______,
231 _______, _______, _______, _______, _______, _______, _______,
232 _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
233 KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
234 _______, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, _______, _______,
235 _______, _______, _______, _______, _______,
238 _______, _______, _______
242 * ,--------------------------------------------------. ,--------------------------------------------------.
243 * | | | | | | | | | | | | | | | |
244 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
245 * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
246 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
247 * | | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | - | = | [ | ] | \ |
248 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
249 * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | | | |
250 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
251 * | | | | | | | | | | | |
252 * `----------------------------------' `----------------------------------'
253 * ,-------------. ,-------------.
255 * ,------|------|------| |------+------+------.
257 * | | |------| |------| | |
259 * `--------------------' `--------------------'
262 _______, _______, _______, _______, _______, _______, _______,
263 _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______,
264 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
265 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
266 _______, _______, _______, KC_BTN1, KC_BTN2,
269 _______, _______, _______,
271 _______, _______, _______, _______, _______, _______, _______,
272 _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
273 KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
274 _______, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, _______, _______,
275 _______, _______, _______, _______, _______,
278 _______, _______, _______
283 * ,--------------------------------------------------. ,--------------------------------------------------.
284 * | # | # | # | # | # | # | | | | # | # | # | # | # | # |
285 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
286 * | | # | # | # | # | # | | | | # | # | # | # | # | # |
287 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
288 * | Hp/Esc | S | T | P | H | * |------| |------| * | F | P | L | T | D |
289 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
290 * | Sft/( | S | K | W | R | * | | | | * | R | B | G | S | Z |
291 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
292 * | Exit | | | A | O | | E | U | | | |
293 * `----------------------------------' `----------------------------------'
294 * ,-------------. ,-------------.
295 * | Enter| LGui | | Alt |Ctrl/Esc|
296 * ,------|------|------| |------+--------+------.
297 * | | | Home | | PgUp | | |
298 * | Space| Back |------| |------| Back |Enter |
299 * | | Space| End | | PgDn | Space | |
300 * `--------------------' `----------------------'
304 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
305 XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
306 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T,
307 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX,
308 EXT_PLV, XXXXXXX, XXXXXXX,KC_C, KC_V,
311 KC_SPC,KC_BSPC,KC_END,
313 XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
314 XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
315 KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
316 XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
317 KC_N, KC_M,XXXXXXX,XXXXXXX, XXXXXXX,
318 KC_LALT, CTL_T(KC_ESC),
320 KC_PGDN,KC_BSPC, KC_ENT
323 /* SuperDuper : https://gist.github.com/narze/861e2167784842d38771
325 * ,--------------------------------------------------. ,--------------------------------------------------.
326 * | | | | | | | | | | | | | | | |
327 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
328 * | | | | | | | | | | | | T← | T→ | | |
329 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
330 * | | A | [SuperDuper]| Bksp | Gui |------| |------| ← | ↓ | ↑ | → | Del | |
331 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
332 * | | | | | | | | | | | | | | | |
333 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
334 * | | | | | | | | | | | |
335 * `----------------------------------' `----------------------------------'
336 * ,-------------. ,-------------.
338 * ,------|------|------| |------+--------+------.
340 * | Shift| |------| |------| |Shift |
342 * `--------------------' `----------------------'
344 [_SUPERDUPER] = KEYMAP(
346 _______, _______, _______, _______, _______, _______, _______,
347 _______, _______, _______, _______, _______, _______, _______,
348 _______, KC_LALT, _______, _______, KC_BSPC, KC_LGUI,
349 _______, _______, _______, _______, _______, _______, _______,
350 _______, _______, _______, _______, _______,
353 KC_LSFT,_______,_______,
355 _______, _______, _______, _______, _______, _______, _______,
356 _______, _______, _______, S(LGUI(KC_LBRC)), S(LGUI(KC_RBRC)), _______, _______,
357 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, _______,
358 _______, _______, _______, _______, _______, _______, _______,
359 _______, _______, _______, _______, _______,
362 _______,_______, KC_LSFT
364 // Intermediate keymaps for SuperDuper (Combo keys does not work on Infinity yet)
367 _______, _______, _______, _______, _______, _______, _______,
368 _______, _______, _______, _______, _______, _______, _______,
369 _______, _______, _______, DUPER, _______, _______,
370 _______, _______, _______, _______, _______, _______, _______,
371 _______, _______, _______, _______, _______,
374 _______,_______,_______,
376 _______, _______, _______, _______, _______, _______, _______,
377 _______, _______, _______, _______, _______, _______, _______,
378 _______, _______, _______, _______, _______, _______,
379 _______, _______, _______, _______, _______, _______, _______,
380 _______, _______, _______, _______, _______,
383 _______,_______, _______
387 _______, _______, _______, _______, _______, _______, _______,
388 _______, _______, _______, _______, _______, _______, _______,
389 _______, _______, SUPER, _______, _______, _______,
390 _______, _______, _______, _______, _______, _______, _______,
391 _______, _______, _______, _______, _______,
394 _______,_______,_______,
396 _______, _______, _______, _______, _______, _______, _______,
397 _______, _______, _______, _______, _______, _______, _______,
398 _______, _______, _______, _______, _______, _______,
399 _______, _______, _______, _______, _______, _______, _______,
400 _______, _______, _______, _______, _______,
403 _______,_______, _______
408 * ,--------------------------------------------------. ,--------------------------------------------------.
409 * | | | | | | | | | | | | | | | |
410 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
411 * | | | S↑ | M↑ | S↓ | | | | | | | S↑ | S↓ | | |
412 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
413 * | | | M← | M↓ | M→ | |------| |------| M← | M↓ | M↑ | M→ | | |
414 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
415 * | |[Mouse| | | | M3 | | | | M3 | | | | | |
416 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
417 * | | | | | M2 | | M2 | | | | |
418 * `----------------------------------' `----------------------------------'
419 * ,-------------. ,-------------.
421 * ,------|------|------| |------+--------+------.
423 * | Left | |------| |------| | Left |
424 * | Click| | | | | | Click|
425 * `--------------------' `----------------------'
429 _______, _______, _______, _______, _______, _______, _______,
430 _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
431 _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
432 _______, _______, _______, _______, _______, KC_BTN3, _______,
433 _______, _______, _______, _______, KC_BTN2,
436 KC_BTN1,_______,_______,
438 _______, _______, _______, _______, _______, _______, _______,
439 _______, _______, _______, KC_WH_U, KC_WH_D, _______, _______,
440 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
441 _______, KC_BTN3, _______, _______, _______, _______, _______,
442 KC_BTN2, _______, _______, _______, _______,
445 _______,_______, KC_BTN1
448 /* Adjust (Lower + Raise)
450 * ,--------------------------------------------------. ,--------------------------------------------------.
451 * | | | | | | | | | | | | | | | |
452 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
453 * | |Reset | | | | | | | | | | | | | Del |
454 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
455 * | | | | | |AGnorm|------| |------|AGswap|Qwerty|Colemk|QwOnCo|Plover| |
456 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
457 * | | | | | | | | | |SDTogg| | | | | |
458 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
459 * | | | | | | | | | | | |
460 * `----------------------------------' `----------------------------------'
461 * ,-------------. ,-------------.
463 * ,------|------|------| |------+--------+------.
465 * | | |------| |------| | |
467 * `--------------------' `----------------------'
471 _______, _______, _______, _______, _______, _______, _______,
472 _______, RESET, _______, _______, _______, _______, _______,
473 _______, _______, _______, _______, _______, AG_NORM,
474 _______, _______, _______, _______, _______, _______, _______,
475 _______, _______, _______, _______, _______,
478 _______,_______,_______,
480 _______, _______, _______, _______, _______, _______, _______,
481 _______, _______, _______, _______, _______, _______, KC_DEL,
482 AG_SWAP, QWERTY, COLEMAK, QWOC, PLOVER, _______,
483 _______, SDTOGG, _______, _______, _______, _______, _______,
484 _______, _______, _______, _______, _______,
487 _______,_______, _______
490 /* Layers below are not actively used but kept for future reference */
493 * ,---------------------------------------------------. ,--------------------------------------------------.
494 * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
495 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
496 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
497 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
498 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
499 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
500 * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
501 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
502 * | EPRM | | | | | | | . | 0 | = | |
503 * `-----------------------------------' `----------------------------------'
504 * ,-------------. ,-------------.
505 * |Animat| | |Toggle|Solid |
506 * ,------|------|------| |------+------+------.
507 * |Bright|Bright| | | |Hue- |Hue+ |
508 * |ness- |ness+ |------| |------| | |
510 * `--------------------' `--------------------'
515 VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
516 _______,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,_______,
517 _______,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
518 _______,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,_______,
519 EPRM,_______,_______,_______,_______,
522 RGB_VAD,RGB_VAI,_______,
524 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
525 _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
526 KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______,
527 _______, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______,
528 _______,KC_DOT, KC_0, KC_EQL, _______,
531 _______, RGB_HUD, RGB_HUI
533 /* Media and mouse keys
535 * ,--------------------------------------------------. ,--------------------------------------------------.
536 * | | | | | | | | | | | | | | | |
537 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
538 * | | | | MsUp | | | | | | | | | | | |
539 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
540 * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
541 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
542 * | | | | | | | | | | | | Prev | Next | | |
543 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
544 * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
545 * `----------------------------------' `----------------------------------'
546 * ,-------------. ,-------------.
548 * ,------|------|------| |------+------+------.
549 * | | | | | | |Brwser|
550 * | | |------| |------| |Back |
552 * `--------------------' `--------------------'
556 _______, _______, _______, _______, _______, _______, _______,
557 _______, _______, _______, KC_MS_U, _______, _______, _______,
558 _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
559 _______, _______, _______, _______, _______, _______, _______,
560 _______, _______, _______, KC_BTN1, KC_BTN2,
563 _______, _______, _______,
565 _______, _______, _______, _______, _______, _______, _______,
566 _______, _______, _______, _______, _______, _______, _______,
567 _______, _______, _______, _______, _______, KC_MPLY,
568 _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______,
569 KC_VOLU, KC_VOLD, KC_MUTE, _______, _______,
572 _______, _______, KC_WBAK
576 void persistant_default_layer_set(uint16_t default_layer) {
577 eeconfig_update_default_layer(default_layer);
578 default_layer_set(default_layer);
581 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
584 if (record->event.pressed) {
585 persistant_default_layer_set(1UL<<_QWERTY);
587 // key_combos[CB_SUPERDUPER].keys = superduper_combos[_QWERTY];
588 // eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, _QWERTY);
593 if (record->event.pressed) {
594 persistant_default_layer_set(1UL<<_COLEMAK);
596 // key_combos[CB_SUPERDUPER].keys = superduper_combos[_COLEMAK];
597 // eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, _COLEMAK);
602 if (record->event.pressed) {
603 persistant_default_layer_set(1UL<<_QWOC);
605 // key_combos[CB_SUPERDUPER].keys = superduper_combos[_QWOC];
606 // eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, _QWOC);
611 if (record->event.pressed) {
613 update_tri_layer(_LOWER, _RAISE, _ADJUST);
616 update_tri_layer(_LOWER, _RAISE, _ADJUST);
621 if (record->event.pressed) {
623 update_tri_layer(_LOWER, _RAISE, _ADJUST);
626 update_tri_layer(_LOWER, _RAISE, _ADJUST);
631 if (record->event.pressed) {
633 update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
636 update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
641 if (record->event.pressed) {
643 update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
646 update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
651 if (record->event.pressed) {
652 register_code(KC_RSFT);
653 #ifdef BACKLIGHT_ENABLE
657 unregister_code(KC_RSFT);
662 if (record->event.pressed) {
667 if (!eeconfig_is_enabled()) {
670 keymap_config.raw = eeconfig_read_keymap();
671 keymap_config.nkro = 1;
672 eeconfig_update_keymap(keymap_config.raw);
677 if (record->event.pressed) {
683 if (record->event.pressed) {
684 // superduper_enabled = !superduper_enabled;
686 // if (superduper_enabled) {
687 // set_superduper_key_combos();
689 // clear_superduper_key_combos();
695 if (record->event.pressed) {
701 if (record->event.pressed) {
702 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
707 if (record->event.pressed) {
708 #ifdef RGBLIGHT_ENABLE
718 void matrix_init_user(void) {
722 void matrix_setup(void) {
723 // set_superduper_key_combos();
726 // void set_superduper_key_combos(void) {
727 // uint8_t layer = eeprom_read_byte(EECONFIG_SUPERDUPER_INDEX);
733 // key_combos[CB_SUPERDUPER].keys = superduper_combos[layer];
738 // void clear_superduper_key_combos(void) {
739 // key_combos[CB_SUPERDUPER].keys = empty_combo;
742 void matrix_scan_user(void) {
743 // uint8_t layer = biton32(layer_state);
745 // ergodox_board_led_off();
746 // ergodox_right_led_1_off();
747 // ergodox_right_led_2_off();
748 // ergodox_right_led_3_off();
750 // // TODO: Make this relevant to the ErgoDox EZ.
752 // ergodox_right_led_1_on();
755 // ergodox_right_led_2_on();
765 // void process_combo_event(uint8_t combo_index, bool pressed) {
767 // switch(combo_index) {
768 // case CB_SUPERDUPER:
769 // layer_on(_SUPERDUPER);
770 // ergodox_board_led_on();
774 // layer_off(_SUPERDUPER);
775 // ergodox_board_led_off();
776 // unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them
782 const uint16_t PROGMEM fn_actions[] = {
783 [M_GUI_UNDS] = ACTION_MACRO_TAP(M_GUI_UNDS),
784 [M_SFT_PO] = ACTION_MACRO_TAP(M_SFT_PO),
785 [M_SFT_PC] = ACTION_MACRO_TAP(M_SFT_PC),
788 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
790 bool tap_not_interrupted = record->tap.count > 0 && !record->tap.interrupted;
793 // Hold for LGUI, tap for Underscore
795 if (record->event.pressed) {
796 m_gui_unds_timer = timer_read();
798 if (!tap_not_interrupted) {
799 register_mods(MOD_BIT(KC_LGUI));
802 if (tap_not_interrupted && timer_elapsed(m_gui_unds_timer) < TAPPING_TERM) {
804 add_weak_mods(MOD_BIT(KC_LSFT));
805 send_keyboard_report();
806 register_code(KC_MINS);
807 unregister_code(KC_MINS);
808 del_weak_mods(MOD_BIT(KC_LSFT));
809 send_keyboard_report();
810 record->tap.count = 0; // ad hoc: cancel tap
812 unregister_mods(MOD_BIT(KC_LGUI));
816 // Hold for LSHIFT, tap for Parens open
818 if (record->event.pressed) {
819 m_sft_po_timer = timer_read();
821 if (!tap_not_interrupted) {
822 register_mods(MOD_BIT(KC_LSFT));
825 if (tap_not_interrupted && timer_elapsed(m_sft_po_timer) < TAPPING_TERM) {
826 record->tap.count = 0;
827 return MACRO(D(RSFT), T(9), U(RSFT), END);
829 unregister_mods(MOD_BIT(KC_LSFT));
833 // Hold for RSHIFT, tap for Parens close
835 if (record->event.pressed) {
836 m_sft_pc_timer = timer_read();
838 if (!tap_not_interrupted) {
839 register_mods(MOD_BIT(KC_RSFT));
842 if (tap_not_interrupted && timer_elapsed(m_sft_pc_timer) < TAPPING_TERM) {
843 record->tap.count = 0;
844 return MACRO(D(LSFT), T(0), U(LSFT), END);
846 unregister_mods(MOD_BIT(KC_RSFT));