aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsdothum <sdothum@gmail.com>2018-05-04 21:36:23 -0400
committerDrashna Jaelre <drashna@live.com>2018-05-04 18:36:23 -0700
commit50b5c6ad72682776705b0faf5b8ef87deec5cd6a (patch)
tree68310c4da2741d803ebaf052ba2c22e91faca72b
parent5170398479c9e9ed36ff2966083c50e4808725be (diff)
downloadqmk_firmware-50b5c6ad72682776705b0faf5b8ef87deec5cd6a.tar.gz
qmk_firmware-50b5c6ad72682776705b0faf5b8ef87deec5cd6a.zip
update with qmk master (#2887)
* add splitography * trim keymap.c * add Makefile * rename Makefile to rules.mk * thumb key definition * thumb key definition * thumb key definition * blue/orange layer swap, double qwerty steno exit * fix TxBolt 1-3 key chord suppression (PREVENT_STUCK_MODIFIERS) * add audio control * beakl 8+10, dvorak (standard and splitography wide variant) * beakl 8+10, dvorak (standard and splitography wide variant) * shift layer home blocks * regex layer key changes * tilde align symbol navigation and regex layer * splitography/planck code break out into common .h segments * splitography/planck code break out into common .h segments * splitography common library * splitography common library * splitography beakl altgr home row * updating with qmk master
-rw-r--r--keyboards/planck/keymaps/altgr/beakl.h612
-rw-r--r--keyboards/planck/keymaps/altgr/colemak.h124
-rw-r--r--keyboards/planck/keymaps/altgr/common/chord_layout.h41
-rw-r--r--keyboards/planck/keymaps/altgr/common/init.h56
-rw-r--r--keyboards/planck/keymaps/altgr/common/keycode_functions.h657
-rw-r--r--keyboards/planck/keymaps/altgr/common/number_fkey_layout.h86
-rw-r--r--keyboards/planck/keymaps/altgr/common/number_fkey_layout.save.h86
-rw-r--r--keyboards/planck/keymaps/altgr/common/plover_keybind.h9
-rw-r--r--keyboards/planck/keymaps/altgr/common/sounds.h14
-rw-r--r--keyboards/planck/keymaps/altgr/common/steno_layout.h39
-rw-r--r--keyboards/planck/keymaps/altgr/common/symbol_guifn_layout.h75
-rw-r--r--keyboards/planck/keymaps/altgr/common/tapdance.h49
-rw-r--r--keyboards/planck/keymaps/altgr/common/toggle_layout.h102
-rw-r--r--keyboards/planck/keymaps/altgr/config.h50
-rw-r--r--keyboards/planck/keymaps/altgr/keymap.c490
-rw-r--r--keyboards/planck/keymaps/altgr/private_string.h1
-rw-r--r--keyboards/planck/keymaps/altgr/qwerty.h64
-rw-r--r--keyboards/planck/keymaps/altgr/readme.md10
-rw-r--r--keyboards/planck/keymaps/altgr/rules.mk26
-rw-r--r--keyboards/planck/keymaps/hiea/common/chord_layout.h41
-rw-r--r--keyboards/planck/keymaps/hiea/common/init.h56
-rw-r--r--keyboards/planck/keymaps/hiea/common/keycode_functions.h657
-rw-r--r--keyboards/planck/keymaps/hiea/common/number_fkey_layout.h46
-rw-r--r--keyboards/planck/keymaps/hiea/common/plover_keybind.h9
-rw-r--r--keyboards/planck/keymaps/hiea/common/sounds.h14
-rw-r--r--keyboards/planck/keymaps/hiea/common/steno_layout.h39
-rw-r--r--keyboards/planck/keymaps/hiea/common/symbol_guifn_layout.h40
-rw-r--r--keyboards/planck/keymaps/hiea/common/tapdance.h49
-rw-r--r--keyboards/planck/keymaps/hiea/common/toggle_layout.h102
-rw-r--r--keyboards/planck/keymaps/hiea/config.h50
-rw-r--r--keyboards/planck/keymaps/hiea/hiea.h63
-rw-r--r--keyboards/planck/keymaps/hiea/keymap.c429
-rw-r--r--keyboards/planck/keymaps/hiea/qwerty.h64
-rw-r--r--keyboards/planck/keymaps/hiea/readme.md10
-rw-r--r--keyboards/planck/keymaps/hiea/rules.mk26
-rw-r--r--keyboards/planck/keymaps/hieax/common/chord_layout.h41
-rw-r--r--keyboards/planck/keymaps/hieax/common/init.h56
-rw-r--r--keyboards/planck/keymaps/hieax/common/keycode_functions.h732
-rw-r--r--keyboards/planck/keymaps/hieax/common/number_fkey_layout.h46
-rw-r--r--keyboards/planck/keymaps/hieax/common/plover_keybind.h9
-rw-r--r--keyboards/planck/keymaps/hieax/common/sounds.h14
-rw-r--r--keyboards/planck/keymaps/hieax/common/steno_layout.h39
-rw-r--r--keyboards/planck/keymaps/hieax/common/symbol_guifn_layout.h40
-rw-r--r--keyboards/planck/keymaps/hieax/common/tapdance.h49
-rw-r--r--keyboards/planck/keymaps/hieax/common/toggle_layout.h102
-rw-r--r--keyboards/planck/keymaps/hieax/config.h50
-rw-r--r--keyboards/planck/keymaps/hieax/hiea.h99
-rw-r--r--keyboards/planck/keymaps/hieax/hiea.sync-conflict-20180501-144403-SMV4TP4.h97
-rw-r--r--keyboards/planck/keymaps/hieax/keymap.c446
-rw-r--r--keyboards/planck/keymaps/hieax/readme.md10
-rw-r--r--keyboards/planck/keymaps/hieax/rules.mk26
-rw-r--r--keyboards/planck/keymaps/sdothum/beakl.h551
-rw-r--r--keyboards/planck/keymaps/sdothum/colemak.h125
-rw-r--r--keyboards/planck/keymaps/sdothum/common/chord_layout.h41
-rw-r--r--keyboards/planck/keymaps/sdothum/common/init.h56
-rw-r--r--keyboards/planck/keymaps/sdothum/common/keycode_functions.h656
-rw-r--r--keyboards/planck/keymaps/sdothum/common/number_fkey_layout.h87
-rw-r--r--keyboards/planck/keymaps/sdothum/common/plover_keybind.h7
-rw-r--r--keyboards/planck/keymaps/sdothum/common/sounds.h14
-rw-r--r--keyboards/planck/keymaps/sdothum/common/steno_layout.h39
-rw-r--r--keyboards/planck/keymaps/sdothum/common/symbol_guifn_layout.h75
-rw-r--r--keyboards/planck/keymaps/sdothum/common/tapdance.h49
-rw-r--r--keyboards/planck/keymaps/sdothum/common/toggle_layout.h102
-rw-r--r--keyboards/planck/keymaps/sdothum/config.h50
-rw-r--r--keyboards/planck/keymaps/sdothum/keymap.c480
-rw-r--r--keyboards/planck/keymaps/sdothum/qwerty.h64
-rw-r--r--keyboards/planck/keymaps/sdothum/readme.md10
-rw-r--r--keyboards/planck/keymaps/sdothum/rules.mk26
68 files changed, 8574 insertions, 0 deletions
diff --git a/keyboards/planck/keymaps/altgr/beakl.h b/keyboards/planck/keymaps/altgr/beakl.h
new file mode 100644
index 000000000..a684a6c43
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/beakl.h
@@ -0,0 +1,612 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................... BEAKL EZ
5#ifdef BEAKLEZ
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | ; | , | J | . | X | Caps |^Shift| B | D | M | P | Z |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_Y, KC_O, KC_U, KC_K, CNTR_TL, CNTR_TR, KC_F, KC_G, KC_R, KC_C, KC_V },
18 {KC_H, KC_I, KC_E, HOME_A, TD_QUOT, CNTR_HL, CNTR_HR, KC_L, KC_S, KC_T, KC_N, KC_W },
19 {KC_SCLN, KC_COMM, KC_J, KC_DOT, KC_X, CNTR_BL, CNTR_BR, KC_B, KC_D, KC_M, KC_P, KC_Z },
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
25 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_QUOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
26 {KC_SCLN, KC_COMM, S(KC_J), KC_DOT, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | : | ~ | J | ` | X | Caps |^Shift| B | D | M | P | Z |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
42 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_DQOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
43 {TD_COLN, TD_TILD, S(KC_J), TD_GRV, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
44 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | : | / | J | ? | X | Caps |^Shift| B | D | M | P | Z |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
59 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_DQOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
60 {TD_COLN, KC_SLSH, S(KC_J), KC_QUES, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
61 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
65// ..................................................................... BEAKL 8
66#ifdef BEAKL8
67 // ,-----------------------------------------------------------------------------------.
68 // | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
69 // |------+------+------+------+------+-------------+------+------+------+------+------|
70 // | K | H | E | A | . | ↑Alt | ↑GUI | D | S | T | N | B |
71 // |------+------+------+------+------+------|------+------+------+------+------+------|
72 // | J | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
73 // |------+------+------+------+------+------+------+------+------+------+------+------|
74 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
75 // `-----------------------------------------------------------------------------------'
76
77 [_BASE] = {
78 {KC_Q, KC_Y, KC_O, KC_U, KC_X, CNTR_TL, CNTR_TR, KC_G, KC_C, KC_R, KC_F, KC_Z },
79 {KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_D, KC_S, KC_T, KC_N, KC_B },
80 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
81 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
82 },
83
84 [_SHIFT] = {
85 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
86 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
87 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
88 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
89 },
90
91 // ,-----------------------------------------------------------------------------------.
92 // | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
93 // |------+------+------+------+------+-------------+------+------+------+------+------|
94 // | K | H | E | A | ~ | ↑Alt | ↑GUI | D | S | T | N | B |
95 // |------+------+------+------+------+------|------+------+------+------+------+------|
96 // | J | : | " | I | ` | Caps |^Shift| W | M | L | P | V |
97 // |------+------+------+------+------+------+------+------+------+------+------+------|
98 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
99 // `-----------------------------------------------------------------------------------'
100
101 [_LSHIFT] = {
102 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
103 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), TD_TILD, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
104 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
105 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
106 },
107
108 // ,-----------------------------------------------------------------------------------.
109 // | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
110 // |------+------+------+------+------+-------------+------+------+------+------+------|
111 // | K | H | E | A | ? | ↑Alt | ↑GUI | D | S | T | N | B |
112 // |------+------+------+------+------+------|------+------+------+------+------+------|
113 // | J | : | " | I | / | Caps |^Shift| W | M | L | P | V |
114 // |------+------+------+------+------+------+------+------+------+------+------+------|
115 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
116 // `-----------------------------------------------------------------------------------'
117
118 [_RSHIFT] = {
119 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
120 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
121 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
122 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
123 },
124#endif
125
126// .................................................................... BEAKL 8P
127#ifdef BEAKL8P
128 // ,-----------------------------------------------------------------------------------.
129 // | Q | Y | O | U | Z | ^Alt | ^GUI | G | D | R | F | X |
130 // |------+------+------+------+------+-------------+------+------+------+------+------|
131 // | K | H | E | A | . | ↑Alt | ↑GUI | C | T | S | N | B |
132 // |------+------+------+------+------+------|------+------+------+------+------+------|
133 // | J | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
134 // |------+------+------+------+------+------+------+------+------+------+------+------|
135 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
136 // `-----------------------------------------------------------------------------------'
137
138 [_BASE] = {
139 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
140 {KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_T, KC_S, KC_N, KC_B },
141 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
142 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
143 },
144
145 [_SHIFT] = {
146 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
147 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
148 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
149 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
150 },
151
152 // ,-----------------------------------------------------------------------------------.
153 // | Q | Y | { | } | $ | ^Alt | ^GUI | G | D | R | F | X |
154 // |------+------+------+------+------+-------------+------+------+------+------+------|
155 // | K | H | < | > | ~ | ↑Alt | ↑GUI | C | T | S | N | B |
156 // |------+------+------+------+------+------|------+------+------+------+------+------|
157 // | J | : | ! | = | ` | Caps |^Shift| W | M | L | P | V |
158 // |------+------+------+------+------+------+------+------+------+------+------+------|
159 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
160 // `-----------------------------------------------------------------------------------'
161
162 [_LSHIFT] = {
163 {S(KC_Q), S(KC_Y), KC_LCBR, KC_RCBR, KC_DLR, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
164 {S(KC_K), S(KC_H), TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
165 {S(KC_J), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
166 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
167 },
168
169 // ,-----------------------------------------------------------------------------------.
170 // | Q | Y | O | U | Z | ^Alt | ^GUI | ^ | [ | ] | F | X |
171 // |------+------+------+------+------+-------------+------+------+------+------+------|
172 // | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | N | B |
173 // |------+------+------+------+------+------|------+------+------+------+------+------|
174 // | J | : | " | I | / | Caps |^Shift| \ | $ | * | P | V |
175 // |------+------+------+------+------+------+------+------+------+------+------+------|
176 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
177 // `-----------------------------------------------------------------------------------'
178
179 [_RSHIFT] = {
180 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, KC_CIRC, KC_LBRC, KC_RBRC, S(KC_F), S(KC_X)},
181 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, S(KC_N), S(KC_B)},
182 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_DLR, KC_ASTR, S(KC_P), S(KC_V)},
183 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
184 },
185#endif
186
187// ................................................................... BEAKL 8TX
188#ifdef BEAKL8TX
189 // ,-----------------------------------------------------------------------------------.
190 // | Q | Y | O | U | J | ^Alt | ^GUI | G | D | R | F | X |
191 // |------+------+------+------+------+-------------+------+------+------+------+------|
192 // | K | H | E | A | . | ↑Alt | ↑GUI | C | T | S | N | B |
193 // |------+------+------+------+------+------|------+------+------+------+------+------|
194 // | Z | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
195 // |------+------+------+------+------+------+------+------+------+------+------+------|
196 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
197 // `-----------------------------------------------------------------------------------'
198
199 [_BASE] = {
200 {KC_Q, KC_Y, KC_O, KC_U, KC_J, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
201 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_S, HOME_N, HOME_B },
202 {KC_Z, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
203 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
204 },
205
206 [_SHIFT] = {
207 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
208 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
209 {S(KC_Z), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
210 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
211 },
212
213 // ,-----------------------------------------------------------------------------------.
214 // | Q | $ | { | } | J | ^Alt | ^GUI | G | D | R | F | X |
215 // |------+------+------+------+------+-------------+------+------+------+------+------|
216 // | K | / | < | > | ~ | ↑Alt | ↑GUI | C | T | S | N | B |
217 // |------+------+------+------+------+------|------+------+------+------+------+------|
218 // | Z | : | ! | = | ` | Caps |^Shift| W | M | L | P | V |
219 // |------+------+------+------+------+------+------+------+------+------+------+------|
220 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
221 // `-----------------------------------------------------------------------------------'
222
223 [_LSHIFT] = {
224 {S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
225 {S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
226 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
227 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
228 },
229
230 // ,-----------------------------------------------------------------------------------.
231 // | Q | Y | O | U | J | ^Alt | ^GUI | G | [ | ] | ^ | X |
232 // |------+------+------+------+------+-------------+------+------+------+------+------|
233 // | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | $ | B |
234 // |------+------+------+------+------+------|------+------+------+------+------+------|
235 // | Z | : | " | I | / | Caps |^Shift| \ | * | . | P | V |
236 // |------+------+------+------+------+------+------+------+------+------+------+------|
237 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
238 // `-----------------------------------------------------------------------------------'
239
240 [_RSHIFT] = {
241 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
242 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_B)},
243 {S(KC_Z), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
244 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
245 },
246#endif
247
248// ................................................................... BEAKL 8TT
249#ifdef BEAKL8TT
250 // ,-----------------------------------------------------------------------------------.
251 // | Q | Y | O | U | J | Fn | Caps | G | D | R | F | X |
252 // |------+------+------+------+------+-------------+------+------+------+------+------|
253 // | K | H | E | A | . |Cursor| Mouse| C | T | S | N | B |
254 // |------+------+------+------+------+------|------+------+------+------+------+------|
255 // | Z | ; | " | I | , | Num | Regex| W | M | L | P | V |
256 // |------+------+------+------+------+------+------+------+------+------+------+------|
257 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
258 // `-----------------------------------------------------------------------------------'
259
260 [_BASE] = {
261 {KC_Q, KC_Y, KC_O, KC_U, KC_J, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
262 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_S, HOME_N, HOME_B },
263 {KC_Z, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
264 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
265 },
266
267 [_SHIFT] = {
268 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
269 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
270 {S(KC_Z), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
271 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
272 },
273
274 // ,-----------------------------------------------------------------------------------.
275 // | Q | $ | { | } | J | Fn | Caps | G | D | R | F | X |
276 // |------+------+------+------+------+-------------+------+------+------+------+------|
277 // | K | / | < | > | ~ |Cursor| Mouse| C | T | S | N | B |
278 // |------+------+------+------+------+------|------+------+------+------+------+------|
279 // | Z | : | ! | = | ` | Num | Regex| W | M | L | P | V |
280 // |------+------+------+------+------+------+------+------+------+------+------+------|
281 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
282 // `-----------------------------------------------------------------------------------'
283
284 [_LSHIFT] = {
285 {S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
286 {S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
287 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
288 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
289 },
290
291 // ,-----------------------------------------------------------------------------------.
292 // | Q | Y | O | U | J | Fn | Caps | G | [ | ] | ^ | X |
293 // |------+------+------+------+------+-------------+------+------+------+------+------|
294 // | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | B |
295 // |------+------+------+------+------+------|------+------+------+------+------+------|
296 // | Z | : | " | I | / | Num | Regex| \ | * | . | P | V |
297 // |------+------+------+------+------+------+------+------+------+------+------+------|
298 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
299 // `-----------------------------------------------------------------------------------'
300
301 [_RSHIFT] = {
302 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
303 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_B)},
304 {S(KC_Z), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
305 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
306 },
307#endif
308
309// .................................................................... BEAKL 10
310#ifdef BEAKL10
311 // ,-----------------------------------------------------------------------------------.
312 // | Q | H | O | U | X | ^Alt | ^GUI | G | D | N | M | V |
313 // |------+------+------+------+------+-------------+------+------+------+------+------|
314 // | Y | I | E | A | . | ↑Alt | ↑GUI | C | S | R | T | W |
315 // |------+------+------+------+------+------|------+------+------+------+------+------|
316 // | J | ; | " | , | Z | Caps |^Shift| B | P | L | F | K |
317 // |------+------+------+------+------+------+------+------+------+------+------+------|
318 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
319 // `-----------------------------------------------------------------------------------'
320
321 [_BASE] = {
322 {KC_Q, KC_H, KC_O, KC_U, KC_X, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_V },
323 {KC_Y, KC_I, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_S, KC_R, KC_T, KC_W },
324 {KC_J, KC_SCLN, TD_QUOT, KC_COMM, KC_Z, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_K },
325 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
326 },
327
328 [_SHIFT] = {
329 {S(KC_Q), S(KC_H), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_V)},
330 {S(KC_Y), S(KC_I), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_S), S(KC_R), S(KC_T), S(KC_W)},
331 {S(KC_J), KC_SCLN, TD_QUOT, KC_COMM, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
332 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
333 },
334
335 // ,-----------------------------------------------------------------------------------.
336 // | Q | [ | ! | ] | X | ^Alt | ^GUI | G | D | N | M | V |
337 // |------+------+------+------+------+-------------+------+------+------+------+------|
338 // | Y | < | = | > | ~ | ↑Alt | ↑GUI | C | S | R | T | W |
339 // |------+------+------+------+------+------|------+------+------+------+------+------|
340 // | J | : | " | ` | Z | Caps |^Shift| B | P | L | F | K |
341 // |------+------+------+------+------+------+------+------+------+------+------+------|
342 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
343 // `-----------------------------------------------------------------------------------'
344
345 [_LSHIFT] = {
346 {S(KC_Q), TD_LBRC, KC_EXLM, TD_RBRC, S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_V)},
347 {S(KC_Y), TD_LT, KC_EQL, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_S), S(KC_R), S(KC_T), S(KC_W)},
348 {S(KC_J), KC_COLN, TD_DQOT, TD_GRV, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
349 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
350 },
351
352 // ,-----------------------------------------------------------------------------------.
353 // | Q | H | O | U | X | ^Alt | ^GUI | G | { | + | } | V |
354 // |------+------+------+------+------+-------------+------+------+------+------+------|
355 // | Y | I | E | A | ? | ↑Alt | ↑GUI | C | ( | * | ) | W |
356 // |------+------+------+------+------+------|------+------+------+------+------+------|
357 // | J | : | " | / | Z | Caps |^Shift| B | P | L | F | K |
358 // |------+------+------+------+------+------+------+------+------+------+------+------|
359 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
360 // `-----------------------------------------------------------------------------------'
361
362 [_RSHIFT] = {
363 {S(KC_Q), S(KC_H), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), TD_LCBR, KC_PLUS, TD_RCBR, S(KC_V)},
364 {S(KC_Y), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), TD_LPRN, KC_ASTR, TD_RPRN, S(KC_W)},
365 {S(KC_J), TD_COLN, TD_DQOT, KC_SLSH, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
366 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
367 },
368#endif
369
370// ............................................................... BEAKL Mash Up
371#ifdef BEAKL810
372 // ,-----------------------------------------------------------------------------------.
373 // | Q | Y | O | U | Z | ^Alt | ^GUI | G | D | N | M | X |
374 // |------+------+------+------+------+-------------+------+------+------+------+------|
375 // | K | H | E | A | . | ↑Alt | ↑GUI | C | T | R | S | W |
376 // |------+------+------+------+------+------|------+------+------+------+------+------|
377 // | J | ; | " | I | , | Caps |^Shift| B | P | L | F | V |
378 // |------+------+------+------+------+------+------+------+------+------+------+------|
379 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
380 // `-----------------------------------------------------------------------------------'
381
382 [_BASE] = {
383 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
384 {KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_T, KC_R, KC_S, KC_W },
385 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
386 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
387 },
388
389 [_SHIFT] = {
390 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
391 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
392 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
393 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
394 },
395
396 // ,-----------------------------------------------------------------------------------.
397 // | Q | Y | { | } | $ | ^Alt | ^GUI | G | D | N | M | X |
398 // |------+------+------+------+------+-------------+------+------+------+------+------|
399 // | K | H | < | > | ~ | ↑Alt | ↑GUI | C | T | R | S | W |
400 // |------+------+------+------+------+------|------+------+------+------+------+------|
401 // | J | : | ! | = | ` | Caps |^Shift| B | P | L | F | V |
402 // |------+------+------+------+------+------+------+------+------+------+------+------|
403 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
404 // `-----------------------------------------------------------------------------------'
405
406 [_LSHIFT] = {
407 {S(KC_Q), S(KC_Y), KC_LCBR, KC_RCBR, KC_DLR, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
408 {S(KC_K), S(KC_H), TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
409 {S(KC_J), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
410 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
411 },
412
413 // ,-----------------------------------------------------------------------------------.
414 // | Q | Y | O | U | Z | ^Alt | ^GUI | ^ | [ | ] | M | X |
415 // |------+------+------+------+------+-------------+------+------+------+------+------|
416 // | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | S | W |
417 // |------+------+------+------+------+------|------+------+------+------+------+------|
418 // | J | : | " | I | / | Caps |^Shift| \ | $ | * | F | V |
419 // |------+------+------+------+------+------+------+------+------+------+------+------|
420 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
421 // `-----------------------------------------------------------------------------------'
422
423 [_RSHIFT] = {
424 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, KC_CIRC, KC_LBRC, KC_RBRC, S(KC_M), S(KC_X)},
425 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, S(KC_S), S(KC_W)},
426 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_DLR, KC_ASTR, S(KC_F), S(KC_V)},
427 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
428 },
429#endif
430
431// .................................................................... BEAKL MU
432#ifdef BEAKLMU
433 // ,-----------------------------------------------------------------------------------.
434 // | Q | Y | O | U | Z | Fn | Caps | G | D | N | M | X |
435 // |------+------+------+------+------+-------------+------+------+------+------+------|
436 // | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
437 // |------+------+------+------+------+------|------+------+------+------+------+------|
438 // | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
439 // |------+------+------+------+------+------+------+------+------+------+------+------|
440 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
441 // `-----------------------------------------------------------------------------------'
442
443 [_BASE] = {
444 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
445 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
446 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
447 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
448 },
449
450 [_SHIFT] = {
451 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
452 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
453 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
454 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
455 },
456
457 // ,-----------------------------------------------------------------------------------.
458 // | Q | $ | { | } | Z | Fn | Caps | G | D | N | M | X |
459 // |------+------+------+------+------+-------------+------+------+------+------+------|
460 // | K | / | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
461 // |------+------+------+------+------+------|------+------+------+------+------+------|
462 // | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
463 // |------+------+------+------+------+------+------+------+------+------+------+------|
464 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
465 // `-----------------------------------------------------------------------------------'
466
467 [_LSHIFT] = {
468 {S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
469 {S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
470 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
471 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
472 },
473
474 // ,-----------------------------------------------------------------------------------.
475 // | Q | Y | O | U | Z | Fn | Caps | G | [ | ] | ^ | X |
476 // |------+------+------+------+------+-------------+------+------+------+------+------|
477 // | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
478 // |------+------+------+------+------+------|------+------+------+------+------+------|
479 // | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
480 // |------+------+------+------+------+------+------+------+------+------+------+------|
481 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
482 // `-----------------------------------------------------------------------------------'
483
484 [_RSHIFT] = {
485 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
486 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
487 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
488 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
489 },
490#endif
491
492// .................................................................... BEAKL SP
493#ifdef BEAKLSP
494 // ,-----------------------------------------------------------------------------------.
495 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
496 // |------+------+------+------+------+-------------+------+------+------+------+------|
497 // | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
498 // |------+------+------+------+------+------|------+------+------+------+------+------|
499 // | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
500 // |------+------+------+------+------+------+------+------+------+------+------+------|
501 // | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
502 // `-----------------------------------------------------------------------------------'
503
504 [_BASE] = {
505 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
506 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
507 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
508 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
509 },
510
511 [_SHIFT] = {
512 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
513 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
514 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
515 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
516 },
517
518 // ,-----------------------------------------------------------------------------------.
519 // | Q | Y | [ | ] | Z | Shift| Caps | G | D | N | M | X |
520 // |------+------+------+------+------+-------------+------+------+------+------+------|
521 // | K | ^ | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
522 // |------+------+------+------+------+------|------+------+------+------+------+------|
523 // | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
524 // |------+------+------+------+------+------+------+------+------+------+------+------|
525 // | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
526 // `-----------------------------------------------------------------------------------'
527
528 [_LSHIFT] = {
529 {S(KC_Q), S(KC_Y), KC_LBRC, KC_RBRC, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
530 {S(KC_K), KC_CIRC, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
531 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
532 {OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
533 },
534
535 // ,-----------------------------------------------------------------------------------.
536 // | Q | Y | O | U | Z | Shift| Caps | G | { | } | M | X |
537 // |------+------+------+------+------+-------------+------+------+------+------+------|
538 // | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
539 // |------+------+------+------+------+------|------+------+------+------+------+------|
540 // | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
541 // |------+------+------+------+------+------+------+------+------+------+------+------|
542 // | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
543 // `-----------------------------------------------------------------------------------'
544
545 [_RSHIFT] = {
546 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LCBR, KC_RCBR, S(KC_M), S(KC_X)},
547 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
548 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
549 {OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
550 },
551#endif
552
553// .................................................................... BEAKL GR
554#ifdef BEAKLGR
555 // ,-----------------------------------------------------------------------------------.
556 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
557 // |------+------+------+------+------+-------------+------+------+------+------+------|
558 // | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
559 // |------+------+------+------+------+------|------+------+------+------+------+------|
560 // | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
561 // |------+------+------+------+------+------+------+------+------+------+------+------|
562 // | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
563 // `-----------------------------------------------------------------------------------'
564
565 [_BASE] = {
566 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
567 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
568 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
569 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
570 },
571
572 [_SHIFT] = {
573 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
574 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
575 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
576 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
577 },
578
579 // ,-----------------------------------------------------------------------------------.
580 // | Q | Y | [ | ] | Z | Shift| Caps | G | D | N | M | X |
581 // |------+------+------+------+------+-------------+------+------+------+------+------|
582 // | K | ^ | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
583 // |------+------+------+------+------+------|------+------+------+------+------+------|
584 // | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
585 // |------+------+------+------+------+------+------+------+------+------+------+------|
586 // | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
587 // `-----------------------------------------------------------------------------------'
588
589 [_LSHIFT] = {
590 {S(KC_Q), S(KC_Y), KC_LBRC, KC_RBRC, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
591 {SM_K, KC_CIRC, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
592 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
593 {OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
594 },
595
596 // ,-----------------------------------------------------------------------------------.
597 // | Q | Y | O | U | Z | Shift| Caps | G | { | } | M | X |
598 // |------+------+------+------+------+-------------+------+------+------+------+------|
599 // | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
600 // |------+------+------+------+------+------|------+------+------+------+------+------|
601 // | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
602 // |------+------+------+------+------+------+------+------+------+------+------+------|
603 // | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
604 // `-----------------------------------------------------------------------------------'
605
606 [_RSHIFT] = {
607 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LCBR, KC_RCBR, S(KC_M), S(KC_X)},
608 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, SM_W },
609 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
610 {OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
611 },
612#endif
diff --git a/keyboards/planck/keymaps/altgr/colemak.h b/keyboards/planck/keymaps/altgr/colemak.h
new file mode 100644
index 000000000..8810ba82a
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/colemak.h
@@ -0,0 +1,124 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .............................................................. Colemak Mod-DH
5#ifdef COLEMAK
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | ; |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Z | X | C | D | V | Caps |^Shift| K | H | , | . | " |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_W, KC_F, KC_P, KC_B, CNTR_TL, CNTR_TR, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
18 {KC_A, KC_R, KC_S, KC_T, KC_G, CNTR_HL, CNTR_HR, KC_M, KC_N, KC_E, KC_I, KC_O },
19 {KC_Z, KC_X, KC_C, KC_D, KC_V, CNTR_BL, CNTR_BR, KC_K, KC_H, KC_COMM, KC_DOT, TD_QUOT},
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), KC_SCLN},
25 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
26 {S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), KC_COMM, KC_DOT, TD_QUOT},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | : |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | Z | X | C | D | V | Caps |^Shift| K | H | / | ? | " |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
42 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
43 {S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), KC_SLSH, KC_QUES, TD_DQOT},
44 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | : |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | Z | X | C | D | V | Caps |^Shift| K | H | ~ | ` | " |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
59 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
60 {S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), TD_TILD, TD_GRV, TD_DQOT},
61 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
65// ..................................................................... ColemaX
66#ifdef COLEMAX
67 // ,-----------------------------------------------------------------------------------.
68 // | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | ; |
69 // |------+------+------+------+------+-------------+------+------+------+------+------|
70 // | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
71 // |------+------+------+------+------+------|------+------+------+------+------+------|
72 // | X | V | F | D | P | Caps |^Shift| M | H | , | . | " |
73 // |------+------+------+------+------+------+------+------+------+------+------+------|
74 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
75 // `-----------------------------------------------------------------------------------'
76
77 [_BASE] = {
78 {KC_Q, KC_W, KC_C, KC_G, KC_Z, CNTR_TL, CNTR_TR, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
79 {KC_A, KC_R, KC_S, KC_T, KC_B, CNTR_HL, CNTR_HR, KC_K, KC_N, KC_E, KC_I, KC_O },
80 {KC_X, KC_V, KC_F, KC_D, KC_P, CNTR_BL, CNTR_BR, KC_M, KC_H, KC_COMM, KC_DOT, TD_QUOT},
81 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
82 },
83
84 [_SHIFT] = {
85 {S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), KC_SCLN},
86 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
87 {S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), KC_COMM, KC_DOT, TD_QUOT},
88 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
89 },
90
91 // ,-----------------------------------------------------------------------------------.
92 // | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | : |
93 // |------+------+------+------+------+-------------+------+------+------+------+------|
94 // | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
95 // |------+------+------+------+------+------|------+------+------+------+------+------|
96 // | X | V | F | D | P | Caps |^Shift| M | H | / | ? | " |
97 // |------+------+------+------+------+------+------+------+------+------+------+------|
98 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
99 // `-----------------------------------------------------------------------------------'
100
101 [_LSHIFT] = {
102 {S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
103 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
104 {S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), KC_SLSH, KC_QUES, TD_DQOT},
105 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
106 },
107
108 // ,-----------------------------------------------------------------------------------.
109 // | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | : |
110 // |------+------+------+------+------+-------------+------+------+------+------+------|
111 // | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
112 // |------+------+------+------+------+------|------+------+------+------+------+------|
113 // | X | V | F | D | P | Caps |^Shift| M | H | ~ | ` | " |
114 // |------+------+------+------+------+------+------+------+------+------+------+------|
115 // | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
116 // `-----------------------------------------------------------------------------------'
117
118 [_RSHIFT] = {
119 {S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
120 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
121 {S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), TD_TILD, TD_GRV, TD_DQOT},
122 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
123 },
124#endif
diff --git a/keyboards/planck/keymaps/altgr/common/chord_layout.h b/keyboards/planck/keymaps/altgr/common/chord_layout.h
new file mode 100644
index 000000000..2c785d56c
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/chord_layout.h
@@ -0,0 +1,41 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................. Short Cuts
5
6 // .-----------------------------------------------------------------------------------.
7 // | | | Copy | Paste| | | | | | | | |
8 // |--------------------------------------------------------------+------+------+------|
9 // | Undo | Cut | Copy | Paste| | | | | PRIV | PUB | | |
10 // |-----------------------------------------------------------------------------------|
11 // | | | Nak | Eot | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | | | | f() | | | | | |
14 // | | | | | | | | f() | | | | | see _PLOVER
15 // '-----------------------------------------------------------------------------------'
16
17 [_EDIT] = {
18 {_______, _______, TMCOPY, TMPASTE, _______, _______, _______, _______, _______, _______, _______, _______},
19 {UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, TD_PRIV, TD_SEND, _______, _______},
20 {_______, _______, NAK, EOT, _______, _______, _______, _______, _______, _______, _______, _______},
21 {_______, _______, _______, _______, _______, _______, ___fn__, ___fn__, _______, _______, _______, _______},
22 },
23
24// ................................................................ Adjust Layer
25
26 // ,-----------------------------------------------------------------------------------.
27 // |Plover| | | | | | | | | | | |
28 // |------+------+------+------+------+-------------+------+------+------+------+------|
29 // |Aud on| | | | | | | | | | | |
30 // |------+------+------+------+------+------|------+------+------+------+------+------|
31 // | Reset| | | | | | | | | | | |
32 // |------+------+------+------+------+------+------+------+------+------+------+------|
33 // | | | | f() | | | | | f() | | | |
34 // `-----------------------------------------------------------------------------------'
35
36 [_ADJUST] = {
37 {PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
38 {AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
39 {RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
40 {_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______},
41 },
diff --git a/keyboards/planck/keymaps/altgr/common/init.h b/keyboards/planck/keymaps/altgr/common/init.h
new file mode 100644
index 000000000..6366a19f6
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/init.h
@@ -0,0 +1,56 @@
1
2// ....................................................................... Audio
3
4void matrix_init_user(void)
5{
6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12}
13
14#ifdef AUDIO_ENABLE
15#ifdef BACKLIGHT_ENABLE
16void led_set_user(uint8_t usb_led)
17{
18 static uint8_t old_usb_led = 0;
19 _delay_ms(10); // gets rid of tick
20 if (!is_playing_notes()) {
21 if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
22 // if capslock LED is turning on
23 PLAY_SONG(song_caps_on);
24 }
25 else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
26 // if capslock LED is turning off
27 PLAY_SONG(song_caps_off);
28 }
29 }
30 old_usb_led = usb_led;
31}
32#endif
33
34void startup_user(void)
35{
36 _delay_ms(20); // gets rid of tick
37 PLAY_SONG(song_startup);
38}
39
40void shutdown_user(void)
41{
42 PLAY_SONG(song_goodbye);
43 _delay_ms(150);
44 stop_all_notes();
45}
46
47void music_on_user(void)
48{
49 music_scale_user();
50}
51
52void music_scale_user(void)
53{
54 PLAY_SONG(music_scale);
55}
56#endif
diff --git a/keyboards/planck/keymaps/altgr/common/keycode_functions.h b/keyboards/planck/keymaps/altgr/common/keycode_functions.h
new file mode 100644
index 000000000..e0ae15089
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/keycode_functions.h
@@ -0,0 +1,657 @@
1
2// .......................................................... Keycode Primitives
3
4// register simple key press
5void tap_key(uint16_t keycode)
6{
7 register_code (keycode);
8 unregister_code(keycode);
9}
10
11void shift_key(uint16_t keycode)
12{
13 register_code (KC_LSFT);
14 tap_key (keycode);
15 unregister_code(KC_LSFT);
16}
17
18#define SHIFT 1
19#define NOSHIFT 0
20
21static uint16_t key_timer = 0;
22
23// key press for thumb_layer() and lt_shift() macros
24bool key_press(uint8_t shift, uint16_t keycode)
25{
26 if (keycode) {
27 if (timer_elapsed(key_timer) < TAPPING_TERM) {
28 if (shift) {
29 shift_key(keycode);
30 }
31 else {
32 tap_key(keycode);
33 }
34 return true;
35 }
36 }
37 return false;
38}
39
40// ALT_T, CTL_T, GUI_T, SFT_T for shifted keycodes
41void mt_shift(keyrecord_t *record, uint16_t modifier, uint16_t modifier2, uint16_t keycode)
42{
43 if (record->event.pressed) {
44 key_timer = timer_read();
45 register_code(modifier);
46 if (modifier2) {
47 register_code(modifier2);
48 }
49 }
50 else {
51 unregister_code(modifier);
52 if (modifier2) {
53 unregister_code(modifier2);
54 }
55 if (timer_elapsed(key_timer) < TAPPING_TERM) {
56 shift_key(keycode);
57 }
58 key_timer = 0;
59 }
60}
61
62// ................................................................... Mod Masks
63
64// tap dance persistant mods, see process_record_user()
65// keyboard_report->mods (?) appears to be cleared by tap dance
66static uint8_t mods = 0;
67
68void tap_mods(keyrecord_t *record, uint16_t keycode)
69{
70 if (record->event.pressed) {
71 mods |= MOD_BIT(keycode);
72 }
73 else {
74 mods &= ~(MOD_BIT(keycode));
75 }
76}
77
78// (un)register modifiers
79void modifier(void (*f)(uint8_t))
80{
81 if (mods & MOD_BIT(KC_LCTL)) {
82 (*f)(KC_LCTL);
83 }
84 if (mods & MOD_BIT(KC_LGUI)) {
85 (*f)(KC_LGUI);
86 }
87 if (mods & MOD_BIT(KC_LALT)) {
88 (*f)(KC_LALT);
89 }
90}
91
92// .................................................... Triple Dance Shift/Layer
93
94static uint8_t dt_shift = 0;
95
96void double_shift(uint16_t keycode, uint8_t layer)
97{
98 tap_key (keycode);
99 if (DT_SHIFT) {
100 // set_oneshot_mods(MOD_LSFT);
101 // layer_on(layer);
102 layer_on (_SHIFT);
103 set_oneshot_layer(_SHIFT, ONESHOT_START);
104 dt_shift = 1;
105 }
106 else {
107 layer_on(layer);
108 }
109}
110
111// tap dance LT (LAYER, KEY) emulation with <KEY><DOWN> -> <KEY><SHIFT> and auto-repeat extensions!
112void tap_shift(qk_tap_dance_state_t *state, uint16_t keycode, uint8_t layer)
113{
114 // double tap plus down
115 if (state->count > 2) {
116 // double enter shift
117 if (keycode == KC_ENT) {
118 tap_key (keycode);
119 double_shift(keycode, layer);
120 }
121 // repeating keycode
122 else {
123 register_code(keycode);
124 }
125 }
126 // tap plus down (or double tap): keycode (one shot) shift
127 else if (state->count > 1) {
128 double_shift(keycode, layer);
129 }
130 // down: shift
131 else if (state->pressed) {
132 layer_on(layer);
133 }
134 // tap: keycode
135 else {
136 modifier(register_code);
137 tap_key (keycode);
138 modifier(unregister_code);
139 }
140}
141
142void tap_reset(uint16_t keycode, uint8_t layer)
143{
144 unregister_code(keycode);
145 if (DT_SHIFT && dt_shift) {
146 clear_oneshot_layer_state(ONESHOT_PRESSED);
147 dt_shift = 0;
148 }
149 else {
150 layer_off(layer);
151 }
152}
153
154// augment pseudo LT (_RSHIFT, KC_ENT) handling below for rapid <ENTER><SHIFT> sequences
155void enter(qk_tap_dance_state_t *state, void *user_data)
156{
157 tap_shift(state, KC_ENT, _RSHIFT);
158}
159
160void enter_reset(qk_tap_dance_state_t *state, void *user_data)
161{
162 tap_reset(KC_ENT, _RSHIFT);
163}
164
165// augment pseudo LT (_LSHIFT, KC_SPC) handling below for rapid <SPACE><SHIFT> sequences
166void space(qk_tap_dance_state_t *state, void *user_data)
167{
168 tap_shift(state, KC_SPC, _LSHIFT);
169}
170
171void space_reset(qk_tap_dance_state_t *state, void *user_data)
172{
173 tap_reset(KC_SPC, _LSHIFT);
174}
175
176// ......................................................... Triple Dance Insert
177
178void double_max(uint8_t count, uint8_t shift, uint16_t keycode)
179{
180 if (shift) {
181 shift_key(keycode);
182 if (count > 1) {
183 shift_key(keycode);
184 }
185 }
186 else {
187 tap_key(keycode);
188 if (count > 1) {
189 tap_key(keycode);
190 }
191 }
192}
193
194void colon(qk_tap_dance_state_t *state, void *user_data)
195{
196 if (state->count > 2) {
197 tap_key (KC_SPC);
198 shift_key(KC_SCLN);
199 shift_key(KC_SCLN);
200 tap_key (KC_SPC);
201 }
202 else {
203 double_max(state->count, SHIFT, KC_SCLN);
204 }
205 reset_tap_dance(state);
206}
207
208void eql(qk_tap_dance_state_t *state, void *user_data)
209{
210 if (state->count > 2) {
211 tap_key(KC_SPC);
212 tap_key(KC_SLSH);
213 tap_key(KC_EQL);
214 tap_key(KC_SPC);
215 }
216 else {
217 double_max(state->count, NOSHIFT, KC_EQL);
218 }
219 reset_tap_dance(state);
220}
221
222void greater(qk_tap_dance_state_t *state, void *user_data)
223{
224 if (state->count > 2) {
225 tap_key (KC_SPC);
226 tap_key (KC_MINS);
227 shift_key(KC_DOT);
228 tap_key (KC_SPC);
229 }
230 else {
231 double_max(state->count, SHIFT, KC_DOT);
232 }
233 reset_tap_dance(state);
234}
235
236void lesser(qk_tap_dance_state_t *state, void *user_data)
237{
238 if (state->count > 2) {
239 tap_key (KC_SPC);
240 shift_key(KC_COMM);
241 tap_key (KC_MINS);
242 tap_key (KC_SPC);
243 }
244 else {
245 double_max(state->count, SHIFT, KC_COMM);
246 }
247 reset_tap_dance(state);
248}
249
250void tilde(qk_tap_dance_state_t *state, void *user_data)
251{
252 // double tap plus down: repeating keycode
253 if (state->count > 2) {
254 register_code(KC_LSFT);
255 register_code(KC_GRV);
256 }
257 // tap: keycode
258 else {
259 shift_key(KC_GRV);
260 // double tap: unix home directory
261 if (state->count > 1) {
262 tap_key(KC_SLSH);
263 }
264 }
265}
266
267void tilde_reset(qk_tap_dance_state_t *state, void *user_data)
268{
269 unregister_code(KC_GRV);
270 unregister_code(KC_LSFT);
271}
272
273// ............................................................. Tap Dance Pairs
274
275// tap dance shift rules
276#define S_NEVER 0
277#define S_SINGLE 1
278#define S_DOUBLE 2
279#define S_ALWAYS S_SINGLE | S_DOUBLE
280
281void symbol_pair(uint8_t shift, uint16_t left, uint16_t right)
282{
283 if (shift & S_DOUBLE) {
284 shift_key(left);
285 shift_key(right);
286 }
287 else {
288 tap_key(left);
289 tap_key(right);
290 }
291}
292
293#define CLOSE 1
294
295// tap dance symbol pairs
296void tap_pair(qk_tap_dance_state_t *state, uint8_t shift, uint16_t left, uint16_t right, uint16_t modifier, uint8_t close)
297{
298 // triple tap: left right with cursor between symbol pair a la vim :-)
299 if (state->count > 2) {
300 symbol_pair(shift, left, right);
301 tap_key (KC_LEFT);
302 }
303 // double tap: left right
304 else if (state->count > 1) {
305 symbol_pair(shift, left, right);
306 }
307 // down: modifier
308 else if (state->pressed) {
309 if (modifier) {
310 register_code(modifier);
311 }
312 }
313 // tap: left (close: right)
314 else {
315 if (shift & S_SINGLE) {
316 shift_key(close ? right : left);
317 }
318 else {
319 tap_key(close ? right : left);
320 }
321 }
322 if (!modifier) {
323 reset_tap_dance(state);
324 }
325}
326
327void doublequote(qk_tap_dance_state_t *state, void *user_data)
328{
329 tap_pair(state, S_ALWAYS, KC_QUOT, KC_QUOT, 0, 0);
330}
331
332void grave(qk_tap_dance_state_t *state, void *user_data)
333{
334 tap_pair(state, S_NEVER, KC_GRV, KC_GRV, 0, 0);
335}
336
337void lbrace(qk_tap_dance_state_t *state, void *user_data)
338{
339 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, 0);
340}
341
342void lcurly(qk_tap_dance_state_t *state, void *user_data)
343{
344 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, 0);
345}
346
347void lparen(qk_tap_dance_state_t *state, void *user_data)
348{
349 tap_pair(state, S_ALWAYS, KC_9, KC_0, KC_LCTL, 0);
350}
351
352void lparen_reset(qk_tap_dance_state_t *state, void *user_data)
353{
354 unregister_code(KC_LCTL);
355}
356
357void quote(qk_tap_dance_state_t *state, void *user_data)
358{
359 tap_pair(state, S_NEVER, KC_QUOT, KC_QUOT, 0, 0);
360}
361
362void rangle(qk_tap_dance_state_t *state, void *user_data)
363{
364 tap_pair(state, S_ALWAYS, KC_COMM, KC_DOT, 0, CLOSE);
365}
366
367void rbrace(qk_tap_dance_state_t *state, void *user_data)
368{
369 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, CLOSE);
370}
371
372void rcurly(qk_tap_dance_state_t *state, void *user_data)
373{
374 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, CLOSE);
375}
376
377void rparen(qk_tap_dance_state_t *state, void *user_data)
378{
379 tap_pair(state, S_ALWAYS, KC_9, KC_0, 0, CLOSE);
380}
381
382void rparen_reset(qk_tap_dance_state_t *state, void *user_data)
383{
384 unregister_code(KC_LCTL);
385}
386
387// ............................................................ Tap Dance Insert
388
389void comma(qk_tap_dance_state_t *state, void *user_data)
390{
391 tap_key(KC_COMM);
392 if (state->count > 1) {
393 tap_key(KC_SPC);
394 }
395 reset_tap_dance(state);
396}
397
398void dot(qk_tap_dance_state_t *state, void *user_data)
399{
400 if (state->count > 1) {
401 shift_key(KC_COLN);
402 }
403 else {
404 tap_key(KC_DOT);
405 }
406 reset_tap_dance(state);
407}
408
409// compile time macro string, see functions/hardware planck script
410void private(qk_tap_dance_state_t *state, void *user_data)
411{
412 if (state->count > 1) {
413#ifdef PRIVATE_STRING
414#include "private_string.h"
415#endif
416 }
417 reset_tap_dance(state);
418}
419
420// config.h defined string
421void send(qk_tap_dance_state_t *state, void *user_data)
422{
423 if (state->count > 1) {
424 SEND_STRING(PUBLIC_STRING);
425 }
426 reset_tap_dance(state);
427}
428
429// .......................................................... Tap Dance One Shot
430
431void caps(qk_tap_dance_state_t *state, void *user_data)
432{
433 if (state->count > 1) {
434 tap_key(KC_CAPS);
435 }
436 else {
437 set_oneshot_mods(MOD_LSFT);
438 register_code (KC_LSFT); // on hold down
439 }
440}
441
442void caps_reset(qk_tap_dance_state_t *state, void *user_data)
443{
444 unregister_code(KC_LSFT);
445}
446
447// ................................................................... Tap Dance
448
449qk_tap_dance_action_t tap_dance_actions[] = {
450 [_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, caps_reset)
451 ,[_COLN] = ACTION_TAP_DANCE_FN (colon)
452 ,[_COMM] = ACTION_TAP_DANCE_FN (comma)
453 ,[_DOT] = ACTION_TAP_DANCE_FN (dot)
454 ,[_DQOT] = ACTION_TAP_DANCE_FN (doublequote)
455 ,[_ENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, enter, enter_reset)
456 ,[_EQL] = ACTION_TAP_DANCE_FN (eql)
457 ,[_GRV] = ACTION_TAP_DANCE_FN (grave)
458 ,[_GT] = ACTION_TAP_DANCE_FN (greater)
459 ,[_LBRC] = ACTION_TAP_DANCE_FN (lbrace)
460 ,[_LCBR] = ACTION_TAP_DANCE_FN (lcurly)
461 ,[_LPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lparen, lparen_reset)
462 ,[_LT] = ACTION_TAP_DANCE_FN (lesser)
463 ,[_PRIV] = ACTION_TAP_DANCE_FN (private)
464 ,[_QUOT] = ACTION_TAP_DANCE_FN (quote)
465 ,[_RBRC] = ACTION_TAP_DANCE_FN (rbrace)
466 ,[_RCBR] = ACTION_TAP_DANCE_FN (rcurly)
467 ,[_RNGL] = ACTION_TAP_DANCE_FN (rangle)
468 ,[_RPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rparen, rparen_reset)
469 ,[_SEND] = ACTION_TAP_DANCE_FN (send)
470 ,[_SPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, space, space_reset)
471 ,[_TILD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tilde, tilde_reset)
472};
473
474// .............................................................. Dynamic Layers
475
476#define LEFT 1
477#define RIGHT 2
478static uint8_t thumb = 0;
479
480// LEFT (KC_SPC, S(KC_BSLS)), RIGHT (KC_LEFT, S(KC_LEFT)) opposite thumb combinations, see process_record_user()
481// up, up -> _BASE
482// up, down -> _SYMBOL
483// down, up -> _NUMBER
484// down, down -> _MOUSE // see layer keycodes that raise mouse layer
485#define THUMBS_DOWN _MOUSE // layer
486
487static uint8_t overlayer = 0;
488
489// left right thumb layer combinations
490void thumb_layer(keyrecord_t *record, uint8_t side, uint8_t shift, uint16_t keycode, uint8_t thumb_dn_layer, uint8_t thumb_up_layer)
491{
492 if (record->event.pressed) {
493 // layer_on via tap_layer(), see process_record_user()
494 key_timer = timer_read();
495 thumb = thumb | side;
496 }
497 else {
498 layer_off(thumb_dn_layer);
499 // opposite thumb_layer() thumb may have switched effective layer!
500 if (overlayer) {
501 layer_off(overlayer);
502 overlayer = 0;
503 }
504 if (!key_press(shift, keycode)) {
505 layer_off(THUMBS_DOWN); // both thumbs needed
506 // opposite thumb down? see left right combination layer table above
507 if (thumb & (side == LEFT ? RIGHT : LEFT)) {
508 layer_on(thumb_up_layer);
509 overlayer = thumb_up_layer;
510 }
511 }
512 clear_mods();
513 thumb = thumb & ~side;
514 key_timer = 0;
515 }
516}
517
518// #ifdef STENO_ENABLE
519// // LT for steno keycode
520// void stn_layer(keyrecord_t *record, uint16_t keycode, uint8_t layer)
521// {
522// if (record->event.pressed) {
523// key_timer = timer_read();
524// if (keycode) {
525// process_steno(keycode, record);
526// }
527// layer_on(layer);
528// }
529// else {
530// layer_off(layer);
531// if (keycode) {
532// if (timer_elapsed(key_timer) < TAPPING_TERM) {
533// process_steno(keycode, record);
534// }
535// else {
536// // clear pressed state (request push of updated) process_steno.c and .h
537// // steno_clear_state();
538// }
539// }
540// key_timer = 0;
541// }
542// }
543// #endif
544
545// LT for S(keycode)
546void lt_shift(keyrecord_t *record, uint16_t keycode, uint8_t layer)
547{
548 if (record->event.pressed) {
549 key_timer = timer_read();
550 layer_on(layer);
551 }
552 else {
553 layer_off(layer);
554 // for shifted keycodes, hence, LT_SHIFT
555 key_press(SHIFT, keycode);
556 clear_mods();
557 key_timer = 0;
558 }
559}
560
561// set layer asap to overcome macro latency errors, notably tap dance and LT usage
562// this routine inexplicably (?) sets layer_on() faster than can be done in thumb_layer()
563void tap_layer(keyrecord_t *record, uint8_t layer)
564{
565 if (record->event.pressed) {
566 layer_on(layer);
567 }
568 else {
569 layer_off(layer);
570 }
571}
572
573// ..................................................................... Keymaps
574
575// void persistant_default_layer_set(uint16_t default_layer)
576// {
577// eeconfig_update_default_layer(default_layer);
578// default_layer_set (default_layer);
579// }
580
581void clear_layers(void)
582{
583 uint8_t layer;
584 for (layer = 0; layer < _END_LAYERS; layer++) {
585 layer_off(layer);
586 }
587}
588
589#ifdef CENTER_TT
590static uint16_t tt_keycode = 0; // current TT keycode
591
592void clear_tt(void)
593{
594 if (tt_keycode == KC_CAPS) {
595 tap_key(KC_CAPS); // clear capslock
596 }
597 tt_keycode = 0;
598 clear_layers();
599 set_single_persistent_default_layer(_BASE);
600}
601#endif
602
603// txbolt plover run state
604static uint8_t plover = 0;
605
606void toggle_plover(uint8_t state)
607{
608 if (plover != state) {
609#ifdef PLOVER_KEYBIND
610#include "plover_keybind.h"
611#endif
612 plover = state;
613 }
614}
615
616void base_layer(void)
617{
618#ifdef AUDIO_ENABLE
619 if (plover) {
620 PLAY_SONG(song_plover_gb);
621 }
622 else {
623 PLAY_SONG(song_qwerty);
624 }
625#endif
626 clear_layers();
627 set_single_persistent_default_layer(_BASE);
628 toggle_plover(0);
629}
630
631void steno(keyrecord_t *record)
632{
633 if (record->event.pressed) {
634#ifdef AUDIO_ENABLE
635 PLAY_SONG(song_plover);
636#endif
637 clear_layers();
638 layer_on(_PLOVER);
639 if (!eeconfig_is_enabled()) {
640 eeconfig_init();
641 }
642 keymap_config.raw = eeconfig_read_keymap();
643 keymap_config.nkro = 1;
644 eeconfig_update_keymap(keymap_config.raw);
645 if (!plover) {
646 toggle_plover(1);
647 }
648 }
649}
650
651void steno_exit(keyrecord_t *record)
652{
653 if (record->event.pressed) {
654 base_layer();
655 toggle_plover(0);
656 }
657}
diff --git a/keyboards/planck/keymaps/altgr/common/number_fkey_layout.h b/keyboards/planck/keymaps/altgr/common/number_fkey_layout.h
new file mode 100644
index 000000000..528020e74
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/number_fkey_layout.h
@@ -0,0 +1,86 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5#ifdef SHIFT_SYMBOLS
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | | | | 0 | = | | | |
14 // | | | | f() | | | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_NUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
23#else
24 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
25#endif
26 },
27#else
28 // .-----------------------------------------------------------------------------------.
29 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
30 // |-----------------------------------------------------------------------------------|
31 // | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
32 // |-----------------------------------------------------------------------------------|
33 // | | # | X | G | | | | , | 1 | 2 | 3 | + |
34 // |-----------------------------------------------------------------------------------|
35 // | | f() | | 0 | = | |
36 // | | f() | | = | 0 | |
37 // '-----------------------------------------------------------------------------------'
38
39 [_NUMBER] = {
40 {_______, KC_F, MT_E, KC_D, _______, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
41 {OS_GUI, GT_C, AT_B, LT_A, _______, _______, _______, KC_DOT, KC_4, KC_5, KC_6, KC_MINS},
42 {_______, KC_HASH, MT_X, S(KC_G), _______, _______, _______, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
43#ifdef THUMB_0
44 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
45#else
46 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
47#endif
48 },
49
50 // .-----------------------------------------------------------------------------------.
51 // | | | | | | | | { | & | ? | : | } |
52 // |-----------------------------------------------------------------------------------|
53 // | | | | f() | | | | ( | $ | % | ^ | ) |
54 // |-----------------------------------------------------------------------------------|
55 // | | | | | | | | [ | < | ~ | > | ] |
56 // |-----------------------------------------------------------------------------------|
57 // | | f() | | \ | | | |
58 // '-----------------------------------------------------------------------------------'
59
60 [_NUMSYM] = {
61 {_______, _______, _______, ___x___, _______, _______, _______, TD_LCBR, KC_AMPR, KC_QUES, KC_COLN, KC_RCBR},
62 {___x___, ___x___, ___x___, ___fn__, _______, _______, _______, TD_LPRN, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN},
63 {_______, _______, _______, ___x___, _______, _______, _______, TD_LBRC, KC_LT, KC_TILD, KC_GT, KC_RBRC},
64 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_BSLS, KC_PIPE, ___x___, ___x___, ___x___},
65 },
66#endif
67
68// ............ .................................................. Function Keys
69
70 // .-----------------------------------------------------------------------------------.
71 // | | | | | | | | | F7 | F8 | F9 | F12 |
72 // |-----------------------------------------------------------------------------------|
73 // | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
74 // |-----------------------------------------------------------------------------------|
75 // | | | | | | | | | F1 | F2 | F3 | F10 |
76 // |-----------------------------------------------------------------------------------|
77 // | | | | | | f() | | + | | | | |
78 // | | | | | f() | | | + | | | | | see _PLOVER
79 // '-----------------------------------------------------------------------------------'
80
81 [_FNCKEY] = {
82 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
83 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
84 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
85 {_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
86 },
diff --git a/keyboards/planck/keymaps/altgr/common/number_fkey_layout.save.h b/keyboards/planck/keymaps/altgr/common/number_fkey_layout.save.h
new file mode 100644
index 000000000..702286372
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/number_fkey_layout.save.h
@@ -0,0 +1,86 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5#ifdef SHIFT_SYMBOLS
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | | | | 0 | = | | | |
14 // | | | | f() | | | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_NUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_CTL, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
23#else
24 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
25#endif
26 },
27#else
28 // .-----------------------------------------------------------------------------------.
29 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
30 // |-----------------------------------------------------------------------------------|
31 // | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
32 // |-----------------------------------------------------------------------------------|
33 // | | # | X | G | | | | , | 1 | 2 | 3 | + |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | f() | | | | 0 | = | | | |
36 // | | | | f() | | | | = | 0 | | | |
37 // '-----------------------------------------------------------------------------------'
38
39 [_NUMBER] = {
40 {_______, KC_F, MT_E, KC_D, _______, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
41 {OS_CTL, GT_C, AT_B, LT_A, _______, _______, _______, KC_DOT, KC_4, KC_5, KC_6, KC_MINS},
42 {_______, KC_HASH, MT_X, S(KC_G), _______, _______, _______, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
43#ifdef THUMB_0
44 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
45#else
46 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
47#endif
48 },
49
50 // .-----------------------------------------------------------------------------------.
51 // | | | | | | | | { | & | ? | : | } |
52 // |-----------------------------------------------------------------------------------|
53 // | | | | f() | | | | ( | $ | % | ^ | ) |
54 // |-----------------------------------------------------------------------------------|
55 // | | | | | | | | [ | < | ~ | > | ] |
56 // |-----------------------------------------------------------------------------------|
57 // | | | | f() | | | | \ | | | | | |
58 // '-----------------------------------------------------------------------------------'
59
60 [_NUMSYM] = {
61 {_______, _______, _______, ___x___, _______, _______, _______, TD_LCBR, KC_AMPR, KC_QUES, KC_COLN, KC_RCBR},
62 {___x___, ___x___, ___x___, ___fn__, _______, _______, _______, TD_LPRN, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN},
63 {_______, _______, _______, ___x___, _______, _______, _______, TD_LBRC, KC_LT, KC_TILD, KC_GT, KC_RBRC},
64 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_BSLS, KC_PIPE, ___x___, ___x___, ___x___},
65 },
66#endif
67
68// ............ .................................................. Function Keys
69
70 // .-----------------------------------------------------------------------------------.
71 // | | | | | | | | | F7 | F8 | F9 | F12 |
72 // |-----------------------------------------------------------------------------------|
73 // | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
74 // |-----------------------------------------------------------------------------------|
75 // | | | | | | | | | F1 | F2 | F3 | F10 |
76 // |-----------------------------------------------------------------------------------|
77 // | | | | | | f() | | + | | | | |
78 // | | | | | f() | | | + | | | | | see _PLOVER
79 // '-----------------------------------------------------------------------------------'
80
81 [_FNCKEY] = {
82 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
83 {OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
84 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
85 {_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
86 },
diff --git a/keyboards/planck/keymaps/altgr/common/plover_keybind.h b/keyboards/planck/keymaps/altgr/common/plover_keybind.h
new file mode 100644
index 000000000..cb4ef92ef
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/plover_keybind.h
@@ -0,0 +1,9 @@
1
2// simple window manager specific plover keybind hook
3
4// toggle plover application, see herbstluftwm/config/appbinds
5register_code (KC_LGUI);
6register_code (KC_LCTL);
7tap_key (KC_EQL);
8unregister_code(KC_LCTL);
9unregister_code(KC_LGUI);
diff --git a/keyboards/planck/keymaps/altgr/common/sounds.h b/keyboards/planck/keymaps/altgr/common/sounds.h
new file mode 100644
index 000000000..1bfc7a6da
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/sounds.h
@@ -0,0 +1,14 @@
1
2// ................................................................ Audio Sounds
3
4#ifdef AUDIO_ENABLE
5float song_startup [][2] = SONG(STARTUP_SOUND);
6float song_colemak [][2] = SONG(COLEMAK_SOUND);
7float song_qwerty [][2] = SONG(QWERTY_SOUND);
8float song_plover [][2] = SONG(PLOVER_SOUND);
9float song_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
10float song_caps_on [][2] = SONG(CAPS_LOCK_ON_SOUND);
11float song_caps_off [][2] = SONG(CAPS_LOCK_OFF_SOUND);
12float music_scale [][2] = SONG(MUSIC_SCALE_SOUND);
13float song_goodbye [][2] = SONG(GOODBYE_SOUND);
14#endif
diff --git a/keyboards/planck/keymaps/altgr/common/steno_layout.h b/keyboards/planck/keymaps/altgr/common/steno_layout.h
new file mode 100644
index 000000000..ab4a6fe01
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/steno_layout.h
@@ -0,0 +1,39 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ...................................................................... Plover
5#ifdef STENO_ENABLE
6 // ,-----------------------------------------------------------------------------------.
7 // | # | # | # | # | # | # | # | # | # | # | # | # |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | Base | S | T | P | H | * | * | F | P | L | T | D |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | | A | O | E | U | |
14 // `-----------------------------------------------------------------------------------'
15
16 [_PLOVER] = {
17 {STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC },
18 {BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR },
19 {BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR },
20 {_______, _______, _______, PS_STNA, PS_STNO, _______, _______, PS_STNE, PS_STNU, _______, _______, _______},
21 },
22#else
23 // ,-----------------------------------------------------------------------------------.
24 // | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
25 // |------+------+------+------+------+-------------+------+------+------+------+------|
26 // | Base | S | T | P | H | * | * | F | P | L | T | D |
27 // |------+------+------+------+------+------|------+------+------+------+------+------|
28 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
29 // |------+------+------+------+------+------+------+------+------+------+------+------|
30 // | | A | O | E | U | |
31 // `-----------------------------------------------------------------------------------'
32
33 [_PLOVER] = {
34 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
35 {BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
36 {BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
37 {_______, _______, _______, LT_C, LT_V, _______, _______, LT_N, LT_M, _______, _______, _______},
38 },
39#endif
diff --git a/keyboards/planck/keymaps/altgr/common/symbol_guifn_layout.h b/keyboards/planck/keymaps/altgr/common/symbol_guifn_layout.h
new file mode 100644
index 000000000..798610870
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/symbol_guifn_layout.h
@@ -0,0 +1,75 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ..................................................... Symbol Navigation Layer
5#ifdef SHIFT_SYMBOLS
6 // .-----------------------------------------------------------------------------------.
7 // | | ~ | * | & | | | | | Home | Up | End | PgUp |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | ^ | % | $ | | | | | Left | Down | Right| PgDn |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | @ | ! | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | |Adjust| \ | | f() | |
14 // '-----------------------------------------------------------------------------------'
15
16 [_SYMBOL] = {
17 {_______, KC_TILD, KC_ASTR, KC_AMPR, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
18 {OS_GUI, SM_CIRC, SM_PERC, SM_DLR, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
19 {_______, KC_HASH, KC_AT, KC_EXLM, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
20 {___x___, ___x___, ___x___, ADJUST, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
21 },
22#else
23 // .-----------------------------------------------------------------------------------.
24 // | { | . | * | & | } | | | | Home | Up | End | PgUp |
25 // |-----------------------------------------------------------------------------------|
26 // | ( | ^ | % | $ | ) | | | | Left | Down | Right| PgDn |
27 // |-----------------------------------------------------------------------------------|
28 // | [ | # | @ | ! | ] | | | | | | | |
29 // |-----------------------------------------------------------------------------------|
30 // | | | | \ | | f() | |
31 // '-----------------------------------------------------------------------------------'
32
33 [_SYMBOL] = {
34 {KC_LCBR, KC_DOT, KC_ASTR, KC_AMPR, TD_RCBR, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
35 {SM_LPRN, SM_CIRC, SM_PERC, SM_DLR, TD_RPRN, _______, _______, _______, LT_LFTX, KC_DOWN, KC_RGHT, KC_PGDN},
36 {KC_LBRC, KC_HASH, KC_AT, KC_EXLM, TD_RBRC, _______, _______, _______, _______, _______, _______, _______},
37 {___x___, ___x___, ___x___, SL_PIPE, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
38 },
39
40 // .-----------------------------------------------------------------------------------.
41 // | | ? | + | ~ | | | | | | | | |
42 // |-----------------------------------------------------------------------------------|
43 // | | < | = | > | | | | | f() | | | |
44 // |-----------------------------------------------------------------------------------|
45 // | | 3 | 2 | 1 | | | | | | | | |
46 // |-----------------------------------------------------------------------------------|
47 // | | | | | f() | |
48 // '-----------------------------------------------------------------------------------'
49
50 [_SYMREG] = {
51 {___x___, KC_QUES, KC_PLUS, KC_TILD, ___x___, _______, _______, _______, ___x___, ___x___, ___x___, ___x___},
52 {___x___, KC_LT, KC_EQL, TD_RNGL, ___x___, _______, _______, _______, ___fn__, ___x___, ___x___, ___x___},
53 {___x___, KC_3, KC_2, KC_1, ___x___, _______, _______, _______, _______, _______, _______, _______},
54 {___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
55 },
56#endif
57
58// ............................................................... Mouse Actions
59
60 // .-----------------------------------------------------------------------------------.
61 // | | | | | | | | | Left | Up | Right| Up |
62 // |-----------------------------------------------------------------------------------|
63 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
64 // |-----------------------------------------------------------------------------------|
65 // | | | | | | | | | | | | |
66 // |-----------------------------------------------------------------------------------|
67 // | | | f() | | f() | |
68 // '-----------------------------------------------------------------------------------'
69
70 [_MOUSE] = {
71 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
72 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
73 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
74 {_______, _______, _______, _______, ___fn__, _______, _______, _______, ___fn__, _______, _______, _______},
75 },
diff --git a/keyboards/planck/keymaps/altgr/common/tapdance.h b/keyboards/planck/keymaps/altgr/common/tapdance.h
new file mode 100644
index 000000000..d778286bf
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/tapdance.h
@@ -0,0 +1,49 @@
1
2// tap dance keys
3enum tap_dance {
4 _CAPS = 0
5 ,_COLN
6 ,_COMM
7 ,_DOT
8 ,_DQOT
9 ,_ENT
10 ,_EQL
11 ,_GRV
12 ,_GT
13 ,_LBRC
14 ,_LCBR
15 ,_LPRN
16 ,_LT
17 ,_PRIV
18 ,_QUOT
19 ,_RBRC
20 ,_RCBR
21 ,_RNGL
22 ,_RPRN
23 ,_SEND
24 ,_SPC
25 ,_TILD
26};
27
28#define TD_CAPS TD(_CAPS)
29#define TD_COLN TD(_COLN)
30#define TD_COMM TD(_COMM)
31#define TD_DOT TD(_DOT)
32#define TD_DQOT TD(_DQOT)
33#define TD_ENT TD(_ENT)
34#define TD_EQL TD(_EQL)
35#define TD_GRV TD(_GRV)
36#define TD_GT TD(_GT)
37#define TD_LBRC TD(_LBRC)
38#define TD_LCBR TD(_LCBR)
39#define TD_LPRN TD(_LPRN)
40#define TD_LT TD(_LT)
41#define TD_PRIV TD(_PRIV) // compile time macro string, provided in private_string.h
42#define TD_QUOT TD(_QUOT)
43#define TD_RBRC TD(_RBRC)
44#define TD_RCBR TD(_RCBR)
45#define TD_RNGL TD(_RNGL)
46#define TD_RPRN TD(_RPRN)
47#define TD_SEND TD(_SEND) // config.h defined macro string
48#define TD_SPC TD(_SPC) // see process_record_user() for extended handling of Spc
49#define TD_TILD TD(_TILD)
diff --git a/keyboards/planck/keymaps/altgr/common/toggle_layout.h b/keyboards/planck/keymaps/altgr/common/toggle_layout.h
new file mode 100644
index 000000000..713d27bbc
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/common/toggle_layout.h
@@ -0,0 +1,102 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | Space| | | 0 | = | | | |
14 // | | | | f() | Space| | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_TTNUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_0, LT_EQL, _______, _______, _______},
23#else
24 {_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_EQL, LT_0, _______, _______, _______},
25#endif
26 },
27
28// ............ .................................................. Function Keys
29
30 // .-----------------------------------------------------------------------------------.
31 // | | | | | | | | | F7 | F8 | F9 | F12 |
32 // |-----------------------------------------------------------------------------------|
33 // | GUI | Ctrl | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | | | | | | F1 | F2 | F3 | F10 |
36 // |-----------------------------------------------------------------------------------|
37 // | | | | f() | | | | + | | | | |
38 // '-----------------------------------------------------------------------------------'
39
40 [_TTFNCKEY] = {
41 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
42 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
43 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
44 {_______, _______, _______, TT_ESC, _______, _______, _______, KC_PLUS, _______, _______, _______, _______},
45 },
46
47// ....................................................................... Regex
48
49 // ,-----------------------------------------------------------------------------------.
50 // | | ~ | { | } | & | | | % | [ | ] | @ | |
51 // |------+------+------+------+------+-------------+------+------+------+------+------|
52 // | | ^ | < | > | ? | | | | | ( | ) | $ | |
53 // |------+------+------+------+------+-------------+------+------+------+------+------|
54 // | | : | ! | = | / | | | \ | * | . | # | |
55 // |------+------+------+------+------+------+------+------+------+------+------+------|
56 // | | | | f() | - | | | + | Space| | | |
57 // `-----------------------------------------------------------------------------------'
58
59 [_TTREGEX] = {
60 {___x___, KC_TILD, KC_LCBR, KC_RCBR, KC_AMPR, ___x___, ___x___, KC_PERC, KC_LBRC, KC_RBRC, KC_AT, ___x___},
61 {___x___, KC_CIRC, KC_LT, KC_GT, KC_QUES, ___x___, ___x___, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, ___x___},
62 {___x___, KC_COLN, KC_EXLM, KC_EQL, KC_SLSH, ___x___, ___x___, KC_BSLS, KC_ASTR, KC_DOT, KC_HASH, ___x___},
63 {_______, _______, _______, TT_ESC, KC_MINS, _______, _______, KC_PLUS, KC_SPC, _______, _______, _______},
64 },
65
66// ............................................................ Navigation Layer
67
68 // .-----------------------------------------------------------------------------------.
69 // | | | | | | | | | Home | Up | End | PgUp |
70 // |-----------------------------------------------------------------------------------|
71 // | GUI | Ctrl | Alt | Shift| | | | | Left | Down | Right| PgDn |
72 // |-----------------------------------------------------------------------------------|
73 // | | | | | | | | | | | | |
74 // |-----------------------------------------------------------------------------------|
75 // | | | | f() | | | | | | | | |
76 // '-----------------------------------------------------------------------------------'
77
78 [_TTCURSOR] = {
79 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
80 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
81 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
82 {_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
83 },
84
85// ............................................................... Mouse Actions
86
87 // .-----------------------------------------------------------------------------------.
88 // | | | | | | | | | Left | Up | Right| Up |
89 // |-----------------------------------------------------------------------------------|
90 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
91 // |-----------------------------------------------------------------------------------|
92 // | | | | | | | | | | | | |
93 // |-----------------------------------------------------------------------------------|
94 // | | | | f() | | | | | | | | |
95 // '-----------------------------------------------------------------------------------'
96
97 [_TTMOUSE] = {
98 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
99 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
100 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
101 {_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
102 },
diff --git a/keyboards/planck/keymaps/altgr/config.h b/keyboards/planck/keymaps/altgr/config.h
new file mode 100644
index 000000000..d55258c02
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/config.h
@@ -0,0 +1,50 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// required because lower/raise modifiers are redefined by colemak-dh
7#define PREVENT_STUCK_MODIFIERS
8
9// tap dance key press termination interval
10#define TAPPING_TERM 250
11
12// smooth mouse motion
13// #define MOUSEKEY_INTERVAL 20
14// #define MOUSEKEY_DELAY 0
15// #define MOUSEKEY_TIME_TO_MAX 60
16// #define MOUSEKEY_MAX_SPEED 7
17// #define MOUSEKEY_WHEEL_DELAY 0
18
19// compile time macro string, see functions/hardware planck script (undefine otherwise)
20#define PRIVATE_STRING
21
22// compile time macro string, must be in quotes
23#define PUBLIC_STRING ":%s/arch=(.*)/arch=('any')\n"
24
25// thumb key tap-shift() double tap: one shot shift (0) off (1) on
26#define DT_SHIFT 1
27
28// number layer 0 position KEYPAD_0, THUMB_0
29#define THUMB_0
30
31// home block shift symbol clustes defined (no overlays required for extended symbols, undefine otherwise)
32#define SHIFT_SYMBOLS
33
34// center column TT assignments (undefine for OSM chords)
35#define CENTER_TT
36#define TAPPING_TOGGLE 1
37
38// home row modifiers
39#define HOME_MODS
40// fix dual function timing
41#define PERMISSIVE_HOLD
42#define IGNORE_MOD_TAP_INTERRUPT
43
44// layout ADNW*, BEAKL*, COLEKA*, QWERTY (default)
45#define BEAKLGR
46
47// sync app with window manager keybind hook defined in plover_keybind.h
48#define PLOVER_KEYBIND
49
50#endif
diff --git a/keyboards/planck/keymaps/altgr/keymap.c b/keyboards/planck/keymaps/altgr/keymap.c
new file mode 100644
index 000000000..516f481fc
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/keymap.c
@@ -0,0 +1,490 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3//
4// To flash planck firmware
5// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
6// Reset keyboard or press hw reset button on base (hole)
7//
8// cd qmk_firmware/keyboards/planck
9// sudo make KEYMAP=sdothum dfu
10//
11// sudo make clean (good practice before flashing)
12// sudo make KEYMAP=sdothum (to compile check)
13//
14// Package requirements (for arch linux)
15// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
16// avr-gcc-atmel
17// avr-libc-atmel
18// dfu-programmer
19//
20// Notes
21// ▔▔▔▔▔
22// ** E R G O W I D E S P L I T ** Layout
23//
24// Autocompletion tap dance key pairs (),[],{} are available from the
25// number/symbol layer, as well as, numerous (un)shift key values
26//
27// The navigation pad provides a single hand right thumb activated cluster
28// with left hand modifiers
29//
30// #define PRIVATE_STRING includes private_string.h, a user defined code
31// block for the PRIV tap dance e.g. SEND_STRING("secret messape"),
32// see function private()
33//
34// Modifier clusters
35// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
36// The num and sym keys together access the navigation pad layer
37//
38// ,-----------------------------------------------------------------------------------.
39// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
40// `-----------------------------------------------------------------------------------'
41//
42// Hint
43// ▔▔▔▔
44// For sculpted keycaps such as Cherry or OEM profile, reverse the Alt, Num,
45// Shift, Shift, Nav, Sym keycaps for more ergonomic thumb orientation and
46// actuation
47//
48// Code
49// ▔▔▔▔
50// This source is shamelessly based on the "default" planck layout
51//
52// #ifdef/#endif block structures are not indented, as syntax highlighting
53// in vim is sufficient for identification
54//
55// c++ commenting style is used throughout
56//
57// Change history
58// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔
59// See http://thedarnedestthing.com/planck%20constant
60// See http://thedarnedestthing.com/planck%20done
61
62
63
64// === N O T E ===
65//
66// sudo CPATH=<keymap.c directory>/common make ...
67
68
69#include "config.h"
70#include "planck.h"
71#include "action_layer.h"
72#ifdef STENO_ENABLE
73#include "keymap_steno.h"
74#endif
75#ifdef AUDIO_ENABLE
76#include "audio.h"
77#endif
78#include "eeconfig.h"
79
80extern keymap_config_t keymap_config;
81
82enum planck_layers {
83 _BASE = 0
84 ,_SHIFT
85 ,_LSHIFT
86 ,_RSHIFT
87 ,_PLOVER
88 ,_NUMBER
89 ,_SYMBOL
90 ,_FNCKEY
91 ,_MOUSE
92#ifdef CENTER_TT
93 ,_TTNUMBER
94 ,_TTREGEX
95 ,_TTFNCKEY
96 ,_TTCURSOR
97 ,_TTMOUSE
98#endif
99#ifndef SHIFT_SYMBOLS
100 ,_NUMSYM
101 ,_SYMREG
102#endif
103 ,_EDIT
104 ,_QWERTY
105 ,_ADJUST
106 ,_END_LAYERS
107};
108
109enum planck_keycodes {
110 BASE = SAFE_RANGE
111 ,BASE1
112 ,BASE2
113 ,PLOVER
114 ,PLOEXIT
115 ,SM_CIRC // pseudo GUI_T(S(KC_6)) for shifted key-codes, see process_record_user()
116 ,SM_DLR // pseudo SFT_T(S(KC_4)) for shifted key-codes, see process_record_user()
117 ,SM_G // pseudo MT (MOD_LALT | MOD_LSFT, S(KC_G)) for shifted key-codes, see process_record_user()
118 ,SM_K // pseudo MT (MOD_LGUI | MOD_LSFT, S(KC_K)) for shifted key-codes, see process_record_user()
119 ,SM_PERC // pseudo ALT_T(S(KC_5)) for shifted key-codes, see process_record_user()
120 ,SM_LPRN // pseudo CTL_T(S(KC_9)) for shifted key-codes, see process_record_user()
121 ,SM_W // pseudo MT (MOD_LGUI | MOD_LSFT, S(KC_W)) for shifted key-codes, see process_record_user()
122 ,SL_LEFT // pseudo LT (_MOUSE, S(KC_LEFT)) for shifted key-codes, see process_record_user()
123 ,SP_DEL // pseudo LT (_MOUSE, KC_DEL) for shifted key-codes, see process_record_user()
124 ,SL_PIPE // pseudo LT (_ADJUST, S(KC_BSLS)) for shifted key-codes, see process_record_user()
125 ,SL_TAB // pseudo LT (_FNCKEY, S(KC_TAB)) for shifted key-codes, see process_record_user()
126#ifdef CENTER_TT
127 ,TT_ESC
128#endif
129#ifdef STENO_ENABLE
130 ,PS_STNA = STN_A
131 ,PS_STNO = STN_O
132 ,PS_STNE = STN_E
133 ,PS_STNU = STN_U
134#else
135 ,LT_C = LT (_NUMBER, KC_C)
136 ,LT_V = LT (_FNCKEY, KC_V)
137 ,LT_N = LT (_EDIT, KC_N)
138 ,LT_M = LT (_SYMBOL, KC_M)
139#endif
140 ,PS_BASE
141};
142
143// modifier keys
144#define AT_B ALT_T(KC_B)
145#define AT_DOWN ALT_T(KC_DOWN)
146#define CT_RGHT CTL_T(KC_RGHT)
147#define GT_C GUI_T(KC_C)
148#define GT_UP GUI_T(KC_UP)
149#define MT_E MT (MOD_LCTL | MOD_LALT, KC_E)
150#define MT_X MT (MOD_LALT | MOD_LSFT, KC_X)
151#define ST_A SFT_T(KC_A)
152#ifdef HOME_MODS
153#define HOME_K GUI_T(KC_K)
154#define HOME_H CTL_T(KC_H)
155#define HOME_E ALT_T(KC_E)
156#define HOME_A SFT_T(KC_A)
157#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
158#define HOME_T SFT_T(KC_T)
159#define HOME_R ALT_T(KC_R)
160#define HOME_S CTL_T(KC_S)
161#define HOME_W GUI_T(KC_W)
162#else
163#define HOME_T SFT_T(KC_T)
164#define HOME_S ALT_T(KC_S)
165#define HOME_N GUI_T(KC_N)
166#define HOME_B CTL_T(KC_B)
167#endif
168#else
169#define HOME_K KC_K
170#define HOME_H KC_H
171#define HOME_E KC_E
172#define HOME_A KC_A
173#define HOME_T KC_T
174#define HOME_S KC_S
175#define HOME_N KC_N
176#define HOME_B KC_B
177#endif
178
179#define S_DOWN S (KC_DOWN)
180#define S_LEFT S (KC_LEFT)
181#define S_RGHT S (KC_RGHT)
182#define S_TAB S (KC_TAB)
183#define S_UP S (KC_UP)
184
185#include "tapdance.h"
186
187// keycodes
188#define ___x___ KC_TRNS
189#define ___fn__ KC_TRNS
190#ifdef _______
191#undef _______
192#endif
193#define _______ KC_NO
194
195#define COPY LCTL(KC_C)
196#define CUT LCTL(KC_X)
197#define EOT LCTL(KC_D)
198#define NAK LCTL(KC_U)
199#define PASTE LCTL(KC_V)
200#define UNDO LCTL(KC_Z)
201#define TMCOPY LALT(LCTL(KC_C))
202#define TMPASTE LALT(LCTL(KC_V))
203#define LT_BSLS LT (_MOUSE, KC_BSLS) // see process_record_user() for extended handling
204#define LT_BSPC LT (_EDIT, KC_BSPC)
205#define SP_LEFT LT (_EDIT, KC_LEFT)
206#define LT_ESC LT (_NUMBER, KC_ESC)
207#define LT_LEFT LT (_SYMBOL, KC_LEFT) // see process_record_user() for extended handling
208#define SP_BSPC LT (_SYMBOL, KC_BSPC) // see process_record_user() for extended handling
209#define LT_TAB LT (_FNCKEY, KC_TAB)
210#define LT_INS LT (_FNCKEY, KC_INS)
211#define LT_ALTG LT (_FNCKEY, KC_RALT)
212#define ADJUST MO (_ADJUST)
213#define OS_ALT OSM (MOD_LALT)
214#define OS_CTL OSM (MOD_LCTL)
215#define OS_GUI OSM (MOD_LGUI)
216#define OS_SFT OSM (MOD_LSFT)
217#define OS_CALT OSM (MOD_LALT | MOD_LCTL)
218#define OS_CGUI OSM (MOD_LGUI | MOD_LCTL)
219#define OS_CSFT OSM (MOD_LSFT | MOD_LCTL)
220#define OS_SALT OSM (MOD_LALT | MOD_LSFT)
221#define OS_SGUI OSM (MOD_LGUI | MOD_LSFT)
222
223#ifdef CENTER_TT
224#ifdef BEAKLSP
225#define CNTR_TL OSM (MOD_LSFT)
226#else
227#define CNTR_TL TT (_TTFNCKEY)
228#endif
229#define CNTR_TR KC_CAPS
230#define CNTR_HL TT (_TTCURSOR)
231#define CNTR_HR TT (_TTMOUSE)
232#define CNTR_BL TT (_TTNUMBER)
233#define CNTR_BR TT (_TTREGEX)
234#else
235#define CNTR_TL OSM (MOD_LALT | MOD_LCTL)
236#define CNTR_TR OSM (MOD_LGUI | MOD_LCTL)
237#define CNTR_HL OSM (MOD_LALT | MOD_LSFT)
238#define CNTR_HR OSM (MOD_LGUI | MOD_LSFT)
239#define CNTR_BL TD (_CAPS)
240#define CNTR_BR OSM (MOD_LSFT | MOD_LCTL)
241#endif
242
243#ifdef THUMB_0
244#define LT_EQL LT (_ADJUST, KC_EQL)
245#else
246#define LT_0 LT (_ADJUST, KC_0)
247#endif
248#ifndef SHIFT_SYMBOLS
249#define LT_A LT (_NUMSYM, KC_A)
250#define LT_LFTX LT (_SYMREG, KC_LEFT)
251#endif
252
253// ........................................................ Default Alpha Layout
254
255const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
256
257#include "beakl.h"
258#include "colemak.h"
259#include "qwerty.h"
260#include "steno_layout.h"
261
262// ...................................................... Number / Function Keys
263
264#include "number_fkey_layout.h"
265
266// ......................................................... Symbol / Navigation
267
268#include "symbol_guifn_layout.h"
269
270// ............................................................... Toggle Layers
271
272#ifdef CENTER_TT
273#include "toggle_layout.h"
274#endif
275
276// ......................................................... Short Cuts / Adjust
277
278#include "chord_layout.h"
279
280};
281
282// ...................................................................... Sounds
283
284#include "sounds.h"
285
286// ........................................................... User Keycode Trap
287
288#include "keycode_functions.h"
289
290#define BASE_1 1
291#define BASE_2 2
292#define BASE_12 3
293static uint8_t base_n = 0;
294
295bool process_record_user(uint16_t keycode, keyrecord_t *record)
296{
297 switch (keycode) {
298 case BASE1:
299 if (record->event.pressed) {
300 base_n = base_n | BASE_1;
301 if (base_n == BASE_12) {
302 base_layer();
303 }
304 }
305 else {
306 base_n = base_n & ~BASE_1;
307 }
308 return false;
309 case BASE2:
310 if (record->event.pressed) {
311 base_n = base_n | BASE_2;
312 if (base_n == BASE_12) {
313 base_layer();
314 }
315 }
316 else {
317 base_n = base_n & ~BASE_2;
318 }
319 return false;
320 case AT_DOWN:
321#ifdef HOME_MODS
322 case HOME_E:
323#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
324 case HOME_R:
325#else
326 case HOME_S:
327#endif
328#endif
329 tap_mods(record, KC_LALT);
330 break;
331 case CT_RGHT:
332#ifdef HOME_MODS
333 case HOME_K:
334#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
335 case HOME_W:
336#else
337 case HOME_B:
338#endif
339#endif
340 tap_mods(record, KC_LGUI);
341 break;
342 case GT_UP:
343#ifdef HOME_MODS
344 case HOME_H:
345#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
346 case HOME_S:
347#else
348 case HOME_N:
349#endif
350#endif
351 tap_mods(record, KC_LCTL);
352 break;
353#ifdef HOME_MODS
354 case HOME_A:
355 case HOME_T:
356 tap_mods(record, KC_LSFT);
357 break;
358#endif
359#ifdef CENTER_TT
360 case TT_ESC:
361 clear_tt(); // exit TT layer
362 return false;
363#endif
364 case LT_ESC:
365#ifdef CENTER_TT
366 if (tt_keycode != 0) {
367 clear_tt(); // exit TT layer
368 return false;
369 }
370#endif
371 tap_layer(record, _NUMBER);
372 break;
373 case LT_LEFT:
374 case SP_BSPC:
375 tap_layer(record, _SYMBOL);
376 // LT (_SYMBOL, KC_LEFT) left right combination layer
377 thumb_layer(record, RIGHT, 0, 0, _SYMBOL, _LSHIFT);
378 break;
379 case OS_ALT:
380 tap_mods(record, KC_LALT);
381 break;
382 case OS_CTL:
383 tap_mods(record, KC_LCTL);
384 break;
385 case OS_GUI:
386 tap_mods(record, KC_LGUI);
387 break;
388 case SM_CIRC:
389 // GUI_T(S(KC_6))
390 mt_shift(record, KC_LGUI, 0, KC_6);
391 break;
392 case SM_DLR:
393 // SFT_T(S(KC_4))
394 mt_shift(record, KC_LSFT, 0, KC_4);
395 break;
396 case SM_G:
397 // MT(MOD_LALT | MOD_LSFT, S(KC_G))
398 mt_shift(record, KC_LALT, KC_LSFT, KC_G);
399 break;
400 case SM_K:
401 // MT(MOD_LGUI | MOD_LSFT, S(KC_K))
402 mt_shift(record, KC_LGUI, KC_LSFT, KC_K);
403 break;
404 case SM_W:
405 // MT(MOD_LGUI | MOD_LSFT, S(KC_W))
406 mt_shift(record, KC_LGUI, KC_LSFT, KC_W);
407 break;
408 case SM_LPRN:
409 // CTL_T(S(KC_9))
410 mt_shift(record, KC_LCTL, 0, KC_9);
411 break;
412 case SM_PERC:
413 // ALT_T(S(KC_5))
414 mt_shift(record, KC_LALT, 0, KC_5);
415 break;
416 case LT_BSLS:
417 tap_layer(record, _MOUSE);
418 // LT (_MOUSE, KC_BSLS) left right combination layer, see #define LT_BSLS
419 thumb_layer(record, LEFT, 0, 0, _MOUSE, _SYMBOL);
420 break;
421 case SL_LEFT:
422 tap_layer(record, _MOUSE);
423 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
424 thumb_layer(record, RIGHT, SHIFT, KC_LEFT, _MOUSE, _LSHIFT);
425 break;
426 case SP_DEL:
427 tap_layer(record, _MOUSE);
428 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
429 thumb_layer(record, RIGHT, NOSHIFT, KC_DEL, _MOUSE, _LSHIFT);
430 break;
431 case SL_PIPE:
432 // LT (_ADJUST, S(KC_BSLS)) emulation
433 lt_shift(record, KC_BSLS, _ADJUST);
434 break;
435 case SL_TAB:
436 // LT (_FNCKEY, S(KC_TAB)) emulation
437 lt_shift(record, KC_TAB, _FNCKEY);
438 break;
439 case TD_ENT:
440 tap_layer(record, _RSHIFT);
441 // LT (_RSHIFT, KC_ENT) emulation, see tap dance enter
442 break;
443 case TD_SPC:
444 tap_layer(record, _LSHIFT);
445 // LT (_LSHIFT, KC_SPC) left right combination layer, see tap dance TD_SPC
446 thumb_layer(record, LEFT, 0, 0, _LSHIFT, _SYMBOL);
447 break;
448#ifdef CENTER_TT
449 case CNTR_TL:
450 case CNTR_TR:
451 case CNTR_HL:
452 case CNTR_HR:
453 case CNTR_BL:
454 case CNTR_BR:
455 if (tt_keycode != keycode && tt_keycode != 0) {
456 clear_tt(); // return to base layer first if different TT layer selected
457 }
458 tt_keycode = keycode;
459 break;
460#endif
461// #ifdef STENO_ENABLE
462// case PS_STNA:
463// stn_layer(record, STN_A, _NUMBER);
464// break;
465// case PS_STNO:
466// stn_layer(record, STN_O, _FNCKEY);
467// break;
468// case PS_STNE:
469// stn_layer(record, STN_E, _EDIT);
470// break;
471// case PS_STNU:
472// stn_layer(record, STN_U, _SYMBOL);
473// break;
474// #endif
475 case PS_BASE:
476 if (record->event.pressed) {
477 base_layer();
478 }
479 return false;
480 case PLOVER:
481 steno(record);
482 return false;
483 case PLOEXIT:
484 steno_exit(record);
485 return false;
486 }
487 return true;
488}
489
490#include "init.h"
diff --git a/keyboards/planck/keymaps/altgr/private_string.h b/keyboards/planck/keymaps/altgr/private_string.h
new file mode 100644
index 000000000..6ea34cc8e
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/private_string.h
@@ -0,0 +1 @@
SEND_STRING("the keys of enoch");
diff --git a/keyboards/planck/keymaps/altgr/qwerty.h b/keyboards/planck/keymaps/altgr/qwerty.h
new file mode 100644
index 000000000..d11d0478b
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/qwerty.h
@@ -0,0 +1,64 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ...................................................................... Qwerty
5#ifdef QWERTY
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | ; |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Z | X | C | V | B | Caps |^Shift| N | M | , | . | " |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_W, KC_E, KC_R, KC_T, CNTR_TL, CNTR_TR, KC_Y, KC_U, KC_I, KC_O, KC_P },
18 {KC_A, KC_S, KC_D, KC_F, KC_G, CNTR_HL, CNTR_HR, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
19 {KC_Z, KC_X, KC_C, KC_V, KC_B, CNTR_BL, CNTR_BR, KC_N, KC_M, KC_COMM, KC_DOT, TD_QUOT},
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
25 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), KC_SCLN},
26 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_COMM, KC_DOT, TD_QUOT},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | Z | X | C | V | B | Caps |^Shift| N | M | / | ? | " |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
42 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
43 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_SLSH, KC_QUES, TD_DQOT},
44 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | Z | X | C | V | B | Caps |^Shift| N | M | ~ | ` | " |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
59 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
60 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), TD_TILD, TD_GRV, TD_DQOT},
61 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
diff --git a/keyboards/planck/keymaps/altgr/readme.md b/keyboards/planck/keymaps/altgr/readme.md
new file mode 100644
index 000000000..58f73e3b4
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/readme.md
@@ -0,0 +1,10 @@
1# The sdothum extended Default Planck Layout
2
3- Colemak-DH layout layer with shift/tab key overlays
4- Number and symbol/function key layer
5- Hexadecimal keypad layer
6- Navigation keypad layer
7- Dynamic macro layer
8- Autocompletion tap key pairs (),[],{}
9- Normalized enter and esc key position across keyboard layers
10- Extensive use of tap keys
diff --git a/keyboards/planck/keymaps/altgr/rules.mk b/keyboards/planck/keymaps/altgr/rules.mk
new file mode 100644
index 000000000..40f153844
--- /dev/null
+++ b/keyboards/planck/keymaps/altgr/rules.mk
@@ -0,0 +1,26 @@
1# Build Options:
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4
5BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # mouse keys(+4700)
7EXTRAKEY_ENABLE = no # audio control and System control(+450)
8CONSOLE_ENABLE = no # console for debug(+400)
9COMMAND_ENABLE = no # commands for debug and configuration
10NKRO_ENABLE = yes # nkey rollover
11BACKLIGHT_ENABLE = no # enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # audio output on port C6
14UNICODE_ENABLE = no # unicode
15BLUETOOTH_ENABLE = no # enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # enable WS2812 RGB underlight, do not enable this with audio at the same time.
17STENO_ENABLE = yes # enable TX Bolt protocol, requires VIRTSER and may not work with mouse keys
18
19# do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
20SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
21
22TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
23
24ifndef QUANTUM_DIR
25include ../../../../Makefile
26endif
diff --git a/keyboards/planck/keymaps/hiea/common/chord_layout.h b/keyboards/planck/keymaps/hiea/common/chord_layout.h
new file mode 100644
index 000000000..2c785d56c
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/chord_layout.h
@@ -0,0 +1,41 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................. Short Cuts
5
6 // .-----------------------------------------------------------------------------------.
7 // | | | Copy | Paste| | | | | | | | |
8 // |--------------------------------------------------------------+------+------+------|
9 // | Undo | Cut | Copy | Paste| | | | | PRIV | PUB | | |
10 // |-----------------------------------------------------------------------------------|
11 // | | | Nak | Eot | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | | | | f() | | | | | |
14 // | | | | | | | | f() | | | | | see _PLOVER
15 // '-----------------------------------------------------------------------------------'
16
17 [_EDIT] = {
18 {_______, _______, TMCOPY, TMPASTE, _______, _______, _______, _______, _______, _______, _______, _______},
19 {UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, TD_PRIV, TD_SEND, _______, _______},
20 {_______, _______, NAK, EOT, _______, _______, _______, _______, _______, _______, _______, _______},
21 {_______, _______, _______, _______, _______, _______, ___fn__, ___fn__, _______, _______, _______, _______},
22 },
23
24// ................................................................ Adjust Layer
25
26 // ,-----------------------------------------------------------------------------------.
27 // |Plover| | | | | | | | | | | |
28 // |------+------+------+------+------+-------------+------+------+------+------+------|
29 // |Aud on| | | | | | | | | | | |
30 // |------+------+------+------+------+------|------+------+------+------+------+------|
31 // | Reset| | | | | | | | | | | |
32 // |------+------+------+------+------+------+------+------+------+------+------+------|
33 // | | | | f() | | | | | f() | | | |
34 // `-----------------------------------------------------------------------------------'
35
36 [_ADJUST] = {
37 {PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
38 {AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
39 {RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
40 {_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______},
41 },
diff --git a/keyboards/planck/keymaps/hiea/common/init.h b/keyboards/planck/keymaps/hiea/common/init.h
new file mode 100644
index 000000000..6366a19f6
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/init.h
@@ -0,0 +1,56 @@
1
2// ....................................................................... Audio
3
4void matrix_init_user(void)
5{
6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12}
13
14#ifdef AUDIO_ENABLE
15#ifdef BACKLIGHT_ENABLE
16void led_set_user(uint8_t usb_led)
17{
18 static uint8_t old_usb_led = 0;
19 _delay_ms(10); // gets rid of tick
20 if (!is_playing_notes()) {
21 if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
22 // if capslock LED is turning on
23 PLAY_SONG(song_caps_on);
24 }
25 else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
26 // if capslock LED is turning off
27 PLAY_SONG(song_caps_off);
28 }
29 }
30 old_usb_led = usb_led;
31}
32#endif
33
34void startup_user(void)
35{
36 _delay_ms(20); // gets rid of tick
37 PLAY_SONG(song_startup);
38}
39
40void shutdown_user(void)
41{
42 PLAY_SONG(song_goodbye);
43 _delay_ms(150);
44 stop_all_notes();
45}
46
47void music_on_user(void)
48{
49 music_scale_user();
50}
51
52void music_scale_user(void)
53{
54 PLAY_SONG(music_scale);
55}
56#endif
diff --git a/keyboards/planck/keymaps/hiea/common/keycode_functions.h b/keyboards/planck/keymaps/hiea/common/keycode_functions.h
new file mode 100644
index 000000000..e0ae15089
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/keycode_functions.h
@@ -0,0 +1,657 @@
1
2// .......................................................... Keycode Primitives
3
4// register simple key press
5void tap_key(uint16_t keycode)
6{
7 register_code (keycode);
8 unregister_code(keycode);
9}
10
11void shift_key(uint16_t keycode)
12{
13 register_code (KC_LSFT);
14 tap_key (keycode);
15 unregister_code(KC_LSFT);
16}
17
18#define SHIFT 1
19#define NOSHIFT 0
20
21static uint16_t key_timer = 0;
22
23// key press for thumb_layer() and lt_shift() macros
24bool key_press(uint8_t shift, uint16_t keycode)
25{
26 if (keycode) {
27 if (timer_elapsed(key_timer) < TAPPING_TERM) {
28 if (shift) {
29 shift_key(keycode);
30 }
31 else {
32 tap_key(keycode);
33 }
34 return true;
35 }
36 }
37 return false;
38}
39
40// ALT_T, CTL_T, GUI_T, SFT_T for shifted keycodes
41void mt_shift(keyrecord_t *record, uint16_t modifier, uint16_t modifier2, uint16_t keycode)
42{
43 if (record->event.pressed) {
44 key_timer = timer_read();
45 register_code(modifier);
46 if (modifier2) {
47 register_code(modifier2);
48 }
49 }
50 else {
51 unregister_code(modifier);
52 if (modifier2) {
53 unregister_code(modifier2);
54 }
55 if (timer_elapsed(key_timer) < TAPPING_TERM) {
56 shift_key(keycode);
57 }
58 key_timer = 0;
59 }
60}
61
62// ................................................................... Mod Masks
63
64// tap dance persistant mods, see process_record_user()
65// keyboard_report->mods (?) appears to be cleared by tap dance
66static uint8_t mods = 0;
67
68void tap_mods(keyrecord_t *record, uint16_t keycode)
69{
70 if (record->event.pressed) {
71 mods |= MOD_BIT(keycode);
72 }
73 else {
74 mods &= ~(MOD_BIT(keycode));
75 }
76}
77
78// (un)register modifiers
79void modifier(void (*f)(uint8_t))
80{
81 if (mods & MOD_BIT(KC_LCTL)) {
82 (*f)(KC_LCTL);
83 }
84 if (mods & MOD_BIT(KC_LGUI)) {
85 (*f)(KC_LGUI);
86 }
87 if (mods & MOD_BIT(KC_LALT)) {
88 (*f)(KC_LALT);
89 }
90}
91
92// .................................................... Triple Dance Shift/Layer
93
94static uint8_t dt_shift = 0;
95
96void double_shift(uint16_t keycode, uint8_t layer)
97{
98 tap_key (keycode);
99 if (DT_SHIFT) {
100 // set_oneshot_mods(MOD_LSFT);
101 // layer_on(layer);
102 layer_on (_SHIFT);
103 set_oneshot_layer(_SHIFT, ONESHOT_START);
104 dt_shift = 1;
105 }
106 else {
107 layer_on(layer);
108 }
109}
110
111// tap dance LT (LAYER, KEY) emulation with <KEY><DOWN> -> <KEY><SHIFT> and auto-repeat extensions!
112void tap_shift(qk_tap_dance_state_t *state, uint16_t keycode, uint8_t layer)
113{
114 // double tap plus down
115 if (state->count > 2) {
116 // double enter shift
117 if (keycode == KC_ENT) {
118 tap_key (keycode);
119 double_shift(keycode, layer);
120 }
121 // repeating keycode
122 else {
123 register_code(keycode);
124 }
125 }
126 // tap plus down (or double tap): keycode (one shot) shift
127 else if (state->count > 1) {
128 double_shift(keycode, layer);
129 }
130 // down: shift
131 else if (state->pressed) {
132 layer_on(layer);
133 }
134 // tap: keycode
135 else {
136 modifier(register_code);
137 tap_key (keycode);
138 modifier(unregister_code);
139 }
140}
141
142void tap_reset(uint16_t keycode, uint8_t layer)
143{
144 unregister_code(keycode);
145 if (DT_SHIFT && dt_shift) {
146 clear_oneshot_layer_state(ONESHOT_PRESSED);
147 dt_shift = 0;
148 }
149 else {
150 layer_off(layer);
151 }
152}
153
154// augment pseudo LT (_RSHIFT, KC_ENT) handling below for rapid <ENTER><SHIFT> sequences
155void enter(qk_tap_dance_state_t *state, void *user_data)
156{
157 tap_shift(state, KC_ENT, _RSHIFT);
158}
159
160void enter_reset(qk_tap_dance_state_t *state, void *user_data)
161{
162 tap_reset(KC_ENT, _RSHIFT);
163}
164
165// augment pseudo LT (_LSHIFT, KC_SPC) handling below for rapid <SPACE><SHIFT> sequences
166void space(qk_tap_dance_state_t *state, void *user_data)
167{
168 tap_shift(state, KC_SPC, _LSHIFT);
169}
170
171void space_reset(qk_tap_dance_state_t *state, void *user_data)
172{
173 tap_reset(KC_SPC, _LSHIFT);
174}
175
176// ......................................................... Triple Dance Insert
177
178void double_max(uint8_t count, uint8_t shift, uint16_t keycode)
179{
180 if (shift) {
181 shift_key(keycode);
182 if (count > 1) {
183 shift_key(keycode);
184 }
185 }
186 else {
187 tap_key(keycode);
188 if (count > 1) {
189 tap_key(keycode);
190 }
191 }
192}
193
194void colon(qk_tap_dance_state_t *state, void *user_data)
195{
196 if (state->count > 2) {
197 tap_key (KC_SPC);
198 shift_key(KC_SCLN);
199 shift_key(KC_SCLN);
200 tap_key (KC_SPC);
201 }
202 else {
203 double_max(state->count, SHIFT, KC_SCLN);
204 }
205 reset_tap_dance(state);
206}
207
208void eql(qk_tap_dance_state_t *state, void *user_data)
209{
210 if (state->count > 2) {
211 tap_key(KC_SPC);
212 tap_key(KC_SLSH);
213 tap_key(KC_EQL);
214 tap_key(KC_SPC);
215 }
216 else {
217 double_max(state->count, NOSHIFT, KC_EQL);
218 }
219 reset_tap_dance(state);
220}
221
222void greater(qk_tap_dance_state_t *state, void *user_data)
223{
224 if (state->count > 2) {
225 tap_key (KC_SPC);
226 tap_key (KC_MINS);
227 shift_key(KC_DOT);
228 tap_key (KC_SPC);
229 }
230 else {
231 double_max(state->count, SHIFT, KC_DOT);
232 }
233 reset_tap_dance(state);
234}
235
236void lesser(qk_tap_dance_state_t *state, void *user_data)
237{
238 if (state->count > 2) {
239 tap_key (KC_SPC);
240 shift_key(KC_COMM);
241 tap_key (KC_MINS);
242 tap_key (KC_SPC);
243 }
244 else {
245 double_max(state->count, SHIFT, KC_COMM);
246 }
247 reset_tap_dance(state);
248}
249
250void tilde(qk_tap_dance_state_t *state, void *user_data)
251{
252 // double tap plus down: repeating keycode
253 if (state->count > 2) {
254 register_code(KC_LSFT);
255 register_code(KC_GRV);
256 }
257 // tap: keycode
258 else {
259 shift_key(KC_GRV);
260 // double tap: unix home directory
261 if (state->count > 1) {
262 tap_key(KC_SLSH);
263 }
264 }
265}
266
267void tilde_reset(qk_tap_dance_state_t *state, void *user_data)
268{
269 unregister_code(KC_GRV);
270 unregister_code(KC_LSFT);
271}
272
273// ............................................................. Tap Dance Pairs
274
275// tap dance shift rules
276#define S_NEVER 0
277#define S_SINGLE 1
278#define S_DOUBLE 2
279#define S_ALWAYS S_SINGLE | S_DOUBLE
280
281void symbol_pair(uint8_t shift, uint16_t left, uint16_t right)
282{
283 if (shift & S_DOUBLE) {
284 shift_key(left);
285 shift_key(right);
286 }
287 else {
288 tap_key(left);
289 tap_key(right);
290 }
291}
292
293#define CLOSE 1
294
295// tap dance symbol pairs
296void tap_pair(qk_tap_dance_state_t *state, uint8_t shift, uint16_t left, uint16_t right, uint16_t modifier, uint8_t close)
297{
298 // triple tap: left right with cursor between symbol pair a la vim :-)
299 if (state->count > 2) {
300 symbol_pair(shift, left, right);
301 tap_key (KC_LEFT);
302 }
303 // double tap: left right
304 else if (state->count > 1) {
305 symbol_pair(shift, left, right);
306 }
307 // down: modifier
308 else if (state->pressed) {
309 if (modifier) {
310 register_code(modifier);
311 }
312 }
313 // tap: left (close: right)
314 else {
315 if (shift & S_SINGLE) {
316 shift_key(close ? right : left);
317 }
318 else {
319 tap_key(close ? right : left);
320 }
321 }
322 if (!modifier) {
323 reset_tap_dance(state);
324 }
325}
326
327void doublequote(qk_tap_dance_state_t *state, void *user_data)
328{
329 tap_pair(state, S_ALWAYS, KC_QUOT, KC_QUOT, 0, 0);
330}
331
332void grave(qk_tap_dance_state_t *state, void *user_data)
333{
334 tap_pair(state, S_NEVER, KC_GRV, KC_GRV, 0, 0);
335}
336
337void lbrace(qk_tap_dance_state_t *state, void *user_data)
338{
339 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, 0);
340}
341
342void lcurly(qk_tap_dance_state_t *state, void *user_data)
343{
344 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, 0);
345}
346
347void lparen(qk_tap_dance_state_t *state, void *user_data)
348{
349 tap_pair(state, S_ALWAYS, KC_9, KC_0, KC_LCTL, 0);
350}
351
352void lparen_reset(qk_tap_dance_state_t *state, void *user_data)
353{
354 unregister_code(KC_LCTL);
355}
356
357void quote(qk_tap_dance_state_t *state, void *user_data)
358{
359 tap_pair(state, S_NEVER, KC_QUOT, KC_QUOT, 0, 0);
360}
361
362void rangle(qk_tap_dance_state_t *state, void *user_data)
363{
364 tap_pair(state, S_ALWAYS, KC_COMM, KC_DOT, 0, CLOSE);
365}
366
367void rbrace(qk_tap_dance_state_t *state, void *user_data)
368{
369 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, CLOSE);
370}
371
372void rcurly(qk_tap_dance_state_t *state, void *user_data)
373{
374 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, CLOSE);
375}
376
377void rparen(qk_tap_dance_state_t *state, void *user_data)
378{
379 tap_pair(state, S_ALWAYS, KC_9, KC_0, 0, CLOSE);
380}
381
382void rparen_reset(qk_tap_dance_state_t *state, void *user_data)
383{
384 unregister_code(KC_LCTL);
385}
386
387// ............................................................ Tap Dance Insert
388
389void comma(qk_tap_dance_state_t *state, void *user_data)
390{
391 tap_key(KC_COMM);
392 if (state->count > 1) {
393 tap_key(KC_SPC);
394 }
395 reset_tap_dance(state);
396}
397
398void dot(qk_tap_dance_state_t *state, void *user_data)
399{
400 if (state->count > 1) {
401 shift_key(KC_COLN);
402 }
403 else {
404 tap_key(KC_DOT);
405 }
406 reset_tap_dance(state);
407}
408
409// compile time macro string, see functions/hardware planck script
410void private(qk_tap_dance_state_t *state, void *user_data)
411{
412 if (state->count > 1) {
413#ifdef PRIVATE_STRING
414#include "private_string.h"
415#endif
416 }
417 reset_tap_dance(state);
418}
419
420// config.h defined string
421void send(qk_tap_dance_state_t *state, void *user_data)
422{
423 if (state->count > 1) {
424 SEND_STRING(PUBLIC_STRING);
425 }
426 reset_tap_dance(state);
427}
428
429// .......................................................... Tap Dance One Shot
430
431void caps(qk_tap_dance_state_t *state, void *user_data)
432{
433 if (state->count > 1) {
434 tap_key(KC_CAPS);
435 }
436 else {
437 set_oneshot_mods(MOD_LSFT);
438 register_code (KC_LSFT); // on hold down
439 }
440}
441
442void caps_reset(qk_tap_dance_state_t *state, void *user_data)
443{
444 unregister_code(KC_LSFT);
445}
446
447// ................................................................... Tap Dance
448
449qk_tap_dance_action_t tap_dance_actions[] = {
450 [_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, caps_reset)
451 ,[_COLN] = ACTION_TAP_DANCE_FN (colon)
452 ,[_COMM] = ACTION_TAP_DANCE_FN (comma)
453 ,[_DOT] = ACTION_TAP_DANCE_FN (dot)
454 ,[_DQOT] = ACTION_TAP_DANCE_FN (doublequote)
455 ,[_ENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, enter, enter_reset)
456 ,[_EQL] = ACTION_TAP_DANCE_FN (eql)
457 ,[_GRV] = ACTION_TAP_DANCE_FN (grave)
458 ,[_GT] = ACTION_TAP_DANCE_FN (greater)
459 ,[_LBRC] = ACTION_TAP_DANCE_FN (lbrace)
460 ,[_LCBR] = ACTION_TAP_DANCE_FN (lcurly)
461 ,[_LPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lparen, lparen_reset)
462 ,[_LT] = ACTION_TAP_DANCE_FN (lesser)
463 ,[_PRIV] = ACTION_TAP_DANCE_FN (private)
464 ,[_QUOT] = ACTION_TAP_DANCE_FN (quote)
465 ,[_RBRC] = ACTION_TAP_DANCE_FN (rbrace)
466 ,[_RCBR] = ACTION_TAP_DANCE_FN (rcurly)
467 ,[_RNGL] = ACTION_TAP_DANCE_FN (rangle)
468 ,[_RPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rparen, rparen_reset)
469 ,[_SEND] = ACTION_TAP_DANCE_FN (send)
470 ,[_SPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, space, space_reset)
471 ,[_TILD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tilde, tilde_reset)
472};
473
474// .............................................................. Dynamic Layers
475
476#define LEFT 1
477#define RIGHT 2
478static uint8_t thumb = 0;
479
480// LEFT (KC_SPC, S(KC_BSLS)), RIGHT (KC_LEFT, S(KC_LEFT)) opposite thumb combinations, see process_record_user()
481// up, up -> _BASE
482// up, down -> _SYMBOL
483// down, up -> _NUMBER
484// down, down -> _MOUSE // see layer keycodes that raise mouse layer
485#define THUMBS_DOWN _MOUSE // layer
486
487static uint8_t overlayer = 0;
488
489// left right thumb layer combinations
490void thumb_layer(keyrecord_t *record, uint8_t side, uint8_t shift, uint16_t keycode, uint8_t thumb_dn_layer, uint8_t thumb_up_layer)
491{
492 if (record->event.pressed) {
493 // layer_on via tap_layer(), see process_record_user()
494 key_timer = timer_read();
495 thumb = thumb | side;
496 }
497 else {
498 layer_off(thumb_dn_layer);
499 // opposite thumb_layer() thumb may have switched effective layer!
500 if (overlayer) {
501 layer_off(overlayer);
502 overlayer = 0;
503 }
504 if (!key_press(shift, keycode)) {
505 layer_off(THUMBS_DOWN); // both thumbs needed
506 // opposite thumb down? see left right combination layer table above
507 if (thumb & (side == LEFT ? RIGHT : LEFT)) {
508 layer_on(thumb_up_layer);
509 overlayer = thumb_up_layer;
510 }
511 }
512 clear_mods();
513 thumb = thumb & ~side;
514 key_timer = 0;
515 }
516}
517
518// #ifdef STENO_ENABLE
519// // LT for steno keycode
520// void stn_layer(keyrecord_t *record, uint16_t keycode, uint8_t layer)
521// {
522// if (record->event.pressed) {
523// key_timer = timer_read();
524// if (keycode) {
525// process_steno(keycode, record);
526// }
527// layer_on(layer);
528// }
529// else {
530// layer_off(layer);
531// if (keycode) {
532// if (timer_elapsed(key_timer) < TAPPING_TERM) {
533// process_steno(keycode, record);
534// }
535// else {
536// // clear pressed state (request push of updated) process_steno.c and .h
537// // steno_clear_state();
538// }
539// }
540// key_timer = 0;
541// }
542// }
543// #endif
544
545// LT for S(keycode)
546void lt_shift(keyrecord_t *record, uint16_t keycode, uint8_t layer)
547{
548 if (record->event.pressed) {
549 key_timer = timer_read();
550 layer_on(layer);
551 }
552 else {
553 layer_off(layer);
554 // for shifted keycodes, hence, LT_SHIFT
555 key_press(SHIFT, keycode);
556 clear_mods();
557 key_timer = 0;
558 }
559}
560
561// set layer asap to overcome macro latency errors, notably tap dance and LT usage
562// this routine inexplicably (?) sets layer_on() faster than can be done in thumb_layer()
563void tap_layer(keyrecord_t *record, uint8_t layer)
564{
565 if (record->event.pressed) {
566 layer_on(layer);
567 }
568 else {
569 layer_off(layer);
570 }
571}
572
573// ..................................................................... Keymaps
574
575// void persistant_default_layer_set(uint16_t default_layer)
576// {
577// eeconfig_update_default_layer(default_layer);
578// default_layer_set (default_layer);
579// }
580
581void clear_layers(void)
582{
583 uint8_t layer;
584 for (layer = 0; layer < _END_LAYERS; layer++) {
585 layer_off(layer);
586 }
587}
588
589#ifdef CENTER_TT
590static uint16_t tt_keycode = 0; // current TT keycode
591
592void clear_tt(void)
593{
594 if (tt_keycode == KC_CAPS) {
595 tap_key(KC_CAPS); // clear capslock
596 }
597 tt_keycode = 0;
598 clear_layers();
599 set_single_persistent_default_layer(_BASE);
600}
601#endif
602
603// txbolt plover run state
604static uint8_t plover = 0;
605
606void toggle_plover(uint8_t state)
607{
608 if (plover != state) {
609#ifdef PLOVER_KEYBIND
610#include "plover_keybind.h"
611#endif
612 plover = state;
613 }
614}
615
616void base_layer(void)
617{
618#ifdef AUDIO_ENABLE
619 if (plover) {
620 PLAY_SONG(song_plover_gb);
621 }
622 else {
623 PLAY_SONG(song_qwerty);
624 }
625#endif
626 clear_layers();
627 set_single_persistent_default_layer(_BASE);
628 toggle_plover(0);
629}
630
631void steno(keyrecord_t *record)
632{
633 if (record->event.pressed) {
634#ifdef AUDIO_ENABLE
635 PLAY_SONG(song_plover);
636#endif
637 clear_layers();
638 layer_on(_PLOVER);
639 if (!eeconfig_is_enabled()) {
640 eeconfig_init();
641 }
642 keymap_config.raw = eeconfig_read_keymap();
643 keymap_config.nkro = 1;
644 eeconfig_update_keymap(keymap_config.raw);
645 if (!plover) {
646 toggle_plover(1);
647 }
648 }
649}
650
651void steno_exit(keyrecord_t *record)
652{
653 if (record->event.pressed) {
654 base_layer();
655 toggle_plover(0);
656 }
657}
diff --git a/keyboards/planck/keymaps/hiea/common/number_fkey_layout.h b/keyboards/planck/keymaps/hiea/common/number_fkey_layout.h
new file mode 100644
index 000000000..321482b29
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/number_fkey_layout.h
@@ -0,0 +1,46 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | | | | 0 | = | | | |
14 // | | | | f() | | | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_NUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
23#else
24 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
25#endif
26 },
27
28// ............ .................................................. Function Keys
29
30 // .-----------------------------------------------------------------------------------.
31 // | | | | | | | | | F7 | F8 | F9 | F12 |
32 // |-----------------------------------------------------------------------------------|
33 // | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | | | | | | F1 | F2 | F3 | F10 |
36 // |-----------------------------------------------------------------------------------|
37 // | | | | | | f() | | + | | | | |
38 // | | | | | f() | | | + | | | | | see _PLOVER
39 // '-----------------------------------------------------------------------------------'
40
41 [_FNCKEY] = {
42 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
43 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
44 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
45 {_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
46 },
diff --git a/keyboards/planck/keymaps/hiea/common/plover_keybind.h b/keyboards/planck/keymaps/hiea/common/plover_keybind.h
new file mode 100644
index 000000000..cb4ef92ef
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/plover_keybind.h
@@ -0,0 +1,9 @@
1
2// simple window manager specific plover keybind hook
3
4// toggle plover application, see herbstluftwm/config/appbinds
5register_code (KC_LGUI);
6register_code (KC_LCTL);
7tap_key (KC_EQL);
8unregister_code(KC_LCTL);
9unregister_code(KC_LGUI);
diff --git a/keyboards/planck/keymaps/hiea/common/sounds.h b/keyboards/planck/keymaps/hiea/common/sounds.h
new file mode 100644
index 000000000..1bfc7a6da
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/sounds.h
@@ -0,0 +1,14 @@
1
2// ................................................................ Audio Sounds
3
4#ifdef AUDIO_ENABLE
5float song_startup [][2] = SONG(STARTUP_SOUND);
6float song_colemak [][2] = SONG(COLEMAK_SOUND);
7float song_qwerty [][2] = SONG(QWERTY_SOUND);
8float song_plover [][2] = SONG(PLOVER_SOUND);
9float song_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
10float song_caps_on [][2] = SONG(CAPS_LOCK_ON_SOUND);
11float song_caps_off [][2] = SONG(CAPS_LOCK_OFF_SOUND);
12float music_scale [][2] = SONG(MUSIC_SCALE_SOUND);
13float song_goodbye [][2] = SONG(GOODBYE_SOUND);
14#endif
diff --git a/keyboards/planck/keymaps/hiea/common/steno_layout.h b/keyboards/planck/keymaps/hiea/common/steno_layout.h
new file mode 100644
index 000000000..ab4a6fe01
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/steno_layout.h
@@ -0,0 +1,39 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ...................................................................... Plover
5#ifdef STENO_ENABLE
6 // ,-----------------------------------------------------------------------------------.
7 // | # | # | # | # | # | # | # | # | # | # | # | # |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | Base | S | T | P | H | * | * | F | P | L | T | D |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | | A | O | E | U | |
14 // `-----------------------------------------------------------------------------------'
15
16 [_PLOVER] = {
17 {STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC },
18 {BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR },
19 {BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR },
20 {_______, _______, _______, PS_STNA, PS_STNO, _______, _______, PS_STNE, PS_STNU, _______, _______, _______},
21 },
22#else
23 // ,-----------------------------------------------------------------------------------.
24 // | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
25 // |------+------+------+------+------+-------------+------+------+------+------+------|
26 // | Base | S | T | P | H | * | * | F | P | L | T | D |
27 // |------+------+------+------+------+------|------+------+------+------+------+------|
28 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
29 // |------+------+------+------+------+------+------+------+------+------+------+------|
30 // | | A | O | E | U | |
31 // `-----------------------------------------------------------------------------------'
32
33 [_PLOVER] = {
34 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
35 {BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
36 {BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
37 {_______, _______, _______, LT_C, LT_V, _______, _______, LT_N, LT_M, _______, _______, _______},
38 },
39#endif
diff --git a/keyboards/planck/keymaps/hiea/common/symbol_guifn_layout.h b/keyboards/planck/keymaps/hiea/common/symbol_guifn_layout.h
new file mode 100644
index 000000000..677e46409
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/symbol_guifn_layout.h
@@ -0,0 +1,40 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ..................................................... Symbol Navigation Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | ~ | * | & | | | | | Home | Up | End | PgUp |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | ^ | % | $ | | | | | Left | Down | Right| PgDn |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | @ | ! | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | |Adjust| \ | | f() | |
14 // '-----------------------------------------------------------------------------------'
15
16 [_SYMBOL] = {
17 {_______, KC_TILD, KC_ASTR, KC_AMPR, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
18 {OS_GUI, SM_CIRC, SM_PERC, SM_DLR, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
19 {_______, KC_HASH, KC_AT, KC_EXLM, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
20 {___x___, ___x___, ___x___, ADJUST, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
21 },
22
23// ............................................................... Mouse Actions
24
25 // .-----------------------------------------------------------------------------------.
26 // | | | | | | | | | Left | Up | Right| Up |
27 // |-----------------------------------------------------------------------------------|
28 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
29 // |-----------------------------------------------------------------------------------|
30 // | | | | | | | | | | | | |
31 // |-----------------------------------------------------------------------------------|
32 // | | | f() | | f() | |
33 // '-----------------------------------------------------------------------------------'
34
35 [_MOUSE] = {
36 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
37 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
38 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
39 {_______, _______, _______, _______, ___fn__, _______, _______, _______, ___fn__, _______, _______, _______},
40 },
diff --git a/keyboards/planck/keymaps/hiea/common/tapdance.h b/keyboards/planck/keymaps/hiea/common/tapdance.h
new file mode 100644
index 000000000..d778286bf
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/tapdance.h
@@ -0,0 +1,49 @@
1
2// tap dance keys
3enum tap_dance {
4 _CAPS = 0
5 ,_COLN
6 ,_COMM
7 ,_DOT
8 ,_DQOT
9 ,_ENT
10 ,_EQL
11 ,_GRV
12 ,_GT
13 ,_LBRC
14 ,_LCBR
15 ,_LPRN
16 ,_LT
17 ,_PRIV
18 ,_QUOT
19 ,_RBRC
20 ,_RCBR
21 ,_RNGL
22 ,_RPRN
23 ,_SEND
24 ,_SPC
25 ,_TILD
26};
27
28#define TD_CAPS TD(_CAPS)
29#define TD_COLN TD(_COLN)
30#define TD_COMM TD(_COMM)
31#define TD_DOT TD(_DOT)
32#define TD_DQOT TD(_DQOT)
33#define TD_ENT TD(_ENT)
34#define TD_EQL TD(_EQL)
35#define TD_GRV TD(_GRV)
36#define TD_GT TD(_GT)
37#define TD_LBRC TD(_LBRC)
38#define TD_LCBR TD(_LCBR)
39#define TD_LPRN TD(_LPRN)
40#define TD_LT TD(_LT)
41#define TD_PRIV TD(_PRIV) // compile time macro string, provided in private_string.h
42#define TD_QUOT TD(_QUOT)
43#define TD_RBRC TD(_RBRC)
44#define TD_RCBR TD(_RCBR)
45#define TD_RNGL TD(_RNGL)
46#define TD_RPRN TD(_RPRN)
47#define TD_SEND TD(_SEND) // config.h defined macro string
48#define TD_SPC TD(_SPC) // see process_record_user() for extended handling of Spc
49#define TD_TILD TD(_TILD)
diff --git a/keyboards/planck/keymaps/hiea/common/toggle_layout.h b/keyboards/planck/keymaps/hiea/common/toggle_layout.h
new file mode 100644
index 000000000..713d27bbc
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/common/toggle_layout.h
@@ -0,0 +1,102 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | Space| | | 0 | = | | | |
14 // | | | | f() | Space| | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_TTNUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_0, LT_EQL, _______, _______, _______},
23#else
24 {_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_EQL, LT_0, _______, _______, _______},
25#endif
26 },
27
28// ............ .................................................. Function Keys
29
30 // .-----------------------------------------------------------------------------------.
31 // | | | | | | | | | F7 | F8 | F9 | F12 |
32 // |-----------------------------------------------------------------------------------|
33 // | GUI | Ctrl | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | | | | | | F1 | F2 | F3 | F10 |
36 // |-----------------------------------------------------------------------------------|
37 // | | | | f() | | | | + | | | | |
38 // '-----------------------------------------------------------------------------------'
39
40 [_TTFNCKEY] = {
41 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
42 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
43 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
44 {_______, _______, _______, TT_ESC, _______, _______, _______, KC_PLUS, _______, _______, _______, _______},
45 },
46
47// ....................................................................... Regex
48
49 // ,-----------------------------------------------------------------------------------.
50 // | | ~ | { | } | & | | | % | [ | ] | @ | |
51 // |------+------+------+------+------+-------------+------+------+------+------+------|
52 // | | ^ | < | > | ? | | | | | ( | ) | $ | |
53 // |------+------+------+------+------+-------------+------+------+------+------+------|
54 // | | : | ! | = | / | | | \ | * | . | # | |
55 // |------+------+------+------+------+------+------+------+------+------+------+------|
56 // | | | | f() | - | | | + | Space| | | |
57 // `-----------------------------------------------------------------------------------'
58
59 [_TTREGEX] = {
60 {___x___, KC_TILD, KC_LCBR, KC_RCBR, KC_AMPR, ___x___, ___x___, KC_PERC, KC_LBRC, KC_RBRC, KC_AT, ___x___},
61 {___x___, KC_CIRC, KC_LT, KC_GT, KC_QUES, ___x___, ___x___, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, ___x___},
62 {___x___, KC_COLN, KC_EXLM, KC_EQL, KC_SLSH, ___x___, ___x___, KC_BSLS, KC_ASTR, KC_DOT, KC_HASH, ___x___},
63 {_______, _______, _______, TT_ESC, KC_MINS, _______, _______, KC_PLUS, KC_SPC, _______, _______, _______},
64 },
65
66// ............................................................ Navigation Layer
67
68 // .-----------------------------------------------------------------------------------.
69 // | | | | | | | | | Home | Up | End | PgUp |
70 // |-----------------------------------------------------------------------------------|
71 // | GUI | Ctrl | Alt | Shift| | | | | Left | Down | Right| PgDn |
72 // |-----------------------------------------------------------------------------------|
73 // | | | | | | | | | | | | |
74 // |-----------------------------------------------------------------------------------|
75 // | | | | f() | | | | | | | | |
76 // '-----------------------------------------------------------------------------------'
77
78 [_TTCURSOR] = {
79 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
80 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
81 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
82 {_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
83 },
84
85// ............................................................... Mouse Actions
86
87 // .-----------------------------------------------------------------------------------.
88 // | | | | | | | | | Left | Up | Right| Up |
89 // |-----------------------------------------------------------------------------------|
90 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
91 // |-----------------------------------------------------------------------------------|
92 // | | | | | | | | | | | | |
93 // |-----------------------------------------------------------------------------------|
94 // | | | | f() | | | | | | | | |
95 // '-----------------------------------------------------------------------------------'
96
97 [_TTMOUSE] = {
98 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
99 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
100 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
101 {_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
102 },
diff --git a/keyboards/planck/keymaps/hiea/config.h b/keyboards/planck/keymaps/hiea/config.h
new file mode 100644
index 000000000..9bb5e0873
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/config.h
@@ -0,0 +1,50 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// required because lower/raise modifiers are redefined by colemak-dh
7#define PREVENT_STUCK_MODIFIERS
8
9// tap dance key press termination interval
10#define TAPPING_TERM 250
11
12// smooth mouse motion
13// #define MOUSEKEY_INTERVAL 20
14// #define MOUSEKEY_DELAY 0
15// #define MOUSEKEY_TIME_TO_MAX 60
16// #define MOUSEKEY_MAX_SPEED 7
17// #define MOUSEKEY_WHEEL_DELAY 0
18
19// compile time macro string, see functions/hardware planck script (undefine otherwise)
20#define PRIVATE_STRING
21
22// compile time macro string, must be in quotes
23#define PUBLIC_STRING ":%s/arch=(.*)/arch=('any')\n"
24
25// thumb key tap-shift() double tap: one shot shift (0) off (1) on
26#define DT_SHIFT 1
27
28// number layer 0 position KEYPAD_0, THUMB_0
29#define THUMB_0
30
31// home block shift symbol clustes defined (no overlays required for extended symbols, undefine otherwise)
32#define SHIFT_SYMBOLS
33
34// center column TT assignments (undefine for OSM chords)
35#define CENTER_TT
36#define TAPPING_TOGGLE 1
37
38// home row modifiers
39#define HOME_MODS
40// fix dual function timing
41#define PERMISSIVE_HOLD
42#define IGNORE_MOD_TAP_INTERRUPT
43
44// layout ADNW*, BEAKL*, COLEKA*, QWERTY (default)
45#define DEFAULT
46
47// sync app with window manager keybind hook defined in plover_keybind.h
48#define PLOVER_KEYBIND
49
50#endif
diff --git a/keyboards/planck/keymaps/hiea/hiea.h b/keyboards/planck/keymaps/hiea/hiea.h
new file mode 100644
index 000000000..093802aef
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/hiea.h
@@ -0,0 +1,63 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................. BEAKL HIEA
5#ifdef DEFAULT
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | H | I | E | A | . |Cursor| Mouse| C | T | R | S | W |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | J | ; | " | K | , | Num | Regex| B | P | L | F | V |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
18 {HOME_H, HOME_I, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
19 {KC_J, KC_SCLN, TD_QUOT, KC_K, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
25 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
26 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_K), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | Y | [ | ] | Z | Shift| Caps | G | D | N | M | X |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | H | ^ | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_Y), KC_LBRC, KC_RBRC, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
42 {SM_H, KC_CIRC, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
43 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
44 {OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | Y | O | U | Z | Shift| Caps | G | { | } | M | X |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | H | I | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | J | : | " | K | / | Num | Regex| \ | * | . | P | V |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LCBR, KC_RCBR, S(KC_M), S(KC_X)},
59 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, SM_W },
60 {S(KC_J), TD_COLN, TD_DQOT, S(KC_K), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
61 {OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
diff --git a/keyboards/planck/keymaps/hiea/keymap.c b/keyboards/planck/keymaps/hiea/keymap.c
new file mode 100644
index 000000000..2f573f9a4
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/keymap.c
@@ -0,0 +1,429 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3//
4// To flash planck firmware
5// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
6// Reset keyboard or press hw reset button on base (hole)
7//
8// cd qmk_firmware/keyboards/planck
9// sudo make KEYMAP=sdothum dfu
10//
11// sudo make clean (good practice before flashing)
12// sudo make KEYMAP=sdothum (to compile check)
13//
14// Package requirements (for arch linux)
15// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
16// avr-gcc-atmel
17// avr-libc-atmel
18// dfu-programmer
19//
20// Notes
21// ▔▔▔▔▔
22// ** E R G O W I D E S P L I T ** Layout
23//
24// Autocompletion tap dance key pairs (),[],{} are available from the
25// number/symbol layer, as well as, numerous (un)shift key values
26//
27// The navigation pad provides a single hand right thumb activated cluster
28// with left hand modifiers
29//
30// #define PRIVATE_STRING includes private_string.h, a user defined code
31// block for the PRIV tap dance e.g. SEND_STRING("secret messape"),
32// see function private()
33//
34// Modifier clusters
35// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
36// The num and sym keys together access the navigation pad layer
37//
38// ,-----------------------------------------------------------------------------------.
39// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
40// `-----------------------------------------------------------------------------------'
41//
42// Hint
43// ▔▔▔▔
44// For sculpted keycaps such as Cherry or OEM profile, reverse the Alt, Num,
45// Shift, Shift, Nav, Sym keycaps for more ergonomic thumb orientation and
46// actuation
47//
48// Code
49// ▔▔▔▔
50// This source is shamelessly based on the "default" planck layout
51//
52// #ifdef/#endif block structures are not indented, as syntax highlighting
53// in vim is sufficient for identification
54//
55// c++ commenting style is used throughout
56//
57// Change history
58// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔
59// See http://thedarnedestthing.com/planck%20constant
60// See http://thedarnedestthing.com/planck%20done
61
62
63
64// === N O T E ===
65//
66// sudo CPATH=<keymap.c directory>/common make ...
67
68
69#include "config.h"
70#include "planck.h"
71#include "action_layer.h"
72#ifdef STENO_ENABLE
73#include "keymap_steno.h"
74#endif
75#ifdef AUDIO_ENABLE
76#include "audio.h"
77#endif
78#include "eeconfig.h"
79
80extern keymap_config_t keymap_config;
81
82enum planck_layers {
83 _BASE = 0
84 ,_SHIFT
85 ,_LSHIFT
86 ,_RSHIFT
87 ,_PLOVER
88 ,_NUMBER
89 ,_SYMBOL
90 ,_FNCKEY
91 ,_MOUSE
92#ifdef CENTER_TT
93 ,_TTNUMBER
94 ,_TTREGEX
95 ,_TTFNCKEY
96 ,_TTCURSOR
97 ,_TTMOUSE
98#endif
99 ,_EDIT
100 ,_ADJUST
101 ,_END_LAYERS
102};
103
104enum planck_keycodes {
105 BASE = SAFE_RANGE
106 ,BASE1
107 ,BASE2
108 ,PLOVER
109 ,SM_CIRC // pseudo GUI_T(S(KC_6)) for shifted key-codes, see process_record_user()
110 ,SM_DLR // pseudo SFT_T(S(KC_4)) for shifted key-codes, see process_record_user()
111 ,SM_G // pseudo MT (MOD_LALT | MOD_LSFT, S(KC_G)) for shifted key-codes, see process_record_user()
112 ,SM_H // pseudo MT (MOD_LCTL | MOD_LSFT, S(KC_H)) for shifted key-codes, see process_record_user()
113 ,SM_PERC // pseudo ALT_T(S(KC_5)) for shifted key-codes, see process_record_user()
114 ,SM_W // pseudo MT (MOD_LGUI | MOD_LSFT, S(KC_W)) for shifted key-codes, see process_record_user()
115 ,SL_LEFT // pseudo LT (_MOUSE, S(KC_LEFT)) for shifted key-codes, see process_record_user()
116 ,SP_DEL // pseudo LT (_MOUSE, KC_DEL) for shifted key-codes, see process_record_user()
117 ,SL_TAB // pseudo LT (_FNCKEY, S(KC_TAB)) for shifted key-codes, see process_record_user()
118#ifdef CENTER_TT
119 ,TT_ESC
120#endif
121#ifdef STENO_ENABLE
122 ,PS_STNA = STN_A
123 ,PS_STNO = STN_O
124 ,PS_STNE = STN_E
125 ,PS_STNU = STN_U
126#else
127 ,LT_C = LT (_NUMBER, KC_C)
128 ,LT_V = LT (_FNCKEY, KC_V)
129 ,LT_N = LT (_EDIT, KC_N)
130 ,LT_M = LT (_SYMBOL, KC_M)
131#endif
132};
133
134// modifier keys
135#define AT_B ALT_T(KC_B)
136#define AT_DOWN ALT_T(KC_DOWN)
137#define CT_RGHT CTL_T(KC_RGHT)
138#define GT_C GUI_T(KC_C)
139#define GT_UP GUI_T(KC_UP)
140#define MT_E MT (MOD_LCTL | MOD_LALT, KC_E)
141#define ST_A SFT_T(KC_A)
142#ifdef HOME_MODS
143#define HOME_H GUI_T(KC_H)
144#define HOME_I CTL_T(KC_I)
145#define HOME_E ALT_T(KC_E)
146#define HOME_A SFT_T(KC_A)
147#define HOME_T SFT_T(KC_T)
148#define HOME_R ALT_T(KC_R)
149#define HOME_S CTL_T(KC_S)
150#define HOME_W GUI_T(KC_W)
151#else
152#define HOME_H KC_H
153#define HOME_I KC_I
154#define HOME_E KC_E
155#define HOME_A KC_A
156#define HOME_T KC_T
157#define HOME_R KC_R
158#define HOME_S KC_S
159#define HOME_W KC_W
160#endif
161
162#define S_DOWN S (KC_DOWN)
163#define S_LEFT S (KC_LEFT)
164#define S_RGHT S (KC_RGHT)
165#define S_TAB S (KC_TAB)
166#define S_UP S (KC_UP)
167
168#include "tapdance.h"
169
170// keycodes
171#define ___x___ KC_TRNS
172#define ___fn__ KC_TRNS
173#ifdef _______
174#undef _______
175#endif
176#define _______ KC_NO
177
178#define COPY LCTL(KC_C)
179#define CUT LCTL(KC_X)
180#define EOT LCTL(KC_D)
181#define NAK LCTL(KC_U)
182#define PASTE LCTL(KC_V)
183#define UNDO LCTL(KC_Z)
184#define TMCOPY LALT(LCTL(KC_C))
185#define TMPASTE LALT(LCTL(KC_V))
186#define LT_BSLS LT (_MOUSE, KC_BSLS) // see process_record_user() for extended handling
187#define LT_BSPC LT (_EDIT, KC_BSPC)
188#define SP_LEFT LT (_EDIT, KC_LEFT)
189#define LT_ESC LT (_NUMBER, KC_ESC)
190#define LT_LEFT LT (_SYMBOL, KC_LEFT) // see process_record_user() for extended handling
191#define SP_BSPC LT (_SYMBOL, KC_BSPC) // see process_record_user() for extended handling
192#define LT_TAB LT (_FNCKEY, KC_TAB)
193#define LT_INS LT (_FNCKEY, KC_INS)
194#define ADJUST MO (_ADJUST)
195#define OS_ALT OSM (MOD_LALT)
196#define OS_CTL OSM (MOD_LCTL)
197#define OS_GUI OSM (MOD_LGUI)
198#define OS_SFT OSM (MOD_LSFT)
199
200#ifdef CENTER_TT
201#define CNTR_TL TT (_TTFNCKEY)
202#define CNTR_TR KC_CAPS
203#define CNTR_HL TT (_TTCURSOR)
204#define CNTR_HR TT (_TTMOUSE)
205#define CNTR_BL TT (_TTNUMBER)
206#define CNTR_BR TT (_TTREGEX)
207#else
208#define CNTR_TL OSM (MOD_LALT | MOD_LCTL)
209#define CNTR_TR OSM (MOD_LGUI | MOD_LCTL)
210#define CNTR_HL OSM (MOD_LALT | MOD_LSFT)
211#define CNTR_HR OSM (MOD_LGUI | MOD_LSFT)
212#define CNTR_BL TD (_CAPS)
213#define CNTR_BR OSM (MOD_LSFT | MOD_LCTL)
214#endif
215
216#ifdef THUMB_0
217#define LT_EQL LT (_ADJUST, KC_EQL)
218#else
219#define LT_0 LT (_ADJUST, KC_0)
220#endif
221
222// ........................................................ Default Alpha Layout
223
224const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
225
226#include "hiea.h"
227#include "steno_layout.h"
228
229// ...................................................... Number / Function Keys
230
231#include "number_fkey_layout.h"
232
233// ......................................................... Symbol / Navigation
234
235#include "symbol_guifn_layout.h"
236
237// ............................................................... Toggle Layers
238
239#ifdef CENTER_TT
240#include "toggle_layout.h"
241#endif
242
243// ......................................................... Short Cuts / Adjust
244
245#include "chord_layout.h"
246
247};
248
249// ...................................................................... Sounds
250
251#include "sounds.h"
252
253// ........................................................... User Keycode Trap
254
255#include "keycode_functions.h"
256
257#define BASE_1 1
258#define BASE_2 2
259#define BASE_12 3
260static uint8_t base_n = 0;
261
262bool process_record_user(uint16_t keycode, keyrecord_t *record)
263{
264 switch (keycode) {
265 case BASE1:
266 if (record->event.pressed) {
267 base_n = base_n | BASE_1;
268 if (base_n == BASE_12) {
269 base_layer();
270 }
271 }
272 else {
273 base_n = base_n & ~BASE_1;
274 }
275 return false;
276 case BASE2:
277 if (record->event.pressed) {
278 base_n = base_n | BASE_2;
279 if (base_n == BASE_12) {
280 base_layer();
281 }
282 }
283 else {
284 base_n = base_n & ~BASE_2;
285 }
286 return false;
287 case AT_DOWN:
288#ifdef HOME_MODS
289 case HOME_E:
290 case HOME_R:
291#endif
292 tap_mods(record, KC_LALT);
293 break;
294 case CT_RGHT:
295#ifdef HOME_MODS
296 case HOME_H:
297 case HOME_W:
298#endif
299 tap_mods(record, KC_LGUI);
300 break;
301 case GT_UP:
302#ifdef HOME_MODS
303 case HOME_I:
304 case HOME_S:
305#endif
306 tap_mods(record, KC_LCTL);
307 break;
308#ifdef HOME_MODS
309 case HOME_A:
310 case HOME_T:
311 tap_mods(record, KC_LSFT);
312 break;
313#endif
314#ifdef CENTER_TT
315 case TT_ESC:
316 clear_tt(); // exit TT layer
317 return false;
318#endif
319 case LT_ESC:
320#ifdef CENTER_TT
321 if (tt_keycode != 0) {
322 clear_tt(); // exit TT layer
323 return false;
324 }
325#endif
326 tap_layer(record, _NUMBER);
327 break;
328 case LT_LEFT:
329 case SP_BSPC:
330 tap_layer(record, _SYMBOL);
331 // LT (_SYMBOL, KC_LEFT) left right combination layer
332 thumb_layer(record, RIGHT, 0, 0, _SYMBOL, _LSHIFT);
333 break;
334 case OS_ALT:
335 tap_mods(record, KC_LALT);
336 break;
337 case OS_CTL:
338 tap_mods(record, KC_LCTL);
339 break;
340 case OS_GUI:
341 tap_mods(record, KC_LGUI);
342 break;
343 case SM_CIRC:
344 // GUI_T(S(KC_6))
345 mt_shift(record, KC_LGUI, 0, KC_6);
346 break;
347 case SM_DLR:
348 // SFT_T(S(KC_4))
349 mt_shift(record, KC_LSFT, 0, KC_4);
350 break;
351 case SM_G:
352 // MT(MOD_LALT | MOD_LSFT, S(KC_G))
353 mt_shift(record, KC_LALT, KC_LSFT, KC_G);
354 break;
355 case SM_H:
356 // MT(MOD_LCTL | MOD_LSFT, S(KC_K))
357 mt_shift(record, KC_LCTL, KC_LSFT, KC_H);
358 break;
359 case SM_W:
360 // MT(MOD_LGUI | MOD_LSFT, S(KC_W))
361 mt_shift(record, KC_LGUI, KC_LSFT, KC_W);
362 break;
363 case SM_PERC:
364 // ALT_T(S(KC_5))
365 mt_shift(record, KC_LALT, 0, KC_5);
366 break;
367 case LT_BSLS:
368 tap_layer(record, _MOUSE);
369 // LT (_MOUSE, KC_BSLS) left right combination layer, see #define LT_BSLS
370 thumb_layer(record, LEFT, 0, 0, _MOUSE, _SYMBOL);
371 break;
372 case SL_LEFT:
373 tap_layer(record, _MOUSE);
374 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
375 thumb_layer(record, RIGHT, SHIFT, KC_LEFT, _MOUSE, _LSHIFT);
376 break;
377 case SP_DEL:
378 tap_layer(record, _MOUSE);
379 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
380 thumb_layer(record, RIGHT, NOSHIFT, KC_DEL, _MOUSE, _LSHIFT);
381 break;
382 case SL_TAB:
383 // LT (_FNCKEY, S(KC_TAB)) emulation
384 lt_shift(record, KC_TAB, _FNCKEY);
385 break;
386 case TD_ENT:
387 tap_layer(record, _RSHIFT);
388 // LT (_RSHIFT, KC_ENT) emulation, see tap dance enter
389 break;
390 case TD_SPC:
391 tap_layer(record, _LSHIFT);
392 // LT (_LSHIFT, KC_SPC) left right combination layer, see tap dance TD_SPC
393 thumb_layer(record, LEFT, 0, 0, _LSHIFT, _SYMBOL);
394 break;
395#ifdef CENTER_TT
396 case CNTR_TL:
397 case CNTR_TR:
398 case CNTR_HL:
399 case CNTR_HR:
400 case CNTR_BL:
401 case CNTR_BR:
402 if (tt_keycode != keycode && tt_keycode != 0) {
403 clear_tt(); // return to base layer first if different TT layer selected
404 }
405 tt_keycode = keycode;
406 break;
407#endif
408// #ifdef STENO_ENABLE
409// case PS_STNA:
410// stn_layer(record, STN_A, _NUMBER);
411// break;
412// case PS_STNO:
413// stn_layer(record, STN_O, _FNCKEY);
414// break;
415// case PS_STNE:
416// stn_layer(record, STN_E, _EDIT);
417// break;
418// case PS_STNU:
419// stn_layer(record, STN_U, _SYMBOL);
420// break;
421// #endif
422 case PLOVER:
423 steno(record);
424 return false;
425 }
426 return true;
427}
428
429#include "init.h"
diff --git a/keyboards/planck/keymaps/hiea/qwerty.h b/keyboards/planck/keymaps/hiea/qwerty.h
new file mode 100644
index 000000000..d11d0478b
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/qwerty.h
@@ -0,0 +1,64 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ...................................................................... Qwerty
5#ifdef QWERTY
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | ; |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Z | X | C | V | B | Caps |^Shift| N | M | , | . | " |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_W, KC_E, KC_R, KC_T, CNTR_TL, CNTR_TR, KC_Y, KC_U, KC_I, KC_O, KC_P },
18 {KC_A, KC_S, KC_D, KC_F, KC_G, CNTR_HL, CNTR_HR, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
19 {KC_Z, KC_X, KC_C, KC_V, KC_B, CNTR_BL, CNTR_BR, KC_N, KC_M, KC_COMM, KC_DOT, TD_QUOT},
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
25 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), KC_SCLN},
26 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_COMM, KC_DOT, TD_QUOT},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | Z | X | C | V | B | Caps |^Shift| N | M | / | ? | " |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
42 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
43 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_SLSH, KC_QUES, TD_DQOT},
44 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | Z | X | C | V | B | Caps |^Shift| N | M | ~ | ` | " |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
59 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
60 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), TD_TILD, TD_GRV, TD_DQOT},
61 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
diff --git a/keyboards/planck/keymaps/hiea/readme.md b/keyboards/planck/keymaps/hiea/readme.md
new file mode 100644
index 000000000..58f73e3b4
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/readme.md
@@ -0,0 +1,10 @@
1# The sdothum extended Default Planck Layout
2
3- Colemak-DH layout layer with shift/tab key overlays
4- Number and symbol/function key layer
5- Hexadecimal keypad layer
6- Navigation keypad layer
7- Dynamic macro layer
8- Autocompletion tap key pairs (),[],{}
9- Normalized enter and esc key position across keyboard layers
10- Extensive use of tap keys
diff --git a/keyboards/planck/keymaps/hiea/rules.mk b/keyboards/planck/keymaps/hiea/rules.mk
new file mode 100644
index 000000000..40f153844
--- /dev/null
+++ b/keyboards/planck/keymaps/hiea/rules.mk
@@ -0,0 +1,26 @@
1# Build Options:
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4
5BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # mouse keys(+4700)
7EXTRAKEY_ENABLE = no # audio control and System control(+450)
8CONSOLE_ENABLE = no # console for debug(+400)
9COMMAND_ENABLE = no # commands for debug and configuration
10NKRO_ENABLE = yes # nkey rollover
11BACKLIGHT_ENABLE = no # enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # audio output on port C6
14UNICODE_ENABLE = no # unicode
15BLUETOOTH_ENABLE = no # enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # enable WS2812 RGB underlight, do not enable this with audio at the same time.
17STENO_ENABLE = yes # enable TX Bolt protocol, requires VIRTSER and may not work with mouse keys
18
19# do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
20SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
21
22TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
23
24ifndef QUANTUM_DIR
25include ../../../../Makefile
26endif
diff --git a/keyboards/planck/keymaps/hieax/common/chord_layout.h b/keyboards/planck/keymaps/hieax/common/chord_layout.h
new file mode 100644
index 000000000..2c785d56c
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/chord_layout.h
@@ -0,0 +1,41 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................. Short Cuts
5
6 // .-----------------------------------------------------------------------------------.
7 // | | | Copy | Paste| | | | | | | | |
8 // |--------------------------------------------------------------+------+------+------|
9 // | Undo | Cut | Copy | Paste| | | | | PRIV | PUB | | |
10 // |-----------------------------------------------------------------------------------|
11 // | | | Nak | Eot | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | | | | f() | | | | | |
14 // | | | | | | | | f() | | | | | see _PLOVER
15 // '-----------------------------------------------------------------------------------'
16
17 [_EDIT] = {
18 {_______, _______, TMCOPY, TMPASTE, _______, _______, _______, _______, _______, _______, _______, _______},
19 {UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, TD_PRIV, TD_SEND, _______, _______},
20 {_______, _______, NAK, EOT, _______, _______, _______, _______, _______, _______, _______, _______},
21 {_______, _______, _______, _______, _______, _______, ___fn__, ___fn__, _______, _______, _______, _______},
22 },
23
24// ................................................................ Adjust Layer
25
26 // ,-----------------------------------------------------------------------------------.
27 // |Plover| | | | | | | | | | | |
28 // |------+------+------+------+------+-------------+------+------+------+------+------|
29 // |Aud on| | | | | | | | | | | |
30 // |------+------+------+------+------+------|------+------+------+------+------+------|
31 // | Reset| | | | | | | | | | | |
32 // |------+------+------+------+------+------+------+------+------+------+------+------|
33 // | | | | f() | | | | | f() | | | |
34 // `-----------------------------------------------------------------------------------'
35
36 [_ADJUST] = {
37 {PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
38 {AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
39 {RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
40 {_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______},
41 },
diff --git a/keyboards/planck/keymaps/hieax/common/init.h b/keyboards/planck/keymaps/hieax/common/init.h
new file mode 100644
index 000000000..6366a19f6
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/init.h
@@ -0,0 +1,56 @@
1
2// ....................................................................... Audio
3
4void matrix_init_user(void)
5{
6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12}
13
14#ifdef AUDIO_ENABLE
15#ifdef BACKLIGHT_ENABLE
16void led_set_user(uint8_t usb_led)
17{
18 static uint8_t old_usb_led = 0;
19 _delay_ms(10); // gets rid of tick
20 if (!is_playing_notes()) {
21 if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
22 // if capslock LED is turning on
23 PLAY_SONG(song_caps_on);
24 }
25 else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
26 // if capslock LED is turning off
27 PLAY_SONG(song_caps_off);
28 }
29 }
30 old_usb_led = usb_led;
31}
32#endif
33
34void startup_user(void)
35{
36 _delay_ms(20); // gets rid of tick
37 PLAY_SONG(song_startup);
38}
39
40void shutdown_user(void)
41{
42 PLAY_SONG(song_goodbye);
43 _delay_ms(150);
44 stop_all_notes();
45}
46
47void music_on_user(void)
48{
49 music_scale_user();
50}
51
52void music_scale_user(void)
53{
54 PLAY_SONG(music_scale);
55}
56#endif
diff --git a/keyboards/planck/keymaps/hieax/common/keycode_functions.h b/keyboards/planck/keymaps/hieax/common/keycode_functions.h
new file mode 100644
index 000000000..a26b562ff
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/keycode_functions.h
@@ -0,0 +1,732 @@
1
2// .......................................................... Keycode Primitives
3
4// register simple key press
5void tap_key(uint16_t keycode)
6{
7 register_code (keycode);
8 unregister_code(keycode);
9}
10
11void shift_key(uint16_t keycode)
12{
13 register_code (KC_LSFT);
14 tap_key (keycode);
15 unregister_code(KC_LSFT);
16}
17
18#define SHIFT 1
19#define NOSHIFT 0
20
21static uint16_t key_timer = 0;
22
23// key press for thumb_layer() and lt_shift() macros
24bool key_press(uint8_t shift, uint16_t keycode)
25{
26 if (keycode) {
27 if (timer_elapsed(key_timer) < TAPPING_TERM) {
28 if (shift) {
29 shift_key(keycode);
30 }
31 else {
32 tap_key(keycode);
33 }
34 return true;
35 }
36 }
37 return false;
38}
39
40// ALT_T, CTL_T, GUI_T, SFT_T for shifted keycodes
41void mt_shift(keyrecord_t *record, uint16_t modifier, uint16_t modifier2, uint16_t keycode)
42{
43 if (record->event.pressed) {
44 key_timer = timer_read();
45 register_code(modifier);
46 if (modifier2) {
47 register_code(modifier2);
48 }
49 }
50 else {
51 unregister_code(modifier);
52 if (modifier2) {
53 unregister_code(modifier2);
54 }
55 if (timer_elapsed(key_timer) < TAPPING_TERM) {
56 shift_key(keycode);
57 }
58 key_timer = 0;
59 }
60}
61
62// ................................................................... Mod Masks
63
64// tap dance persistant mods, see process_record_user()
65// keyboard_report->mods (?) appears to be cleared by tap dance
66static uint8_t mods = 0;
67
68void tap_mods(keyrecord_t *record, uint16_t keycode)
69{
70 if (record->event.pressed) {
71 mods |= MOD_BIT(keycode);
72 }
73 else {
74 mods &= ~(MOD_BIT(keycode));
75 }
76}
77
78// (un)register modifiers
79void modifier(void (*f)(uint8_t))
80{
81 if (mods & MOD_BIT(KC_LCTL)) {
82 (*f)(KC_LCTL);
83 }
84 if (mods & MOD_BIT(KC_LGUI)) {
85 (*f)(KC_LGUI);
86 }
87 if (mods & MOD_BIT(KC_LALT)) {
88 (*f)(KC_LALT);
89 }
90 if (mods & MOD_BIT(KC_LSFT)) {
91 (*f)(KC_LSFT);
92 }
93 if (mods & MOD_BIT(KC_RSFT)) {
94 (*f)(KC_RSFT);
95 }
96}
97
98// .................................................... Triple Dance Shift/Layer
99
100static uint8_t dt_shift = 0;
101
102void double_shift(uint16_t keycode, uint8_t layer)
103{
104 tap_key (keycode);
105 if (DT_SHIFT) {
106 // set_oneshot_mods(MOD_LSFT);
107 // layer_on(layer);
108 layer_on (_SHIFT);
109 set_oneshot_layer(_SHIFT, ONESHOT_START);
110 dt_shift = 1;
111 }
112 else {
113 layer_on(layer);
114 }
115}
116
117// tap dance LT (LAYER, KEY) emulation with <KEY><DOWN> -> <KEY><SHIFT> and auto-repeat extensions!
118void tap_shift(qk_tap_dance_state_t *state, uint16_t keycode, uint8_t layer)
119{
120 // double tap plus down
121 if (state->count > 2) {
122 // double enter shift
123 if (keycode == KC_ENT) {
124 tap_key (keycode);
125 double_shift(keycode, layer);
126 }
127 // repeating keycode
128 else {
129 register_code(keycode);
130 }
131 }
132 // tap plus down (or double tap): keycode (one shot) shift
133 else if (state->count > 1) {
134 double_shift(keycode, layer);
135 }
136 // down: shift
137 else if (state->pressed) {
138 layer_on(layer);
139 }
140 // tap: keycode
141 else {
142 modifier(register_code);
143 tap_key (keycode);
144 modifier(unregister_code);
145 }
146}
147
148void tap_reset(uint16_t keycode, uint8_t layer)
149{
150 unregister_code(keycode);
151 if (DT_SHIFT && dt_shift) {
152 clear_oneshot_layer_state(ONESHOT_PRESSED);
153 dt_shift = 0;
154 }
155 else {
156 layer_off(layer);
157 }
158}
159
160// augment pseudo LT (_RSHIFT, KC_ENT) handling below for rapid <ENTER><SHIFT> sequences
161void enter(qk_tap_dance_state_t *state, void *user_data)
162{
163 tap_shift(state, KC_ENT, _RSHIFT);
164}
165
166void enter_reset(qk_tap_dance_state_t *state, void *user_data)
167{
168 tap_reset(KC_ENT, _RSHIFT);
169}
170
171// augment pseudo LT (_LSHIFT, KC_SPC) handling below for rapid <SPACE><SHIFT> sequences
172void space(qk_tap_dance_state_t *state, void *user_data)
173{
174 tap_shift(state, KC_SPC, _LSHIFT);
175}
176
177void space_reset(qk_tap_dance_state_t *state, void *user_data)
178{
179 tap_reset(KC_SPC, _LSHIFT);
180}
181
182// ......................................................... Triple Dance Insert
183
184void double_max(uint8_t count, uint8_t shift, uint16_t keycode)
185{
186 if (shift) {
187 shift_key(keycode);
188 if (count > 1) {
189 shift_key(keycode);
190 }
191 }
192 else {
193 tap_key(keycode);
194 if (count > 1) {
195 tap_key(keycode);
196 }
197 }
198}
199
200void colon(qk_tap_dance_state_t *state, void *user_data)
201{
202 if (state->count > 2) {
203 tap_key (KC_SPC);
204 shift_key(KC_SCLN);
205 shift_key(KC_SCLN);
206 tap_key (KC_SPC);
207 }
208 else {
209 double_max(state->count, SHIFT, KC_SCLN);
210 }
211 reset_tap_dance(state);
212}
213
214void eql(qk_tap_dance_state_t *state, void *user_data)
215{
216 if (state->count > 2) {
217 tap_key(KC_SPC);
218 tap_key(KC_SLSH);
219 tap_key(KC_EQL);
220 tap_key(KC_SPC);
221 }
222 else {
223 double_max(state->count, NOSHIFT, KC_EQL);
224 }
225 reset_tap_dance(state);
226}
227
228void greater(qk_tap_dance_state_t *state, void *user_data)
229{
230 if (state->count > 2) {
231 tap_key (KC_SPC);
232 tap_key (KC_MINS);
233 shift_key(KC_DOT);
234 tap_key (KC_SPC);
235 }
236 else {
237 double_max(state->count, SHIFT, KC_DOT);
238 }
239 reset_tap_dance(state);
240}
241
242void lesser(qk_tap_dance_state_t *state, void *user_data)
243{
244 if (state->count > 2) {
245 tap_key (KC_SPC);
246 shift_key(KC_COMM);
247 tap_key (KC_MINS);
248 tap_key (KC_SPC);
249 }
250 else {
251 double_max(state->count, SHIFT, KC_COMM);
252 }
253 reset_tap_dance(state);
254}
255
256void tilde(qk_tap_dance_state_t *state, void *user_data)
257{
258 // double tap plus down: repeating keycode
259 if (state->count > 2) {
260 register_code(KC_LSFT);
261 register_code(KC_GRV);
262 }
263 // tap: keycode
264 else {
265 shift_key(KC_GRV);
266 // double tap: unix home directory
267 if (state->count > 1) {
268 tap_key(KC_SLSH);
269 }
270 }
271}
272
273void tilde_reset(qk_tap_dance_state_t *state, void *user_data)
274{
275 unregister_code(KC_GRV);
276 unregister_code(KC_LSFT);
277}
278
279// ............................................................. Tap Dance Pairs
280
281// tap dance shift rules
282#define S_NEVER 0
283#define S_SINGLE 1
284#define S_DOUBLE 2
285#define S_ALWAYS S_SINGLE | S_DOUBLE
286
287void symbol_pair(uint8_t shift, uint16_t left, uint16_t right)
288{
289 if (shift & S_DOUBLE) {
290 shift_key(left);
291 shift_key(right);
292 }
293 else {
294 tap_key(left);
295 tap_key(right);
296 }
297}
298
299#define CLOSE 1
300
301// tap dance symbol pairs
302void tap_pair(qk_tap_dance_state_t *state, uint8_t shift, uint16_t left, uint16_t right, uint16_t modifier, uint8_t close)
303{
304 // triple tap: left right with cursor between symbol pair a la vim :-)
305 if (state->count > 2) {
306 symbol_pair(shift, left, right);
307 tap_key (KC_LEFT);
308 }
309 // double tap: left right
310 else if (state->count > 1) {
311 symbol_pair(shift, left, right);
312 }
313 // down: modifier
314 else if (state->pressed) {
315 if (modifier) {
316 register_code(modifier);
317 }
318 }
319 // tap: left (close: right)
320 else {
321 if (shift & S_SINGLE) {
322 shift_key(close ? right : left);
323 }
324 else {
325 tap_key(close ? right : left);
326 }
327 }
328 if (!modifier) {
329 reset_tap_dance(state);
330 }
331}
332
333void doublequote(qk_tap_dance_state_t *state, void *user_data)
334{
335 tap_pair(state, S_ALWAYS, KC_QUOT, KC_QUOT, 0, 0);
336}
337
338void grave(qk_tap_dance_state_t *state, void *user_data)
339{
340 tap_pair(state, S_NEVER, KC_GRV, KC_GRV, 0, 0);
341}
342
343void lbrace(qk_tap_dance_state_t *state, void *user_data)
344{
345 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, 0);
346}
347
348void lcurly(qk_tap_dance_state_t *state, void *user_data)
349{
350 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, 0);
351}
352
353void lparen(qk_tap_dance_state_t *state, void *user_data)
354{
355 tap_pair(state, S_ALWAYS, KC_9, KC_0, KC_LCTL, 0);
356}
357
358void lparen_reset(qk_tap_dance_state_t *state, void *user_data)
359{
360 unregister_code(KC_LCTL);
361}
362
363void quote(qk_tap_dance_state_t *state, void *user_data)
364{
365 tap_pair(state, S_NEVER, KC_QUOT, KC_QUOT, 0, 0);
366}
367
368void rangle(qk_tap_dance_state_t *state, void *user_data)
369{
370 tap_pair(state, S_ALWAYS, KC_COMM, KC_DOT, 0, CLOSE);
371}
372
373void rbrace(qk_tap_dance_state_t *state, void *user_data)
374{
375 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, CLOSE);
376}
377
378void rcurly(qk_tap_dance_state_t *state, void *user_data)
379{
380 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, CLOSE);
381}
382
383void rparen(qk_tap_dance_state_t *state, void *user_data)
384{
385 tap_pair(state, S_ALWAYS, KC_9, KC_0, 0, CLOSE);
386}
387
388void rparen_reset(qk_tap_dance_state_t *state, void *user_data)
389{
390 unregister_code(KC_LCTL);
391}
392
393// ............................................................ Tap Dance Insert
394
395void comma(qk_tap_dance_state_t *state, void *user_data)
396{
397 tap_key(KC_COMM);
398 if (state->count > 1) {
399 tap_key(KC_SPC);
400 }
401 reset_tap_dance(state);
402}
403
404void dot(qk_tap_dance_state_t *state, void *user_data)
405{
406 if (state->count > 1) {
407 shift_key(KC_COLN);
408 }
409 else {
410 tap_key(KC_DOT);
411 }
412 reset_tap_dance(state);
413}
414
415// compile time macro string, see functions/hardware planck script
416void private(qk_tap_dance_state_t *state, void *user_data)
417{
418 if (state->count > 1) {
419#ifdef PRIVATE_STRING
420#include "private_string.h"
421#endif
422 }
423 reset_tap_dance(state);
424}
425
426// config.h defined string
427void send(qk_tap_dance_state_t *state, void *user_data)
428{
429 if (state->count > 1) {
430 SEND_STRING(PUBLIC_STRING);
431 }
432 reset_tap_dance(state);
433}
434
435// .......................................................... Tap Dance One Shot
436
437void caps(qk_tap_dance_state_t *state, void *user_data)
438{
439 if (state->count > 1) {
440 tap_key(KC_CAPS);
441 }
442 else {
443 set_oneshot_mods(MOD_LSFT);
444 register_code (KC_LSFT); // on hold down
445 }
446}
447
448void caps_reset(qk_tap_dance_state_t *state, void *user_data)
449{
450 unregister_code(KC_LSFT);
451}
452
453// ................................................................... Tap Dance
454
455qk_tap_dance_action_t tap_dance_actions[] = {
456 [_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, caps_reset)
457 ,[_COLN] = ACTION_TAP_DANCE_FN (colon)
458 ,[_COMM] = ACTION_TAP_DANCE_FN (comma)
459 ,[_DOT] = ACTION_TAP_DANCE_FN (dot)
460 ,[_DQOT] = ACTION_TAP_DANCE_FN (doublequote)
461 ,[_ENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, enter, enter_reset)
462 ,[_EQL] = ACTION_TAP_DANCE_FN (eql)
463 ,[_GRV] = ACTION_TAP_DANCE_FN (grave)
464 ,[_GT] = ACTION_TAP_DANCE_FN (greater)
465 ,[_LBRC] = ACTION_TAP_DANCE_FN (lbrace)
466 ,[_LCBR] = ACTION_TAP_DANCE_FN (lcurly)
467 ,[_LPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lparen, lparen_reset)
468 ,[_LT] = ACTION_TAP_DANCE_FN (lesser)
469 ,[_PRIV] = ACTION_TAP_DANCE_FN (private)
470 ,[_QUOT] = ACTION_TAP_DANCE_FN (quote)
471 ,[_RBRC] = ACTION_TAP_DANCE_FN (rbrace)
472 ,[_RCBR] = ACTION_TAP_DANCE_FN (rcurly)
473 ,[_RNGL] = ACTION_TAP_DANCE_FN (rangle)
474 ,[_RPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rparen, rparen_reset)
475 ,[_SEND] = ACTION_TAP_DANCE_FN (send)
476 ,[_SPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, space, space_reset)
477 ,[_TILD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tilde, tilde_reset)
478};
479
480// .............................................................. Dynamic Layers
481
482#define LEFT 1
483#define RIGHT 2
484static uint8_t thumb = 0;
485
486// LEFT (KC_SPC, S(KC_BSLS)), RIGHT (KC_LEFT, S(KC_LEFT)) opposite thumb combinations, see process_record_user()
487// up, up -> _BASE
488// up, down -> _SYMBOL
489// down, up -> _NUMBER
490// down, down -> _MOUSE // see layer keycodes that raise mouse layer
491#define THUMBS_DOWN _MOUSE // layer
492
493static uint8_t overlayer = 0;
494
495// left right thumb layer combinations
496void thumb_layer(keyrecord_t *record, uint8_t side, uint8_t shift, uint16_t keycode, uint8_t thumb_dn_layer, uint8_t thumb_up_layer)
497{
498 if (record->event.pressed) {
499 // layer_on via tap_layer(), see process_record_user()
500 key_timer = timer_read();
501 thumb = thumb | side;
502 }
503 else {
504 layer_off(thumb_dn_layer);
505 // opposite thumb_layer() thumb may have switched effective layer!
506 if (overlayer) {
507 layer_off(overlayer);
508 overlayer = 0;
509 }
510 if (!key_press(shift, keycode)) {
511 layer_off(THUMBS_DOWN); // both thumbs needed
512 // opposite thumb down? see left right combination layer table above
513 if (thumb & (side == LEFT ? RIGHT : LEFT)) {
514 layer_on(thumb_up_layer);
515 overlayer = thumb_up_layer;
516 }
517 }
518 clear_mods();
519 thumb = thumb & ~side;
520 key_timer = 0;
521 }
522}
523
524// #ifdef STENO_ENABLE
525// // LT for steno keycode
526// void stn_layer(keyrecord_t *record, uint16_t keycode, uint8_t layer)
527// {
528// if (record->event.pressed) {
529// key_timer = timer_read();
530// if (keycode) {
531// process_steno(keycode, record);
532// }
533// layer_on(layer);
534// }
535// else {
536// layer_off(layer);
537// if (keycode) {
538// if (timer_elapsed(key_timer) < TAPPING_TERM) {
539// process_steno(keycode, record);
540// }
541// else {
542// // clear pressed state (request push of updated) process_steno.c and .h
543// // steno_clear_state();
544// }
545// }
546// key_timer = 0;
547// }
548// }
549// #endif
550
551// LT macro for nested LT layers
552void lt(keyrecord_t *record, uint8_t shift, uint16_t keycode, uint16_t modifier, uint8_t layer)
553{
554 if (record->event.pressed) {
555 key_timer = timer_read();
556 if (modifier) {
557 register_code(modifier);
558 }
559 layer_on(layer);
560 }
561 else {
562 if (modifier) {
563 unregister_code(modifier);
564 }
565 layer_off(layer);
566 // for shifted keycodes, hence, LT_SHIFT
567 key_press(shift, keycode);
568 clear_mods();
569 key_timer = 0;
570 }
571}
572
573// LT for S(keycode)
574void lt_shift(keyrecord_t *record, uint16_t keycode, uint8_t layer)
575{
576 lt(record, SHIFT, keycode, 0, layer);
577}
578
579// set layer asap to overcome macro latency errors, notably tap dance and LT usage
580// this routine inexplicably (?) sets layer_on() faster than can be done in thumb_layer()
581void tap_layer(keyrecord_t *record, uint8_t layer)
582{
583 if (record->event.pressed) {
584 layer_on(layer);
585 }
586 else {
587 layer_off(layer);
588 }
589}
590
591// ..................................................................... Keymaps
592
593// void persistant_default_layer_set(uint16_t default_layer)
594// {
595// eeconfig_update_default_layer(default_layer);
596// default_layer_set (default_layer);
597// }
598
599void clear_layers(void)
600{
601 uint8_t layer;
602 for (layer = 0; layer < _END_LAYERS; layer++) {
603 layer_off(layer);
604 }
605}
606
607#ifdef HOME_MODS
608// home row layer/shift key state, see tap_mods() and keymap.c
609#define LSYMBOL MOD_BIT(KC_LSFT)
610#define RSYMBOL MOD_BIT(KC_RSFT)
611
612void home_state(void) {
613 // if only the shift key, raise the opposite hand symbol layer
614 if (mods == LSYMBOL) {
615 layer_on(_LSYMBOL);
616 }
617 else if (mods == RSYMBOL) {
618 layer_on(_RSYMBOL);
619 }
620 // or combine modifiers
621 else if (mods & LSYMBOL) {
622 register_code(KC_LSFT);
623 }
624 else if (mods & RSYMBOL) {
625 register_code(KC_RSFT);
626 }
627}
628
629// home row layer/shift
630void symbol_shift(keyrecord_t *record, uint16_t keycode)
631{
632 if (keycode) {
633 if (record->event.pressed) {
634 key_timer = timer_read();
635 home_state();
636 }
637 else {
638 // clear layer/shift state
639 if (keycode == KC_A) {
640 layer_off(_LSYMBOL);
641 unregister_code(KC_LSFT);
642 }
643 else if (keycode == KC_T) {
644 layer_off(_RSYMBOL);
645 unregister_code(KC_RSFT);
646 }
647 // no other modifier enabled, issue keycode
648 if (~mods) {
649 key_press(NOSHIFT, keycode);
650 }
651 key_timer = 0;
652 }
653 }
654 else {
655 // a non-shift modifier disables symbol layer
656 layer_off(_LSYMBOL);
657 layer_off(_RSYMBOL);
658 // update home layer/shift state
659 home_state();
660 }
661}
662#endif
663
664#ifdef CENTER_TT
665static uint16_t tt_keycode = 0; // current TT keycode
666
667void clear_tt(void)
668{
669 if (tt_keycode == KC_CAPS) {
670 tap_key(KC_CAPS); // clear capslock
671 }
672 tt_keycode = 0;
673 clear_layers();
674 set_single_persistent_default_layer(_BASE);
675}
676#endif
677
678// txbolt plover run state
679static uint8_t plover = 0;
680
681void toggle_plover(uint8_t state)
682{
683 if (plover != state) {
684#ifdef PLOVER_KEYBIND
685#include "plover_keybind.h"
686#endif
687 plover = state;
688 }
689}
690
691void base_layer(void)
692{
693#ifdef AUDIO_ENABLE
694 if (plover) {
695 PLAY_SONG(song_plover_gb);
696 }
697 else {
698 PLAY_SONG(song_qwerty);
699 }
700#endif
701 clear_layers();
702 set_single_persistent_default_layer(_BASE);
703 toggle_plover(0);
704}
705
706void steno(keyrecord_t *record)
707{
708 if (record->event.pressed) {
709#ifdef AUDIO_ENABLE
710 PLAY_SONG(song_plover);
711#endif
712 clear_layers();
713 layer_on(_PLOVER);
714 if (!eeconfig_is_enabled()) {
715 eeconfig_init();
716 }
717 keymap_config.raw = eeconfig_read_keymap();
718 keymap_config.nkro = 1;
719 eeconfig_update_keymap(keymap_config.raw);
720 if (!plover) {
721 toggle_plover(1);
722 }
723 }
724}
725
726void steno_exit(keyrecord_t *record)
727{
728 if (record->event.pressed) {
729 base_layer();
730 toggle_plover(0);
731 }
732}
diff --git a/keyboards/planck/keymaps/hieax/common/number_fkey_layout.h b/keyboards/planck/keymaps/hieax/common/number_fkey_layout.h
new file mode 100644
index 000000000..321482b29
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/number_fkey_layout.h
@@ -0,0 +1,46 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | | | | 0 | = | | | |
14 // | | | | f() | | | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_NUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
23#else
24 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
25#endif
26 },
27
28// ............ .................................................. Function Keys
29
30 // .-----------------------------------------------------------------------------------.
31 // | | | | | | | | | F7 | F8 | F9 | F12 |
32 // |-----------------------------------------------------------------------------------|
33 // | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | | | | | | F1 | F2 | F3 | F10 |
36 // |-----------------------------------------------------------------------------------|
37 // | | | | | | f() | | + | | | | |
38 // | | | | | f() | | | + | | | | | see _PLOVER
39 // '-----------------------------------------------------------------------------------'
40
41 [_FNCKEY] = {
42 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
43 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
44 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
45 {_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
46 },
diff --git a/keyboards/planck/keymaps/hieax/common/plover_keybind.h b/keyboards/planck/keymaps/hieax/common/plover_keybind.h
new file mode 100644
index 000000000..cb4ef92ef
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/plover_keybind.h
@@ -0,0 +1,9 @@
1
2// simple window manager specific plover keybind hook
3
4// toggle plover application, see herbstluftwm/config/appbinds
5register_code (KC_LGUI);
6register_code (KC_LCTL);
7tap_key (KC_EQL);
8unregister_code(KC_LCTL);
9unregister_code(KC_LGUI);
diff --git a/keyboards/planck/keymaps/hieax/common/sounds.h b/keyboards/planck/keymaps/hieax/common/sounds.h
new file mode 100644
index 000000000..1bfc7a6da
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/sounds.h
@@ -0,0 +1,14 @@
1
2// ................................................................ Audio Sounds
3
4#ifdef AUDIO_ENABLE
5float song_startup [][2] = SONG(STARTUP_SOUND);
6float song_colemak [][2] = SONG(COLEMAK_SOUND);
7float song_qwerty [][2] = SONG(QWERTY_SOUND);
8float song_plover [][2] = SONG(PLOVER_SOUND);
9float song_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
10float song_caps_on [][2] = SONG(CAPS_LOCK_ON_SOUND);
11float song_caps_off [][2] = SONG(CAPS_LOCK_OFF_SOUND);
12float music_scale [][2] = SONG(MUSIC_SCALE_SOUND);
13float song_goodbye [][2] = SONG(GOODBYE_SOUND);
14#endif
diff --git a/keyboards/planck/keymaps/hieax/common/steno_layout.h b/keyboards/planck/keymaps/hieax/common/steno_layout.h
new file mode 100644
index 000000000..ab4a6fe01
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/steno_layout.h
@@ -0,0 +1,39 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ...................................................................... Plover
5#ifdef STENO_ENABLE
6 // ,-----------------------------------------------------------------------------------.
7 // | # | # | # | # | # | # | # | # | # | # | # | # |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | Base | S | T | P | H | * | * | F | P | L | T | D |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | | A | O | E | U | |
14 // `-----------------------------------------------------------------------------------'
15
16 [_PLOVER] = {
17 {STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC },
18 {BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR },
19 {BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR },
20 {_______, _______, _______, PS_STNA, PS_STNO, _______, _______, PS_STNE, PS_STNU, _______, _______, _______},
21 },
22#else
23 // ,-----------------------------------------------------------------------------------.
24 // | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
25 // |------+------+------+------+------+-------------+------+------+------+------+------|
26 // | Base | S | T | P | H | * | * | F | P | L | T | D |
27 // |------+------+------+------+------+------|------+------+------+------+------+------|
28 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
29 // |------+------+------+------+------+------+------+------+------+------+------+------|
30 // | | A | O | E | U | |
31 // `-----------------------------------------------------------------------------------'
32
33 [_PLOVER] = {
34 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
35 {BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
36 {BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
37 {_______, _______, _______, LT_C, LT_V, _______, _______, LT_N, LT_M, _______, _______, _______},
38 },
39#endif
diff --git a/keyboards/planck/keymaps/hieax/common/symbol_guifn_layout.h b/keyboards/planck/keymaps/hieax/common/symbol_guifn_layout.h
new file mode 100644
index 000000000..677e46409
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/symbol_guifn_layout.h
@@ -0,0 +1,40 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ..................................................... Symbol Navigation Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | ~ | * | & | | | | | Home | Up | End | PgUp |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | ^ | % | $ | | | | | Left | Down | Right| PgDn |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | @ | ! | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | |Adjust| \ | | f() | |
14 // '-----------------------------------------------------------------------------------'
15
16 [_SYMBOL] = {
17 {_______, KC_TILD, KC_ASTR, KC_AMPR, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
18 {OS_GUI, SM_CIRC, SM_PERC, SM_DLR, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
19 {_______, KC_HASH, KC_AT, KC_EXLM, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
20 {___x___, ___x___, ___x___, ADJUST, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
21 },
22
23// ............................................................... Mouse Actions
24
25 // .-----------------------------------------------------------------------------------.
26 // | | | | | | | | | Left | Up | Right| Up |
27 // |-----------------------------------------------------------------------------------|
28 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
29 // |-----------------------------------------------------------------------------------|
30 // | | | | | | | | | | | | |
31 // |-----------------------------------------------------------------------------------|
32 // | | | f() | | f() | |
33 // '-----------------------------------------------------------------------------------'
34
35 [_MOUSE] = {
36 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
37 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
38 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
39 {_______, _______, _______, _______, ___fn__, _______, _______, _______, ___fn__, _______, _______, _______},
40 },
diff --git a/keyboards/planck/keymaps/hieax/common/tapdance.h b/keyboards/planck/keymaps/hieax/common/tapdance.h
new file mode 100644
index 000000000..d778286bf
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/tapdance.h
@@ -0,0 +1,49 @@
1
2// tap dance keys
3enum tap_dance {
4 _CAPS = 0
5 ,_COLN
6 ,_COMM
7 ,_DOT
8 ,_DQOT
9 ,_ENT
10 ,_EQL
11 ,_GRV
12 ,_GT
13 ,_LBRC
14 ,_LCBR
15 ,_LPRN
16 ,_LT
17 ,_PRIV
18 ,_QUOT
19 ,_RBRC
20 ,_RCBR
21 ,_RNGL
22 ,_RPRN
23 ,_SEND
24 ,_SPC
25 ,_TILD
26};
27
28#define TD_CAPS TD(_CAPS)
29#define TD_COLN TD(_COLN)
30#define TD_COMM TD(_COMM)
31#define TD_DOT TD(_DOT)
32#define TD_DQOT TD(_DQOT)
33#define TD_ENT TD(_ENT)
34#define TD_EQL TD(_EQL)
35#define TD_GRV TD(_GRV)
36#define TD_GT TD(_GT)
37#define TD_LBRC TD(_LBRC)
38#define TD_LCBR TD(_LCBR)
39#define TD_LPRN TD(_LPRN)
40#define TD_LT TD(_LT)
41#define TD_PRIV TD(_PRIV) // compile time macro string, provided in private_string.h
42#define TD_QUOT TD(_QUOT)
43#define TD_RBRC TD(_RBRC)
44#define TD_RCBR TD(_RCBR)
45#define TD_RNGL TD(_RNGL)
46#define TD_RPRN TD(_RPRN)
47#define TD_SEND TD(_SEND) // config.h defined macro string
48#define TD_SPC TD(_SPC) // see process_record_user() for extended handling of Spc
49#define TD_TILD TD(_TILD)
diff --git a/keyboards/planck/keymaps/hieax/common/toggle_layout.h b/keyboards/planck/keymaps/hieax/common/toggle_layout.h
new file mode 100644
index 000000000..ea4ead56b
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/common/toggle_layout.h
@@ -0,0 +1,102 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | Space| | | 0 | = | | | |
14 // | | | | f() | Space| | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_TTNUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_0, LT_EQL, _______, _______, _______},
23#else
24 {_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_EQL, LT_0, _______, _______, _______},
25#endif
26 },
27
28// ............ .................................................. Function Keys
29
30 // .-----------------------------------------------------------------------------------.
31 // | | | | | | | | | F7 | F8 | F9 | F12 |
32 // |-----------------------------------------------------------------------------------|
33 // | GUI | Ctrl | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | | | | | | F1 | F2 | F3 | F10 |
36 // |-----------------------------------------------------------------------------------|
37 // | | | | f() | | | | + | | | | |
38 // '-----------------------------------------------------------------------------------'
39
40 [_TTFNCKEY] = {
41 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
42 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
43 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
44 {_______, _______, _______, TT_ESC, _______, _______, _______, KC_PLUS, _______, _______, _______, _______},
45 },
46
47// ....................................................................... Regex
48
49 // ,-----------------------------------------------------------------------------------.
50 // | | . | * | & | ~ | | | ` | [ | ] | ^ | |
51 // |------+------+------+------+------+-------------+------+------+------+------+------|
52 // | | < | % | > | ? | | | | | ( | ) | $ | |
53 // |------+------+------+------+------+-------------+------+------+------+------+------|
54 // | | : | @ | ! | / | | | \ | { | } | # | |
55 // |------+------+------+------+------+------+------+------+------+------+------+------|
56 // | | | | f() | = | | | + | Space| | | |
57 // `-----------------------------------------------------------------------------------'
58
59 [_TTREGEX] = {
60 {___x___, KC_DOT, KC_ASTR, KC_AMPR, KC_TILD, ___x___, ___x___, KC_GRV, KC_LBRC, KC_RBRC, KC_CIRC, ___x___},
61 {___x___, KC_LT, KC_PERC, KC_GT, KC_QUES, ___x___, ___x___, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, ___x___},
62 {___x___, KC_COLN, KC_AT, KC_EXLM, KC_SLSH, ___x___, ___x___, KC_BSLS, KC_LCBR, KC_RCBR, KC_HASH, ___x___},
63 {_______, _______, _______, TT_ESC, KC_EQL, _______, _______, KC_PLUS, KC_SPC, _______, _______, _______},
64 },
65
66// ............................................................ Navigation Layer
67
68 // .-----------------------------------------------------------------------------------.
69 // | | | | | | | | | Home | Up | End | PgUp |
70 // |-----------------------------------------------------------------------------------|
71 // | GUI | Ctrl | Alt | Shift| | | | | Left | Down | Right| PgDn |
72 // |-----------------------------------------------------------------------------------|
73 // | | | | | | | | | | | | |
74 // |-----------------------------------------------------------------------------------|
75 // | | | | f() | | | | | | | | |
76 // '-----------------------------------------------------------------------------------'
77
78 [_TTCURSOR] = {
79 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
80 {OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
81 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
82 {_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
83 },
84
85// ............................................................... Mouse Actions
86
87 // .-----------------------------------------------------------------------------------.
88 // | | | | | | | | | Left | Up | Right| Up |
89 // |-----------------------------------------------------------------------------------|
90 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
91 // |-----------------------------------------------------------------------------------|
92 // | | | | | | | | | | | | |
93 // |-----------------------------------------------------------------------------------|
94 // | | | | f() | | | | | | | | |
95 // '-----------------------------------------------------------------------------------'
96
97 [_TTMOUSE] = {
98 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
99 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
100 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
101 {_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
102 },
diff --git a/keyboards/planck/keymaps/hieax/config.h b/keyboards/planck/keymaps/hieax/config.h
new file mode 100644
index 000000000..9bb5e0873
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/config.h
@@ -0,0 +1,50 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// required because lower/raise modifiers are redefined by colemak-dh
7#define PREVENT_STUCK_MODIFIERS
8
9// tap dance key press termination interval
10#define TAPPING_TERM 250
11
12// smooth mouse motion
13// #define MOUSEKEY_INTERVAL 20
14// #define MOUSEKEY_DELAY 0
15// #define MOUSEKEY_TIME_TO_MAX 60
16// #define MOUSEKEY_MAX_SPEED 7
17// #define MOUSEKEY_WHEEL_DELAY 0
18
19// compile time macro string, see functions/hardware planck script (undefine otherwise)
20#define PRIVATE_STRING
21
22// compile time macro string, must be in quotes
23#define PUBLIC_STRING ":%s/arch=(.*)/arch=('any')\n"
24
25// thumb key tap-shift() double tap: one shot shift (0) off (1) on
26#define DT_SHIFT 1
27
28// number layer 0 position KEYPAD_0, THUMB_0
29#define THUMB_0
30
31// home block shift symbol clustes defined (no overlays required for extended symbols, undefine otherwise)
32#define SHIFT_SYMBOLS
33
34// center column TT assignments (undefine for OSM chords)
35#define CENTER_TT
36#define TAPPING_TOGGLE 1
37
38// home row modifiers
39#define HOME_MODS
40// fix dual function timing
41#define PERMISSIVE_HOLD
42#define IGNORE_MOD_TAP_INTERRUPT
43
44// layout ADNW*, BEAKL*, COLEKA*, QWERTY (default)
45#define DEFAULT
46
47// sync app with window manager keybind hook defined in plover_keybind.h
48#define PLOVER_KEYBIND
49
50#endif
diff --git a/keyboards/planck/keymaps/hieax/hiea.h b/keyboards/planck/keymaps/hieax/hiea.h
new file mode 100644
index 000000000..64541d633
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/hiea.h
@@ -0,0 +1,99 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................. BEAKL HIEA
5#ifdef DEFAULT
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | H | I | E | A | . |Cursor| Mouse| C | T | R | S | W |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | J | ; | " | K | , | Num | Regex| B | P | L | F | V |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
18 {HOME_H, HOME_I, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
19 {KC_J, KC_SCLN, TD_QUOT, KC_K, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
25 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
26 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_K), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | H | I | E | A | ? |Cursor| Mouse| C | T | R | S | W |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | J | : | " | K | / | Num | Regex| B | P | L | F | V |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
42 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
43 {S(KC_J), TD_COLN, TD_DQOT, S(KC_K), KC_SLSH, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
44 {OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | H | I | E | A | ? |Cursor| Mouse| C | T | R | S | W |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | J | : | " | K | / | Num | Regex| B | P | L | F | V |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
59 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
60 {S(KC_J), TD_COLN, TD_DQOT, S(KC_K), KC_SLSH, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
61 {OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
62 },
63#ifdef HOME_MODS
64 // ,-----------------------------------------------------------------------------------.
65 // | Q | Y | O | U | Z | Fn | Caps | ` | [ | ] | ^ | X |
66 // |------+------+------+------+------+-------------+------+------+------+------+------|
67 // | H | I | E | f() | ? |Cursor| Mouse| | | ( | ) | $ | W |
68 // |------+------+------+------+------+------|------+------+------+------+------+------|
69 // | J | : | " | K | / | Num | Regex| \ | { | } | # | V |
70 // |------+------+------+------+------+------+------+------+------+------+------+------|
71 // | Ctrl | GUI | Alt | Esc | Space| Ins | Left | + | Space| Down | Up | Right|
72 // `-----------------------------------------------------------------------------------'
73
74 [_LSYMBOL] = {
75 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, TD_GRV, KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
76 {HOME_H, HOME_I, HOME_E, ___fn__, KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
77 {S(KC_J), TD_COLN, TD_DQOT, S(KC_K), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_LCBR, KC_RCBR, KC_HASH, S(KC_V)},
78 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, KC_PLUS, SL_SPC, AT_DOWN, GT_UP, CT_RGHT},
79 },
80
81 // ,-----------------------------------------------------------------------------------.
82 // | Q | . | * | & | ~ | Fn | Caps | G | D | N | M | X |
83 // |------+------+------+------+------+-------------+------+------+------+------+------|
84 // | H | < | % | > | ? |Cursor| Mouse| C | f() | R | S | W |
85 // |------+------+------+------+------+------|------+------+------+------+------+------|
86 // | J | : | @ | ! | / | Num | Regex| B | P | L | F | V |
87 // |------+------+------+------+------+------+------+------+------+------+------+------|
88 // | Ctrl | GUI | Alt | ↑Tab | = | Ins | Left | Ent | Bksp | Down | Up | Right|
89 // | | ↑Tab | = | Ent | Bksp | |
90 // `-----------------------------------------------------------------------------------'
91
92 [_RSYMBOL] = {
93 {S(KC_Q), KC_DOT, KC_ASTR, KC_AMPR, TD_TILD, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
94 {S(KC_H), TD_LT, KC_PERC, TD_GT, KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), ___fn__, HOME_R, HOME_S, HOME_W },
95 {S(KC_J), TD_COLN, KC_AT, KC_EXLM, KC_SLSH, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
96 {OS_CTL, OS_GUI, OS_ALT, S_TAB, TD_EQL, LT_INS, SP_LEFT, TD_ENT, LT_BSPC, AT_DOWN, GT_UP, CT_RGHT},
97 },
98#endif
99#endif
diff --git a/keyboards/planck/keymaps/hieax/hiea.sync-conflict-20180501-144403-SMV4TP4.h b/keyboards/planck/keymaps/hieax/hiea.sync-conflict-20180501-144403-SMV4TP4.h
new file mode 100644
index 000000000..53ffb8861
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/hiea.sync-conflict-20180501-144403-SMV4TP4.h
@@ -0,0 +1,97 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................. BEAKL HIEA
5#ifdef DEFAULT
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | H | I | E | A | . |Cursor| Mouse| C | T | R | S | W |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | J | ; | " | K | , | Num | Regex| B | P | L | F | V |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
18 {HOME_H, HOME_I, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
19 {KC_J, KC_SCLN, TD_QUOT, KC_K, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
25 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
26 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_K), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | H | I | E | A | ? |Cursor| Mouse| C | T | R | S | W |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | J | : | " | K | / | Num | Regex| B | P | L | F | V |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
42 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
43 {S(KC_J), TD_COLN, TD_DQOT, S(KC_K), KC_SLSH, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
44 {OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | H | I | E | A | ? |Cursor| Mouse| C | T | R | S | W |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | J | : | " | K | / | Num | Regex| B | P | L | F | V |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
59 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
60 {S(KC_J), TD_COLN, TD_DQOT, S(KC_K), KC_SLSH, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
61 {OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
65 // ,-----------------------------------------------------------------------------------.
66 // | Q | Y | O | U | Z | Fn | Caps | ` | [ | ] | ^ | X |
67 // |------+------+------+------+------+-------------+------+------+------+------+------|
68 // | H | I | E | f() | ? |Cursor| Mouse| | | ( | ) | $ | W |
69 // |------+------+------+------+------+------|------+------+------+------+------+------|
70 // | J | : | " | K | / | Num | Regex| \ | { | } | # | V |
71 // |------+------+------+------+------+------+------+------+------+------+------+------|
72 // | | Esc | Space| + | Space| |
73 // `-----------------------------------------------------------------------------------'
74
75 [_LSYMBOL] = {
76 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, TD_GRV, KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
77 {HOME_H, HOME_I, HOME_E, ___fn__, KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
78 {S(KC_J), TD_COLN, TD_DQOT, S(KC_K), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_LCBR, KC_RCBR, KC_HASH, S(KC_V)},
79 {_______, _______, _______, _______, LT_ESC, TD_SPC, KC_PLUS, KC_SPC, _______, _______, _______, _______},
80 },
81
82 // ,-----------------------------------------------------------------------------------.
83 // | Q | . | * | & | ~ | Fn | Caps | G | D | N | M | X |
84 // |------+------+------+------+------+-------------+------+------+------+------+------|
85 // | H | < | % | > | ? |Cursor| Mouse| C | f() | R | S | W |
86 // |------+------+------+------+------+------|------+------+------+------+------+------|
87 // | J | : | @ | ! | / | Num | Regex| B | P | L | F | V |
88 // |------+------+------+------+------+------+------+------+------+------+------+------|
89 // | | ↑Tab | = | Ent | Bksp | |
90 // `-----------------------------------------------------------------------------------'
91
92 [_RSYMBOL] = {
93 {S(KC_Q), KC_DOT, KC_ASTR, KC_AMPR, TD_TILD, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
94 {S(KC_H), TD_LT, KC_PERC, TD_GT, KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), ___fn__, HOME_R, HOME_S, HOME_W },
95 {S(KC_J), TD_COLN, KC_AT, KC_EXLM, KC_SLSH, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
96 {_______, _______, _______, _______, S_TAB, TD_EQL, TD_ENT, LT_BSPC, _______, _______, _______, _______},
97 },
diff --git a/keyboards/planck/keymaps/hieax/keymap.c b/keyboards/planck/keymaps/hieax/keymap.c
new file mode 100644
index 000000000..d761ee677
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/keymap.c
@@ -0,0 +1,446 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3//
4// To flash planck firmware
5// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
6// Reset keyboard or press hw reset button on base (hole)
7//
8// cd qmk_firmware/keyboards/planck
9// sudo make KEYMAP=sdothum dfu
10//
11// sudo make clean (good practice before flashing)
12// sudo make KEYMAP=sdothum (to compile check)
13//
14// Package requirements (for arch linux)
15// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
16// avr-gcc-atmel
17// avr-libc-atmel
18// dfu-programmer
19//
20// Notes
21// ▔▔▔▔▔
22// ** E R G O W I D E S P L I T ** Layout
23//
24// Autocompletion tap dance key pairs (),[],{} are available from the
25// number/symbol layer, as well as, numerous (un)shift key values
26//
27// The navigation pad provides a single hand right thumb activated cluster
28// with left hand modifiers
29//
30// #define PRIVATE_STRING includes private_string.h, a user defined code
31// block for the PRIV tap dance e.g. SEND_STRING("secret messape"),
32// see function private()
33//
34// Modifier clusters
35// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
36// The num and sym keys together access the navigation pad layer
37//
38// ,-----------------------------------------------------------------------------------.
39// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
40// `-----------------------------------------------------------------------------------'
41//
42// Hint
43// ▔▔▔▔
44// For sculpted keycaps such as Cherry or OEM profile, reverse the Alt, Num,
45// Shift, Shift, Nav, Sym keycaps for more ergonomic thumb orientation and
46// actuation
47//
48// Code
49// ▔▔▔▔
50// This source is shamelessly based on the "default" planck layout
51//
52// #ifdef/#endif block structures are not indented, as syntax highlighting
53// in vim is sufficient for identification
54//
55// c++ commenting style is used throughout
56//
57// Change history
58// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔
59// See http://thedarnedestthing.com/planck%20constant
60// See http://thedarnedestthing.com/planck%20done
61
62
63
64// === N O T E ===
65//
66// sudo CPATH=<keymap.c directory>/common make ...
67
68
69#include "config.h"
70#include "planck.h"
71#include "action_layer.h"
72#ifdef STENO_ENABLE
73#include "keymap_steno.h"
74#endif
75#ifdef AUDIO_ENABLE
76#include "audio.h"
77#endif
78#include "eeconfig.h"
79
80extern keymap_config_t keymap_config;
81
82enum planck_layers {
83 _BASE = 0
84 ,_SHIFT
85 ,_LSHIFT
86 ,_RSHIFT
87 ,_LSYMBOL
88 ,_RSYMBOL
89 ,_PLOVER
90 ,_NUMBER
91 ,_SYMBOL
92 ,_FNCKEY
93 ,_MOUSE
94 ,_EDIT
95 ,_ADJUST
96#ifdef CENTER_TT
97 ,_TTNUMBER
98 ,_TTREGEX
99 ,_TTFNCKEY
100 ,_TTCURSOR
101 ,_TTMOUSE
102#endif
103 ,_END_LAYERS
104};
105
106enum planck_keycodes {
107 BASE = SAFE_RANGE
108 ,BASE1
109 ,BASE2
110 ,PLOVER
111 ,SM_CIRC // pseudo GUI_T(S(KC_6)) for shifted key-codes, see process_record_user()
112 ,SM_DLR // pseudo SFT_T(S(KC_4)) for shifted key-codes, see process_record_user()
113 ,SM_G // pseudo MT (MOD_LALT | MOD_LSFT, S(KC_G)) for shifted key-codes, see process_record_user()
114 ,SM_H // pseudo MT (MOD_LCTL | MOD_LSFT, S(KC_H)) for shifted key-codes, see process_record_user()
115 ,SM_PERC // pseudo ALT_T(S(KC_5)) for shifted key-codes, see process_record_user()
116 ,SM_W // pseudo MT (MOD_LGUI | MOD_LSFT, S(KC_W)) for shifted key-codes, see process_record_user()
117 ,SL_LEFT // pseudo LT (_MOUSE, S(KC_LEFT)) for shifted key-codes, see process_record_user()
118 ,SP_DEL // pseudo LT (_MOUSE, KC_DEL) for shifted key-codes, see process_record_user()
119 ,SL_TAB // pseudo LT (_FNCKEY, S(KC_TAB)) for shifted key-codes, see process_record_user()
120 ,SL_SPC // pseudo LT (S(_SYMBOL), KC_SPC) for home row shifted GUIFN
121#ifdef HOME_MODS
122 ,HOME_A // pseudo SFT_T(KC_A)
123 ,HOME_T // pseudo SFT_T(KC_T)
124#endif
125#ifdef CENTER_TT
126 ,TT_ESC
127#endif
128#ifdef STENO_ENABLE
129 ,PS_STNA = STN_A
130 ,PS_STNO = STN_O
131 ,PS_STNE = STN_E
132 ,PS_STNU = STN_U
133#else
134 ,LT_C = LT (_NUMBER, KC_C)
135 ,LT_V = LT (_FNCKEY, KC_V)
136 ,LT_N = LT (_EDIT, KC_N)
137 ,LT_M = LT (_SYMBOL, KC_M)
138#endif
139};
140
141// modifier keys
142#define AT_B ALT_T(KC_B)
143#define AT_DOWN ALT_T(KC_DOWN)
144#define CT_RGHT CTL_T(KC_RGHT)
145#define GT_C GUI_T(KC_C)
146#define GT_UP GUI_T(KC_UP)
147#define MT_E MT (MOD_LCTL | MOD_LALT, KC_E)
148#define ST_A SFT_T(KC_A)
149#ifdef HOME_MODS
150#define HOME_H GUI_T(KC_H)
151#define HOME_I CTL_T(KC_I)
152#define HOME_E ALT_T(KC_E)
153#define HOME_R ALT_T(KC_R)
154#define HOME_S CTL_T(KC_S)
155#define HOME_W GUI_T(KC_W)
156#else
157#define HOME_H KC_H
158#define HOME_I KC_I
159#define HOME_E KC_E
160#define HOME_A KC_A
161#define HOME_T KC_T
162#define HOME_R KC_R
163#define HOME_S KC_S
164#define HOME_W KC_W
165#endif
166
167#define S_DOWN S (KC_DOWN)
168#define S_LEFT S (KC_LEFT)
169#define S_RGHT S (KC_RGHT)
170#define S_TAB S (KC_TAB)
171#define S_UP S (KC_UP)
172
173#include "tapdance.h"
174
175// keycodes
176#define ___x___ KC_TRNS
177#define ___fn__ KC_TRNS
178#ifdef _______
179#undef _______
180#endif
181#define _______ KC_NO
182
183#define COPY LCTL(KC_C)
184#define CUT LCTL(KC_X)
185#define EOT LCTL(KC_D)
186#define NAK LCTL(KC_U)
187#define PASTE LCTL(KC_V)
188#define UNDO LCTL(KC_Z)
189#define TMCOPY LALT(LCTL(KC_C))
190#define TMPASTE LALT(LCTL(KC_V))
191#define LT_BSLS LT (_MOUSE, KC_BSLS) // see process_record_user() for extended handling
192#define LT_BSPC LT (_EDIT, KC_BSPC)
193#define SP_LEFT LT (_EDIT, KC_LEFT)
194#define LT_ESC LT (_NUMBER, KC_ESC)
195#define LT_LEFT LT (_SYMBOL, KC_LEFT) // see process_record_user() for extended handling
196#define SP_BSPC LT (_SYMBOL, KC_BSPC) // see process_record_user() for extended handling
197#define LT_TAB LT (_FNCKEY, KC_TAB)
198#define LT_INS LT (_FNCKEY, KC_INS)
199#define ADJUST MO (_ADJUST)
200#define OS_ALT OSM (MOD_LALT)
201#define OS_CTL OSM (MOD_LCTL)
202#define OS_GUI OSM (MOD_LGUI)
203#define OS_SFT OSM (MOD_LSFT)
204
205#ifdef CENTER_TT
206#define CNTR_TL TT (_TTFNCKEY)
207#define CNTR_TR KC_CAPS
208#define CNTR_HL TT (_TTCURSOR)
209#define CNTR_HR TT (_TTMOUSE)
210#define CNTR_BL TT (_TTNUMBER)
211#define CNTR_BR TT (_TTREGEX)
212#else
213#define CNTR_TL OSM (MOD_LALT | MOD_LCTL)
214#define CNTR_TR OSM (MOD_LGUI | MOD_LCTL)
215#define CNTR_HL OSM (MOD_LALT | MOD_LSFT)
216#define CNTR_HR OSM (MOD_LGUI | MOD_LSFT)
217#define CNTR_BL TD (_CAPS)
218#define CNTR_BR OSM (MOD_LSFT | MOD_LCTL)
219#endif
220
221// LT can only reference layers 0-15
222#ifdef THUMB_0
223#define LT_EQL LT (_ADJUST, KC_EQL)
224#else
225#define LT_0 LT (_ADJUST, KC_0)
226#endif
227
228// ........................................................ Default Alpha Layout
229
230const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
231
232#include "hiea.h"
233#include "steno_layout.h"
234
235// ...................................................... Number / Function Keys
236
237#include "number_fkey_layout.h"
238
239// ......................................................... Symbol / Navigation
240
241#include "symbol_guifn_layout.h"
242
243// ............................................................... Toggle Layers
244
245#ifdef CENTER_TT
246#include "toggle_layout.h"
247#endif
248
249// ......................................................... Short Cuts / Adjust
250
251#include "chord_layout.h"
252
253};
254
255// ...................................................................... Sounds
256
257#include "sounds.h"
258
259// ........................................................... User Keycode Trap
260
261#include "keycode_functions.h"
262
263#define BASE_1 1
264#define BASE_2 2
265#define BASE_12 3
266static uint8_t base_n = 0;
267
268bool process_record_user(uint16_t keycode, keyrecord_t *record)
269{
270 switch (keycode) {
271 case BASE1:
272 if (record->event.pressed) {
273 base_n = base_n | BASE_1;
274 if (base_n == BASE_12) {
275 base_layer();
276 }
277 }
278 else {
279 base_n = base_n & ~BASE_1;
280 }
281 return false;
282 case BASE2:
283 if (record->event.pressed) {
284 base_n = base_n | BASE_2;
285 if (base_n == BASE_12) {
286 base_layer();
287 }
288 }
289 else {
290 base_n = base_n & ~BASE_2;
291 }
292 return false;
293#ifdef HOME_MODS
294 case HOME_E:
295 case HOME_R:
296 tap_mods(record, KC_LALT);
297 symbol_shift(record, 0);
298 break;
299 case HOME_H:
300 case HOME_W:
301 tap_mods(record, KC_LGUI);
302 symbol_shift(record, 0);
303 break;
304 case HOME_I:
305 case HOME_S:
306 tap_mods(record, KC_LCTL);
307 symbol_shift(record, 0);
308 break;
309 case HOME_A:
310 tap_mods(record, KC_LSFT);
311 symbol_shift(record, KC_A);
312 break;
313 case HOME_T:
314 tap_mods(record, KC_RSFT);
315 symbol_shift(record, KC_T);
316 break;
317#else
318 case AT_DOWN:
319 tap_mods(record, KC_LALT);
320 break;
321 case CT_RGHT:
322 tap_mods(record, KC_LGUI);
323 break;
324 case GT_UP:
325 tap_mods(record, KC_LCTL);
326 break;
327#endif
328 case SL_SPC:
329 lt(record, NOSHIFT, KC_SPC, KC_LSFT, _SYMBOL);
330 break;
331#ifdef CENTER_TT
332 case TT_ESC:
333 clear_tt(); // exit TT layer
334 return false;
335#endif
336 case LT_ESC:
337#ifdef CENTER_TT
338 if (tt_keycode != 0) {
339 clear_tt(); // exit TT layer
340 return false;
341 }
342#endif
343 tap_layer(record, _NUMBER);
344 break;
345 case LT_LEFT:
346 case SP_BSPC:
347 tap_layer(record, _SYMBOL);
348 // LT (_SYMBOL, KC_LEFT) left right combination layer
349 thumb_layer(record, RIGHT, 0, 0, _SYMBOL, _LSHIFT);
350 break;
351 case OS_ALT:
352 tap_mods(record, KC_LALT);
353 break;
354 case OS_CTL:
355 tap_mods(record, KC_LCTL);
356 break;
357 case OS_GUI:
358 tap_mods(record, KC_LGUI);
359 break;
360 case SM_CIRC:
361 // GUI_T(S(KC_6))
362 mt_shift(record, KC_LGUI, 0, KC_6);
363 break;
364 case SM_DLR:
365 // SFT_T(S(KC_4))
366 mt_shift(record, KC_LSFT, 0, KC_4);
367 break;
368 case SM_G:
369 // MT(MOD_LALT | MOD_LSFT, S(KC_G))
370 mt_shift(record, KC_LALT, KC_LSFT, KC_G);
371 break;
372 case SM_H:
373 // MT(MOD_LCTL | MOD_LSFT, S(KC_K))
374 mt_shift(record, KC_LCTL, KC_LSFT, KC_H);
375 break;
376 case SM_W:
377 // MT(MOD_LGUI | MOD_LSFT, S(KC_W))
378 mt_shift(record, KC_LGUI, KC_LSFT, KC_W);
379 break;
380 case SM_PERC:
381 // ALT_T(S(KC_5))
382 mt_shift(record, KC_LALT, 0, KC_5);
383 break;
384 case LT_BSLS:
385 tap_layer(record, _MOUSE);
386 // LT (_MOUSE, KC_BSLS) left right combination layer, see #define LT_BSLS
387 thumb_layer(record, LEFT, 0, 0, _MOUSE, _SYMBOL);
388 break;
389 case SL_LEFT:
390 tap_layer(record, _MOUSE);
391 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
392 thumb_layer(record, RIGHT, SHIFT, KC_LEFT, _MOUSE, _LSHIFT);
393 break;
394 case SP_DEL:
395 tap_layer(record, _MOUSE);
396 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
397 thumb_layer(record, RIGHT, NOSHIFT, KC_DEL, _MOUSE, _LSHIFT);
398 break;
399 case SL_TAB:
400 // LT (_FNCKEY, S(KC_TAB)) emulation
401 lt_shift(record, KC_TAB, _FNCKEY);
402 break;
403 case TD_ENT:
404 tap_layer(record, _RSHIFT);
405 // LT (_RSHIFT, KC_ENT) emulation, see tap dance enter
406 break;
407 case TD_SPC:
408 tap_layer(record, _LSHIFT);
409 // LT (_LSHIFT, KC_SPC) left right combination layer, see tap dance TD_SPC
410 thumb_layer(record, LEFT, 0, 0, _LSHIFT, _SYMBOL);
411 break;
412#ifdef CENTER_TT
413 case CNTR_TL:
414 case CNTR_TR:
415 case CNTR_HL:
416 case CNTR_HR:
417 case CNTR_BL:
418 case CNTR_BR:
419 if (tt_keycode != keycode && tt_keycode != 0) {
420 clear_tt(); // return to base layer first if different TT layer selected
421 }
422 tt_keycode = keycode;
423 break;
424#endif
425// #ifdef STENO_ENABLE
426// case PS_STNA:
427// stn_layer(record, STN_A, _NUMBER);
428// break;
429// case PS_STNO:
430// stn_layer(record, STN_O, _FNCKEY);
431// break;
432// case PS_STNE:
433// stn_layer(record, STN_E, _EDIT);
434// break;
435// case PS_STNU:
436// stn_layer(record, STN_U, _SYMBOL);
437// break;
438// #endif
439 case PLOVER:
440 steno(record);
441 return false;
442 }
443 return true;
444}
445
446#include "init.h"
diff --git a/keyboards/planck/keymaps/hieax/readme.md b/keyboards/planck/keymaps/hieax/readme.md
new file mode 100644
index 000000000..58f73e3b4
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/readme.md
@@ -0,0 +1,10 @@
1# The sdothum extended Default Planck Layout
2
3- Colemak-DH layout layer with shift/tab key overlays
4- Number and symbol/function key layer
5- Hexadecimal keypad layer
6- Navigation keypad layer
7- Dynamic macro layer
8- Autocompletion tap key pairs (),[],{}
9- Normalized enter and esc key position across keyboard layers
10- Extensive use of tap keys
diff --git a/keyboards/planck/keymaps/hieax/rules.mk b/keyboards/planck/keymaps/hieax/rules.mk
new file mode 100644
index 000000000..40f153844
--- /dev/null
+++ b/keyboards/planck/keymaps/hieax/rules.mk
@@ -0,0 +1,26 @@
1# Build Options:
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4
5BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # mouse keys(+4700)
7EXTRAKEY_ENABLE = no # audio control and System control(+450)
8CONSOLE_ENABLE = no # console for debug(+400)
9COMMAND_ENABLE = no # commands for debug and configuration
10NKRO_ENABLE = yes # nkey rollover
11BACKLIGHT_ENABLE = no # enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # audio output on port C6
14UNICODE_ENABLE = no # unicode
15BLUETOOTH_ENABLE = no # enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # enable WS2812 RGB underlight, do not enable this with audio at the same time.
17STENO_ENABLE = yes # enable TX Bolt protocol, requires VIRTSER and may not work with mouse keys
18
19# do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
20SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
21
22TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
23
24ifndef QUANTUM_DIR
25include ../../../../Makefile
26endif
diff --git a/keyboards/planck/keymaps/sdothum/beakl.h b/keyboards/planck/keymaps/sdothum/beakl.h
new file mode 100644
index 000000000..de3da34a5
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/beakl.h
@@ -0,0 +1,551 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................... BEAKL EZ
5#ifdef BEAKLEZ
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | ; | , | J | . | X | Caps |^Shift| B | D | M | P | Z |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_Y, KC_O, KC_U, KC_K, CNTR_TL, CNTR_TR, KC_F, KC_G, KC_R, KC_C, KC_V },
18 {KC_H, KC_I, KC_E, HOME_A, TD_QUOT, CNTR_HL, CNTR_HR, KC_L, KC_S, KC_T, KC_N, KC_W },
19 {KC_SCLN, KC_COMM, KC_J, KC_DOT, KC_X, CNTR_BL, CNTR_BR, KC_B, KC_D, KC_M, KC_P, KC_Z },
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
25 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_QUOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
26 {KC_SCLN, KC_COMM, S(KC_J), KC_DOT, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | : | ~ | J | ` | X | Caps |^Shift| B | D | M | P | Z |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
42 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_DQOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
43 {TD_COLN, TD_TILD, S(KC_J), TD_GRV, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
44 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | : | / | J | ? | X | Caps |^Shift| B | D | M | P | Z |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
59 {S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_DQOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
60 {TD_COLN, KC_SLSH, S(KC_J), KC_QUES, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
61 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
65// ..................................................................... BEAKL 8
66#ifdef BEAKL8
67 // ,-----------------------------------------------------------------------------------.
68 // | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
69 // |------+------+------+------+------+-------------+------+------+------+------+------|
70 // | K | H | E | A | . | ↑Alt | ↑GUI | D | S | T | N | B |
71 // |------+------+------+------+------+------|------+------+------+------+------+------|
72 // | J | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
73 // |------+------+------+------+------+------+------+------+------+------+------+------|
74 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
75 // `-----------------------------------------------------------------------------------'
76
77 [_BASE] = {
78 {KC_Q, KC_Y, KC_O, KC_U, KC_X, CNTR_TL, CNTR_TR, KC_G, KC_C, KC_R, KC_F, KC_Z },
79 {KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_D, KC_S, KC_T, KC_N, KC_B },
80 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
81 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
82 },
83
84 [_SHIFT] = {
85 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
86 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
87 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
88 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
89 },
90
91 // ,-----------------------------------------------------------------------------------.
92 // | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
93 // |------+------+------+------+------+-------------+------+------+------+------+------|
94 // | K | H | E | A | ~ | ↑Alt | ↑GUI | D | S | T | N | B |
95 // |------+------+------+------+------+------|------+------+------+------+------+------|
96 // | J | : | " | I | ` | Caps |^Shift| W | M | L | P | V |
97 // |------+------+------+------+------+------+------+------+------+------+------+------|
98 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
99 // `-----------------------------------------------------------------------------------'
100
101 [_LSHIFT] = {
102 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
103 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), TD_TILD, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
104 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
105 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
106 },
107
108 // ,-----------------------------------------------------------------------------------.
109 // | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
110 // |------+------+------+------+------+-------------+------+------+------+------+------|
111 // | K | H | E | A | ? | ↑Alt | ↑GUI | D | S | T | N | B |
112 // |------+------+------+------+------+------|------+------+------+------+------+------|
113 // | J | : | " | I | / | Caps |^Shift| W | M | L | P | V |
114 // |------+------+------+------+------+------+------+------+------+------+------+------|
115 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
116 // `-----------------------------------------------------------------------------------'
117
118 [_RSHIFT] = {
119 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
120 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
121 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
122 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
123 },
124#endif
125
126// .................................................................... BEAKL 8P
127#ifdef BEAKL8P
128 // ,-----------------------------------------------------------------------------------.
129 // | Q | Y | O | U | Z | ^Alt | ^GUI | G | D | R | F | X |
130 // |------+------+------+------+------+-------------+------+------+------+------+------|
131 // | K | H | E | A | . | ↑Alt | ↑GUI | C | T | S | N | B |
132 // |------+------+------+------+------+------|------+------+------+------+------+------|
133 // | J | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
134 // |------+------+------+------+------+------+------+------+------+------+------+------|
135 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
136 // `-----------------------------------------------------------------------------------'
137
138 [_BASE] = {
139 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
140 {KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_T, KC_S, KC_N, KC_B },
141 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
142 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
143 },
144
145 [_SHIFT] = {
146 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
147 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
148 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
149 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
150 },
151
152 // ,-----------------------------------------------------------------------------------.
153 // | Q | Y | { | } | $ | ^Alt | ^GUI | G | D | R | F | X |
154 // |------+------+------+------+------+-------------+------+------+------+------+------|
155 // | K | H | < | > | ~ | ↑Alt | ↑GUI | C | T | S | N | B |
156 // |------+------+------+------+------+------|------+------+------+------+------+------|
157 // | J | : | ! | = | ` | Caps |^Shift| W | M | L | P | V |
158 // |------+------+------+------+------+------+------+------+------+------+------+------|
159 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
160 // `-----------------------------------------------------------------------------------'
161
162 [_LSHIFT] = {
163 {S(KC_Q), S(KC_Y), KC_LCBR, KC_RCBR, KC_DLR, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
164 {S(KC_K), S(KC_H), TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
165 {S(KC_J), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
166 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
167 },
168
169 // ,-----------------------------------------------------------------------------------.
170 // | Q | Y | O | U | Z | ^Alt | ^GUI | ^ | [ | ] | F | X |
171 // |------+------+------+------+------+-------------+------+------+------+------+------|
172 // | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | N | B |
173 // |------+------+------+------+------+------|------+------+------+------+------+------|
174 // | J | : | " | I | / | Caps |^Shift| \ | $ | * | P | V |
175 // |------+------+------+------+------+------+------+------+------+------+------+------|
176 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
177 // `-----------------------------------------------------------------------------------'
178
179 [_RSHIFT] = {
180 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, KC_CIRC, KC_LBRC, KC_RBRC, S(KC_F), S(KC_X)},
181 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, S(KC_N), S(KC_B)},
182 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_DLR, KC_ASTR, S(KC_P), S(KC_V)},
183 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
184 },
185#endif
186
187// ................................................................... BEAKL 8TX
188#ifdef BEAKL8TX
189 // ,-----------------------------------------------------------------------------------.
190 // | Q | Y | O | U | J | ^Alt | ^GUI | G | D | R | F | X |
191 // |------+------+------+------+------+-------------+------+------+------+------+------|
192 // | K | H | E | A | . | ↑Alt | ↑GUI | C | T | S | N | B |
193 // |------+------+------+------+------+------|------+------+------+------+------+------|
194 // | Z | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
195 // |------+------+------+------+------+------+------+------+------+------+------+------|
196 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
197 // `-----------------------------------------------------------------------------------'
198
199 [_BASE] = {
200 {KC_Q, KC_Y, KC_O, KC_U, KC_J, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
201 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_S, HOME_N, HOME_B },
202 {KC_Z, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
203 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
204 },
205
206 [_SHIFT] = {
207 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
208 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
209 {S(KC_Z), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
210 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
211 },
212
213 // ,-----------------------------------------------------------------------------------.
214 // | Q | $ | { | } | J | ^Alt | ^GUI | G | D | R | F | X |
215 // |------+------+------+------+------+-------------+------+------+------+------+------|
216 // | K | / | < | > | ~ | ↑Alt | ↑GUI | C | T | S | N | B |
217 // |------+------+------+------+------+------|------+------+------+------+------+------|
218 // | Z | : | ! | = | ` | Caps |^Shift| W | M | L | P | V |
219 // |------+------+------+------+------+------+------+------+------+------+------+------|
220 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
221 // `-----------------------------------------------------------------------------------'
222
223 [_LSHIFT] = {
224 {S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
225 {S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
226 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
227 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
228 },
229
230 // ,-----------------------------------------------------------------------------------.
231 // | Q | Y | O | U | J | ^Alt | ^GUI | G | [ | ] | ^ | X |
232 // |------+------+------+------+------+-------------+------+------+------+------+------|
233 // | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | $ | B |
234 // |------+------+------+------+------+------|------+------+------+------+------+------|
235 // | Z | : | " | I | / | Caps |^Shift| \ | * | . | P | V |
236 // |------+------+------+------+------+------+------+------+------+------+------+------|
237 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
238 // `-----------------------------------------------------------------------------------'
239
240 [_RSHIFT] = {
241 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
242 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_B)},
243 {S(KC_Z), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
244 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
245 },
246#endif
247
248// ................................................................... BEAKL 8TT
249#ifdef BEAKL8TT
250 // ,-----------------------------------------------------------------------------------.
251 // | Q | Y | O | U | J | Fn | Caps | G | D | R | F | X |
252 // |------+------+------+------+------+-------------+------+------+------+------+------|
253 // | K | H | E | A | . |Cursor| Mouse| C | T | S | N | B |
254 // |------+------+------+------+------+------|------+------+------+------+------+------|
255 // | Z | ; | " | I | , | Num | Regex| W | M | L | P | V |
256 // |------+------+------+------+------+------+------+------+------+------+------+------|
257 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
258 // `-----------------------------------------------------------------------------------'
259
260 [_BASE] = {
261 {KC_Q, KC_Y, KC_O, KC_U, KC_J, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
262 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_S, HOME_N, HOME_B },
263 {KC_Z, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
264 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
265 },
266
267 [_SHIFT] = {
268 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
269 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
270 {S(KC_Z), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
271 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
272 },
273
274 // ,-----------------------------------------------------------------------------------.
275 // | Q | $ | { | } | J | Fn | Caps | G | D | R | F | X |
276 // |------+------+------+------+------+-------------+------+------+------+------+------|
277 // | K | / | < | > | ~ |Cursor| Mouse| C | T | S | N | B |
278 // |------+------+------+------+------+------|------+------+------+------+------+------|
279 // | Z | : | ! | = | ` | Num | Regex| W | M | L | P | V |
280 // |------+------+------+------+------+------+------+------+------+------+------+------|
281 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
282 // `-----------------------------------------------------------------------------------'
283
284 [_LSHIFT] = {
285 {S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
286 {S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
287 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
288 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
289 },
290
291 // ,-----------------------------------------------------------------------------------.
292 // | Q | Y | O | U | J | Fn | Caps | G | [ | ] | ^ | X |
293 // |------+------+------+------+------+-------------+------+------+------+------+------|
294 // | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | B |
295 // |------+------+------+------+------+------|------+------+------+------+------+------|
296 // | Z | : | " | I | / | Num | Regex| \ | * | . | P | V |
297 // |------+------+------+------+------+------+------+------+------+------+------+------|
298 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
299 // `-----------------------------------------------------------------------------------'
300
301 [_RSHIFT] = {
302 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
303 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_B)},
304 {S(KC_Z), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
305 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
306 },
307#endif
308
309// .................................................................... BEAKL 10
310#ifdef BEAKL10
311 // ,-----------------------------------------------------------------------------------.
312 // | Q | H | O | U | X | ^Alt | ^GUI | G | D | N | M | V |
313 // |------+------+------+------+------+-------------+------+------+------+------+------|
314 // | Y | I | E | A | . | ↑Alt | ↑GUI | C | S | R | T | W |
315 // |------+------+------+------+------+------|------+------+------+------+------+------|
316 // | J | ; | " | , | Z | Caps |^Shift| B | P | L | F | K |
317 // |------+------+------+------+------+------+------+------+------+------+------+------|
318 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
319 // `-----------------------------------------------------------------------------------'
320
321 [_BASE] = {
322 {KC_Q, KC_H, KC_O, KC_U, KC_X, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_V },
323 {KC_Y, KC_I, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_S, KC_R, KC_T, KC_W },
324 {KC_J, KC_SCLN, TD_QUOT, KC_COMM, KC_Z, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_K },
325 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
326 },
327
328 [_SHIFT] = {
329 {S(KC_Q), S(KC_H), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_V)},
330 {S(KC_Y), S(KC_I), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_S), S(KC_R), S(KC_T), S(KC_W)},
331 {S(KC_J), KC_SCLN, TD_QUOT, KC_COMM, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
332 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
333 },
334
335 // ,-----------------------------------------------------------------------------------.
336 // | Q | [ | ! | ] | X | ^Alt | ^GUI | G | D | N | M | V |
337 // |------+------+------+------+------+-------------+------+------+------+------+------|
338 // | Y | < | = | > | ~ | ↑Alt | ↑GUI | C | S | R | T | W |
339 // |------+------+------+------+------+------|------+------+------+------+------+------|
340 // | J | : | " | ` | Z | Caps |^Shift| B | P | L | F | K |
341 // |------+------+------+------+------+------+------+------+------+------+------+------|
342 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
343 // `-----------------------------------------------------------------------------------'
344
345 [_LSHIFT] = {
346 {S(KC_Q), TD_LBRC, KC_EXLM, TD_RBRC, S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_V)},
347 {S(KC_Y), TD_LT, KC_EQL, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_S), S(KC_R), S(KC_T), S(KC_W)},
348 {S(KC_J), KC_COLN, TD_DQOT, TD_GRV, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
349 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
350 },
351
352 // ,-----------------------------------------------------------------------------------.
353 // | Q | H | O | U | X | ^Alt | ^GUI | G | { | + | } | V |
354 // |------+------+------+------+------+-------------+------+------+------+------+------|
355 // | Y | I | E | A | ? | ↑Alt | ↑GUI | C | ( | * | ) | W |
356 // |------+------+------+------+------+------|------+------+------+------+------+------|
357 // | J | : | " | / | Z | Caps |^Shift| B | P | L | F | K |
358 // |------+------+------+------+------+------+------+------+------+------+------+------|
359 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
360 // `-----------------------------------------------------------------------------------'
361
362 [_RSHIFT] = {
363 {S(KC_Q), S(KC_H), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), TD_LCBR, KC_PLUS, TD_RCBR, S(KC_V)},
364 {S(KC_Y), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), TD_LPRN, KC_ASTR, TD_RPRN, S(KC_W)},
365 {S(KC_J), TD_COLN, TD_DQOT, KC_SLSH, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
366 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
367 },
368#endif
369
370// ............................................................... BEAKL Mash Up
371#ifdef BEAKL810
372 // ,-----------------------------------------------------------------------------------.
373 // | Q | Y | O | U | Z | ^Alt | ^GUI | G | D | N | M | X |
374 // |------+------+------+------+------+-------------+------+------+------+------+------|
375 // | K | H | E | A | . | ↑Alt | ↑GUI | C | T | R | S | W |
376 // |------+------+------+------+------+------|------+------+------+------+------+------|
377 // | J | ; | " | I | , | Caps |^Shift| B | P | L | F | V |
378 // |------+------+------+------+------+------+------+------+------+------+------+------|
379 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
380 // `-----------------------------------------------------------------------------------'
381
382 [_BASE] = {
383 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
384 {KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_T, KC_R, KC_S, KC_W },
385 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
386 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
387 },
388
389 [_SHIFT] = {
390 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
391 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
392 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
393 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
394 },
395
396 // ,-----------------------------------------------------------------------------------.
397 // | Q | Y | { | } | $ | ^Alt | ^GUI | G | D | N | M | X |
398 // |------+------+------+------+------+-------------+------+------+------+------+------|
399 // | K | H | < | > | ~ | ↑Alt | ↑GUI | C | T | R | S | W |
400 // |------+------+------+------+------+------|------+------+------+------+------+------|
401 // | J | : | ! | = | ` | Caps |^Shift| B | P | L | F | V |
402 // |------+------+------+------+------+------+------+------+------+------+------+------|
403 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
404 // `-----------------------------------------------------------------------------------'
405
406 [_LSHIFT] = {
407 {S(KC_Q), S(KC_Y), KC_LCBR, KC_RCBR, KC_DLR, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
408 {S(KC_K), S(KC_H), TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
409 {S(KC_J), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
410 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
411 },
412
413 // ,-----------------------------------------------------------------------------------.
414 // | Q | Y | O | U | Z | ^Alt | ^GUI | ^ | [ | ] | M | X |
415 // |------+------+------+------+------+-------------+------+------+------+------+------|
416 // | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | S | W |
417 // |------+------+------+------+------+------|------+------+------+------+------+------|
418 // | J | : | " | I | / | Caps |^Shift| \ | $ | * | F | V |
419 // |------+------+------+------+------+------+------+------+------+------+------+------|
420 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
421 // `-----------------------------------------------------------------------------------'
422
423 [_RSHIFT] = {
424 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, KC_CIRC, KC_LBRC, KC_RBRC, S(KC_M), S(KC_X)},
425 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, S(KC_S), S(KC_W)},
426 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_DLR, KC_ASTR, S(KC_F), S(KC_V)},
427 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
428 },
429#endif
430
431// .................................................................... BEAKL MU
432#ifdef BEAKLMU
433 // ,-----------------------------------------------------------------------------------.
434 // | Q | Y | O | U | Z | Fn | Caps | G | D | N | M | X |
435 // |------+------+------+------+------+-------------+------+------+------+------+------|
436 // | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
437 // |------+------+------+------+------+------|------+------+------+------+------+------|
438 // | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
439 // |------+------+------+------+------+------+------+------+------+------+------+------|
440 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
441 // `-----------------------------------------------------------------------------------'
442
443 [_BASE] = {
444 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
445 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
446 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
447 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
448 },
449
450 [_SHIFT] = {
451 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
452 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
453 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
454 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
455 },
456
457 // ,-----------------------------------------------------------------------------------.
458 // | Q | $ | { | } | Z | Fn | Caps | G | D | N | M | X |
459 // |------+------+------+------+------+-------------+------+------+------+------+------|
460 // | K | / | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
461 // |------+------+------+------+------+------|------+------+------+------+------+------|
462 // | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
463 // |------+------+------+------+------+------+------+------+------+------+------+------|
464 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
465 // `-----------------------------------------------------------------------------------'
466
467 [_LSHIFT] = {
468 {S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
469 {S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
470 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
471 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
472 },
473
474 // ,-----------------------------------------------------------------------------------.
475 // | Q | Y | O | U | Z | Fn | Caps | G | [ | ] | ^ | X |
476 // |------+------+------+------+------+-------------+------+------+------+------+------|
477 // | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
478 // |------+------+------+------+------+------|------+------+------+------+------+------|
479 // | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
480 // |------+------+------+------+------+------+------+------+------+------+------+------|
481 // | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
482 // `-----------------------------------------------------------------------------------'
483
484 [_RSHIFT] = {
485 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
486 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
487 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
488 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
489 },
490#endif
491
492// .................................................................... BEAKL SP
493#ifdef BEAKLSP
494 // ,-----------------------------------------------------------------------------------.
495 // | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
496 // |------+------+------+------+------+-------------+------+------+------+------+------|
497 // | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
498 // |------+------+------+------+------+------|------+------+------+------+------+------|
499 // | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
500 // |------+------+------+------+------+------+------+------+------+------+------+------|
501 // | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
502 // `-----------------------------------------------------------------------------------'
503
504 [_BASE] = {
505 {KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
506 {HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
507 {KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
508 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
509 },
510
511 [_SHIFT] = {
512 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
513 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
514 {S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
515 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
516 },
517
518 // ,-----------------------------------------------------------------------------------.
519 // | Q | Y | [ | ] | Z | Shift| Caps | G | D | N | M | X |
520 // |------+------+------+------+------+-------------+------+------+------+------+------|
521 // | K | ^ | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
522 // |------+------+------+------+------+------|------+------+------+------+------+------|
523 // | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
524 // |------+------+------+------+------+------+------+------+------+------+------+------|
525 // | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
526 // `-----------------------------------------------------------------------------------'
527
528 [_LSHIFT] = {
529 {S(KC_Q), S(KC_Y), KC_LBRC, KC_RBRC, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
530 {S(KC_K), KC_CIRC, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
531 {S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
532 {OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
533 },
534
535 // ,-----------------------------------------------------------------------------------.
536 // | Q | Y | O | U | Z | Shift| Caps | G | { | } | M | X |
537 // |------+------+------+------+------+-------------+------+------+------+------+------|
538 // | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
539 // |------+------+------+------+------+------|------+------+------+------+------+------|
540 // | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
541 // |------+------+------+------+------+------+------+------+------+------+------+------|
542 // | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
543 // `-----------------------------------------------------------------------------------'
544
545 [_RSHIFT] = {
546 {S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LCBR, KC_RCBR, S(KC_M), S(KC_X)},
547 {S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
548 {S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
549 {OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
550 },
551#endif
diff --git a/keyboards/planck/keymaps/sdothum/colemak.h b/keyboards/planck/keymaps/sdothum/colemak.h
new file mode 100644
index 000000000..b7e9df22c
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/colemak.h
@@ -0,0 +1,125 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .............................................................. Colemak Mod-DH
5#ifdef COLEMAK
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | ; |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Z | X | C | D | V | Caps |^Shift| K | H | , | . | " |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_W, KC_F, KC_P, KC_B, CNTR_TL, CNTR_TR, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
18 {KC_A, KC_R, KC_S, KC_T, KC_G, CNTR_HL, CNTR_HR, KC_M, KC_N, KC_E, KC_I, KC_O },
19 {KC_Z, KC_X, KC_C, KC_D, KC_V, CNTR_BL, CNTR_BR, KC_K, KC_H, KC_COMM, KC_DOT, TD_QUOT},
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), KC_SCLN},
25 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
26 {S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), KC_COMM, KC_DOT, TD_QUOT},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | : |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | Z | X | C | D | V | Caps |^Shift| K | H | / | ? | " |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
42 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
43 {S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), KC_SLSH, KC_QUES, TD_DQOT},
44 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | : |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | Z | X | C | D | V | Caps |^Shift| K | H | ~ | ` | " |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
59 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
60 {S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), TD_TILD, TD_GRV, TD_DQOT},
61 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
65// ..................................................................... ColemaX
66#ifdef COLEMAX
67 // ,-----------------------------------------------------------------------------------.
68 // | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | ; |
69 // |------+------+------+------+------+-------------+------+------+------+------+------|
70 // | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
71 // |------+------+------+------+------+------|------+------+------+------+------+------|
72 // | X | V | F | D | P | Caps |^Shift| M | H | , | . | " |
73 // |------+------+------+------+------+------+------+------+------+------+------+------|
74 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
75 // `-----------------------------------------------------------------------------------'
76
77 [_BASE] = {
78 {KC_Q, KC_W, KC_C, KC_G, KC_Z, CNTR_TL, CNTR_TR, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
79 {KC_A, KC_R, KC_S, KC_T, KC_B, CNTR_HL, CNTR_HR, KC_K, KC_N, KC_E, KC_I, KC_O },
80 {KC_X, KC_V, KC_F, KC_D, KC_P, CNTR_BL, CNTR_BR, KC_M, KC_H, KC_COMM, KC_DOT, TD_QUOT},
81 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
82 },
83
84 [_SHIFT] = {
85 {S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), KC_SCLN},
86 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
87 {S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), KC_COMM, KC_DOT, TD_QUOT},
88 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
89 },
90
91 // ,-----------------------------------------------------------------------------------.
92 // | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | : |
93 // |------+------+------+------+------+-------------+------+------+------+------+------|
94 // | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
95 // |------+------+------+------+------+------|------+------+------+------+------+------|
96 // | X | V | F | D | P | Caps |^Shift| M | H | / | ? | " |
97 // |------+------+------+------+------+------+------+------+------+------+------+------|
98 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
99 // `-----------------------------------------------------------------------------------'
100
101 [_LSHIFT] = {
102 {S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
103 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
104 {S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), KC_SLSH, KC_QUES, TD_DQOT},
105 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
106 },
107
108 // ,-----------------------------------------------------------------------------------.
109 // | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | : |
110 // |------+------+------+------+------+-------------+------+------+------+------+------|
111 // | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
112 // |------+------+------+------+------+------|------+------+------+------+------+------|
113 // | X | V | F | D | P | Caps |^Shift| M | H | ~ | ` | " |
114 // |------+------+------+------+------+------+------+------+------+------+------+------|
115 // | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
116 // `-----------------------------------------------------------------------------------'
117
118 [_RSHIFT] = {
119 {S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
120 {S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
121 {S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), TD_TILD, TD_GRV, TD_DQOT},
122 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
123 },
124#endif
125
diff --git a/keyboards/planck/keymaps/sdothum/common/chord_layout.h b/keyboards/planck/keymaps/sdothum/common/chord_layout.h
new file mode 100644
index 000000000..2c785d56c
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/chord_layout.h
@@ -0,0 +1,41 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// .................................................................. Short Cuts
5
6 // .-----------------------------------------------------------------------------------.
7 // | | | Copy | Paste| | | | | | | | |
8 // |--------------------------------------------------------------+------+------+------|
9 // | Undo | Cut | Copy | Paste| | | | | PRIV | PUB | | |
10 // |-----------------------------------------------------------------------------------|
11 // | | | Nak | Eot | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | | | | f() | | | | | |
14 // | | | | | | | | f() | | | | | see _PLOVER
15 // '-----------------------------------------------------------------------------------'
16
17 [_EDIT] = {
18 {_______, _______, TMCOPY, TMPASTE, _______, _______, _______, _______, _______, _______, _______, _______},
19 {UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, TD_PRIV, TD_SEND, _______, _______},
20 {_______, _______, NAK, EOT, _______, _______, _______, _______, _______, _______, _______, _______},
21 {_______, _______, _______, _______, _______, _______, ___fn__, ___fn__, _______, _______, _______, _______},
22 },
23
24// ................................................................ Adjust Layer
25
26 // ,-----------------------------------------------------------------------------------.
27 // |Plover| | | | | | | | | | | |
28 // |------+------+------+------+------+-------------+------+------+------+------+------|
29 // |Aud on| | | | | | | | | | | |
30 // |------+------+------+------+------+------|------+------+------+------+------+------|
31 // | Reset| | | | | | | | | | | |
32 // |------+------+------+------+------+------+------+------+------+------+------+------|
33 // | | | | f() | | | | | f() | | | |
34 // `-----------------------------------------------------------------------------------'
35
36 [_ADJUST] = {
37 {PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
38 {AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
39 {RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
40 {_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______},
41 },
diff --git a/keyboards/planck/keymaps/sdothum/common/init.h b/keyboards/planck/keymaps/sdothum/common/init.h
new file mode 100644
index 000000000..6366a19f6
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/init.h
@@ -0,0 +1,56 @@
1
2// ....................................................................... Audio
3
4void matrix_init_user(void)
5{
6#ifdef STENO_ENABLE
7 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
8#endif
9#ifdef AUDIO_ENABLE
10 startup_user();
11#endif
12}
13
14#ifdef AUDIO_ENABLE
15#ifdef BACKLIGHT_ENABLE
16void led_set_user(uint8_t usb_led)
17{
18 static uint8_t old_usb_led = 0;
19 _delay_ms(10); // gets rid of tick
20 if (!is_playing_notes()) {
21 if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
22 // if capslock LED is turning on
23 PLAY_SONG(song_caps_on);
24 }
25 else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
26 // if capslock LED is turning off
27 PLAY_SONG(song_caps_off);
28 }
29 }
30 old_usb_led = usb_led;
31}
32#endif
33
34void startup_user(void)
35{
36 _delay_ms(20); // gets rid of tick
37 PLAY_SONG(song_startup);
38}
39
40void shutdown_user(void)
41{
42 PLAY_SONG(song_goodbye);
43 _delay_ms(150);
44 stop_all_notes();
45}
46
47void music_on_user(void)
48{
49 music_scale_user();
50}
51
52void music_scale_user(void)
53{
54 PLAY_SONG(music_scale);
55}
56#endif
diff --git a/keyboards/planck/keymaps/sdothum/common/keycode_functions.h b/keyboards/planck/keymaps/sdothum/common/keycode_functions.h
new file mode 100644
index 000000000..08c5deca5
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/keycode_functions.h
@@ -0,0 +1,656 @@
1
2// .......................................................... Keycode Primitives
3
4// register simple key press
5void tap_key(uint16_t keycode)
6{
7 register_code (keycode);
8 unregister_code(keycode);
9}
10
11void shift_key(uint16_t keycode)
12{
13 register_code (KC_LSFT);
14 tap_key (keycode);
15 unregister_code(KC_LSFT);
16}
17
18#define SHIFT 1
19#define NOSHIFT 0
20
21static uint16_t key_timer = 0;
22
23// key press for thumb_layer() and lt_shift() macros
24bool key_press(uint8_t shift, uint16_t keycode)
25{
26 if (keycode) {
27 if (timer_elapsed(key_timer) < TAPPING_TERM) {
28 if (shift) {
29 shift_key(keycode);
30 }
31 else {
32 tap_key(keycode);
33 }
34 return true;
35 }
36 }
37 return false;
38}
39
40// ALT_T, CTL_T, GUI_T, SFT_T for shifted keycodes
41void mt_shift(keyrecord_t *record, uint16_t modifier, uint16_t modifier2, uint16_t keycode)
42{
43 if (record->event.pressed) {
44 key_timer = timer_read();
45 register_code(modifier);
46 if (modifier2) {
47 register_code(modifier2);
48 }
49 }
50 else {
51 unregister_code(modifier);
52 if (modifier2) {
53 unregister_code(modifier2);
54 }
55 if (timer_elapsed(key_timer) < TAPPING_TERM) {
56 shift_key(keycode);
57 }
58 key_timer = 0;
59 }
60}
61
62// ................................................................... Mod Masks
63
64// tap dance persistant mods, see process_record_user()
65// keyboard_report->mods (?) appears to be cleared by tap dance
66static uint8_t mods = 0;
67
68void tap_mods(keyrecord_t *record, uint16_t keycode)
69{
70 if (record->event.pressed) {
71 mods |= MOD_BIT(keycode);
72 }
73 else {
74 mods &= ~(MOD_BIT(keycode));
75 }
76}
77
78// (un)register modifiers
79void modifier(void (*f)(uint8_t))
80{
81 if (mods & MOD_BIT(KC_LCTL)) {
82 (*f)(KC_LCTL);
83 }
84 if (mods & MOD_BIT(KC_LGUI)) {
85 (*f)(KC_LGUI);
86 }
87 if (mods & MOD_BIT(KC_LALT)) {
88 (*f)(KC_LALT);
89 }
90}
91
92// .................................................... Triple Dance Shift/Layer
93
94static uint8_t dt_shift = 0;
95
96void double_shift(uint16_t keycode, uint8_t layer)
97{
98 tap_key (keycode);
99 if (DT_SHIFT) {
100 // set_oneshot_mods(MOD_LSFT);
101 // layer_on(layer);
102 layer_on (_SHIFT);
103 set_oneshot_layer(_SHIFT, ONESHOT_START);
104 dt_shift = 1;
105 }
106 else {
107 layer_on(layer);
108 }
109}
110
111// tap dance LT (LAYER, KEY) emulation with <KEY><DOWN> -> <KEY><SHIFT> and auto-repeat extensions!
112void tap_shift(qk_tap_dance_state_t *state, uint16_t keycode, uint8_t layer)
113{
114 // double tap plus down
115 if (state->count > 2) {
116 // double enter shift
117 if (keycode == KC_ENT) {
118 tap_key (keycode);
119 double_shift(keycode, layer);
120 }
121 // repeating keycode
122 else {
123 register_code(keycode);
124 }
125 }
126 // tap plus down (or double tap): keycode (one shot) shift
127 else if (state->count > 1) {
128 double_shift(keycode, layer);
129 }
130 // down: shift
131 else if (state->pressed) {
132 layer_on(layer);
133 }
134 // tap: keycode
135 else {
136 modifier(register_code);
137 tap_key (keycode);
138 modifier(unregister_code);
139 }
140}
141
142void tap_reset(uint16_t keycode, uint8_t layer)
143{
144 unregister_code(keycode);
145 if (DT_SHIFT && dt_shift) {
146 clear_oneshot_layer_state(ONESHOT_PRESSED);
147 dt_shift = 0;
148 }
149 else {
150 layer_off(layer);
151 }
152}
153
154// augment pseudo LT (_RSHIFT, KC_ENT) handling below for rapid <ENTER><SHIFT> sequences
155void enter(qk_tap_dance_state_t *state, void *user_data)
156{
157 tap_shift(state, KC_ENT, _RSHIFT);
158}
159
160void enter_reset(qk_tap_dance_state_t *state, void *user_data)
161{
162 tap_reset(KC_ENT, _RSHIFT);
163}
164
165// augment pseudo LT (_LSHIFT, KC_SPC) handling below for rapid <SPACE><SHIFT> sequences
166void space(qk_tap_dance_state_t *state, void *user_data)
167{
168 tap_shift(state, KC_SPC, _LSHIFT);
169}
170
171void space_reset(qk_tap_dance_state_t *state, void *user_data)
172{
173 tap_reset(KC_SPC, _LSHIFT);
174}
175
176// ......................................................... Triple Dance Insert
177
178void double_max(uint8_t count, uint8_t shift, uint16_t keycode)
179{
180 if (shift) {
181 shift_key(keycode);
182 if (count > 1) {
183 shift_key(keycode);
184 }
185 }
186 else {
187 tap_key(keycode);
188 if (count > 1) {
189 tap_key(keycode);
190 }
191 }
192}
193
194void colon(qk_tap_dance_state_t *state, void *user_data)
195{
196 if (state->count > 2) {
197 tap_key (KC_SPC);
198 shift_key(KC_SCLN);
199 shift_key(KC_SCLN);
200 tap_key (KC_SPC);
201 }
202 else {
203 double_max(state->count, SHIFT, KC_SCLN);
204 }
205 reset_tap_dance(state);
206}
207
208void eql(qk_tap_dance_state_t *state, void *user_data)
209{
210 if (state->count > 2) {
211 tap_key(KC_SPC);
212 tap_key(KC_SLSH);
213 tap_key(KC_EQL);
214 tap_key(KC_SPC);
215 }
216 else {
217 double_max(state->count, NOSHIFT, KC_EQL);
218 }
219 reset_tap_dance(state);
220}
221
222void greater(qk_tap_dance_state_t *state, void *user_data)
223{
224 if (state->count > 2) {
225 tap_key (KC_SPC);
226 tap_key (KC_MINS);
227 shift_key(KC_DOT);
228 tap_key (KC_SPC);
229 }
230 else {
231 double_max(state->count, SHIFT, KC_DOT);
232 }
233 reset_tap_dance(state);
234}
235
236void lesser(qk_tap_dance_state_t *state, void *user_data)
237{
238 if (state->count > 2) {
239 tap_key (KC_SPC);
240 shift_key(KC_COMM);
241 tap_key (KC_MINS);
242 tap_key (KC_SPC);
243 }
244 else {
245 double_max(state->count, SHIFT, KC_COMM);
246 }
247 reset_tap_dance(state);
248}
249
250void tilde(qk_tap_dance_state_t *state, void *user_data)
251{
252 // double tap plus down: repeating keycode
253 if (state->count > 2) {
254 register_code(KC_LSFT);
255 register_code(KC_GRV);
256 }
257 // tap: keycode
258 else {
259 shift_key(KC_GRV);
260 // double tap: unix home directory
261 if (state->count > 1) {
262 tap_key(KC_SLSH);
263 }
264 }
265}
266
267void tilde_reset(qk_tap_dance_state_t *state, void *user_data)
268{
269 unregister_code(KC_GRV);
270 unregister_code(KC_LSFT);
271}
272
273// ............................................................. Tap Dance Pairs
274
275// tap dance shift rules
276#define S_NEVER 0
277#define S_SINGLE 1
278#define S_DOUBLE 2
279#define S_ALWAYS S_SINGLE | S_DOUBLE
280
281void symbol_pair(uint8_t shift, uint16_t left, uint16_t right)
282{
283 if (shift & S_DOUBLE) {
284 shift_key(left);
285 shift_key(right);
286 }
287 else {
288 tap_key(left);
289 tap_key(right);
290 }
291}
292
293#define CLOSE 1
294
295// tap dance symbol pairs
296void tap_pair(qk_tap_dance_state_t *state, uint8_t shift, uint16_t left, uint16_t right, uint16_t modifier, uint8_t close)
297{
298 // triple tap: left right with cursor between symbol pair a la vim :-)
299 if (state->count > 2) {
300 symbol_pair(shift, left, right);
301 tap_key (KC_LEFT);
302 }
303 // double tap: left right
304 else if (state->count > 1) {
305 symbol_pair(shift, left, right);
306 }
307 // down: modifier
308 else if (state->pressed) {
309 if (modifier) {
310 register_code(modifier);
311 }
312 }
313 // tap: left (close: right)
314 else {
315 if (shift & S_SINGLE) {
316 shift_key(close ? right : left);
317 }
318 else {
319 tap_key(close ? right : left);
320 }
321 }
322 if (!modifier) {
323 reset_tap_dance(state);
324 }
325}
326
327void doublequote(qk_tap_dance_state_t *state, void *user_data)
328{
329 tap_pair(state, S_ALWAYS, KC_QUOT, KC_QUOT, 0, 0);
330}
331
332void grave(qk_tap_dance_state_t *state, void *user_data)
333{
334 tap_pair(state, S_NEVER, KC_GRV, KC_GRV, 0, 0);
335}
336
337void lbrace(qk_tap_dance_state_t *state, void *user_data)
338{
339 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, 0);
340}
341
342void lcurly(qk_tap_dance_state_t *state, void *user_data)
343{
344 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, 0);
345}
346
347void lparen(qk_tap_dance_state_t *state, void *user_data)
348{
349 tap_pair(state, S_ALWAYS, KC_9, KC_0, KC_LCTL, 0);
350}
351
352void lparen_reset(qk_tap_dance_state_t *state, void *user_data)
353{
354 unregister_code(KC_LCTL);
355}
356
357void quote(qk_tap_dance_state_t *state, void *user_data)
358{
359 tap_pair(state, S_NEVER, KC_QUOT, KC_QUOT, 0, 0);
360}
361
362void rangle(qk_tap_dance_state_t *state, void *user_data)
363{
364 tap_pair(state, S_ALWAYS, KC_COMM, KC_DOT, 0, CLOSE);
365}
366
367void rbrace(qk_tap_dance_state_t *state, void *user_data)
368{
369 tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, CLOSE);
370}
371
372void rcurly(qk_tap_dance_state_t *state, void *user_data)
373{
374 tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, CLOSE);
375}
376
377void rparen(qk_tap_dance_state_t *state, void *user_data)
378{
379 tap_pair(state, S_ALWAYS, KC_9, KC_0, 0, CLOSE);
380}
381
382void rparen_reset(qk_tap_dance_state_t *state, void *user_data)
383{
384 unregister_code(KC_LCTL);
385}
386
387// ............................................................ Tap Dance Insert
388
389void comma(qk_tap_dance_state_t *state, void *user_data)
390{
391 tap_key(KC_COMM);
392 if (state->count > 1) {
393 tap_key(KC_SPC);
394 }
395 reset_tap_dance(state);
396}
397
398void dot(qk_tap_dance_state_t *state, void *user_data)
399{
400 if (state->count > 1) {
401 shift_key(KC_COLN);
402 }
403 else {
404 tap_key(KC_DOT);
405 }
406 reset_tap_dance(state);
407}
408
409// compile time macro string, see functions/hardware planck script
410void private(qk_tap_dance_state_t *state, void *user_data)
411{
412 if (state->count > 1) {
413#ifdef PRIVATE_STRING
414#include "private_string.h"
415#endif
416 }
417 reset_tap_dance(state);
418}
419
420// config.h defined string
421void send(qk_tap_dance_state_t *state, void *user_data)
422{
423 if (state->count > 1) {
424 SEND_STRING(PUBLIC_STRING);
425 }
426 reset_tap_dance(state);
427}
428
429// .......................................................... Tap Dance One Shot
430
431void caps(qk_tap_dance_state_t *state, void *user_data)
432{
433 if (state->count > 1) {
434 tap_key(KC_CAPS);
435 }
436 else {
437 set_oneshot_mods(MOD_LSFT);
438 register_code (KC_LSFT); // on hold down
439 }
440}
441
442void caps_reset(qk_tap_dance_state_t *state, void *user_data)
443{
444 unregister_code(KC_LSFT);
445}
446
447// ................................................................... Tap Dance
448
449qk_tap_dance_action_t tap_dance_actions[] = {
450 [_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, caps_reset)
451 ,[_COLN] = ACTION_TAP_DANCE_FN (colon)
452 ,[_COMM] = ACTION_TAP_DANCE_FN (comma)
453 ,[_DOT] = ACTION_TAP_DANCE_FN (dot)
454 ,[_DQOT] = ACTION_TAP_DANCE_FN (doublequote)
455 ,[_ENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, enter, enter_reset)
456 ,[_EQL] = ACTION_TAP_DANCE_FN (eql)
457 ,[_GRV] = ACTION_TAP_DANCE_FN (grave)
458 ,[_GT] = ACTION_TAP_DANCE_FN (greater)
459 ,[_LBRC] = ACTION_TAP_DANCE_FN (lbrace)
460 ,[_LCBR] = ACTION_TAP_DANCE_FN (lcurly)
461 ,[_LPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lparen, lparen_reset)
462 ,[_LT] = ACTION_TAP_DANCE_FN (lesser)
463 ,[_PRIV] = ACTION_TAP_DANCE_FN (private)
464 ,[_QUOT] = ACTION_TAP_DANCE_FN (quote)
465 ,[_RBRC] = ACTION_TAP_DANCE_FN (rbrace)
466 ,[_RCBR] = ACTION_TAP_DANCE_FN (rcurly)
467 ,[_RNGL] = ACTION_TAP_DANCE_FN (rangle)
468 ,[_RPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rparen, rparen_reset)
469 ,[_SEND] = ACTION_TAP_DANCE_FN (send)
470 ,[_SPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, space, space_reset)
471 ,[_TILD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tilde, tilde_reset)
472};
473
474// .............................................................. Dynamic Layers
475
476#define LEFT 1
477#define RIGHT 2
478static uint8_t thumb = 0;
479
480// LEFT (KC_SPC, S(KC_BSLS)), RIGHT (KC_LEFT, S(KC_LEFT)) opposite thumb combinations, see process_record_user()
481// up, up -> _BASE
482// up, down -> _SYMBOL
483// down, up -> _NUMBER
484// down, down -> _MOUSE // see layer keycodes that raise mouse layer
485#define THUMBS_DOWN _MOUSE // layer
486
487static uint8_t overlayer = 0;
488
489// left right thumb layer combinations
490void thumb_layer(keyrecord_t *record, uint8_t side, uint8_t shift, uint16_t keycode, uint8_t thumb_dn_layer, uint8_t thumb_up_layer)
491{
492 if (record->event.pressed) {
493 // layer_on via tap_layer(), see process_record_user()
494 key_timer = timer_read();
495 thumb = thumb | side;
496 }
497 else {
498 layer_off(thumb_dn_layer);
499 // opposite thumb_layer() thumb may have switched effective layer!
500 if (overlayer) {
501 layer_off(overlayer);
502 overlayer = 0;
503 }
504 if (!key_press(shift, keycode)) {
505 layer_off(THUMBS_DOWN); // both thumbs needed
506 // opposite thumb down? see left right combination layer table above
507 if (thumb & (side == LEFT ? RIGHT : LEFT)) {
508 layer_on(thumb_up_layer);
509 overlayer = thumb_up_layer;
510 }
511 }
512 clear_mods();
513 thumb = thumb & ~side;
514 key_timer = 0;
515 }
516}
517
518// #ifdef STENO_ENABLE
519// // LT for steno keycode
520// void stn_layer(keyrecord_t *record, uint16_t keycode, uint8_t layer)
521// {
522// if (record->event.pressed) {
523// key_timer = timer_read();
524// if (keycode) {
525// process_steno(keycode, record);
526// }
527// layer_on(layer);
528// }
529// else {
530// layer_off(layer);
531// if (keycode) {
532// if (timer_elapsed(key_timer) < TAPPING_TERM) {
533// process_steno(keycode, record);
534// }
535// else {
536// // clear pressed state (request push of updated) process_steno.c and .h
537// // steno_clear_state();
538// }
539// }
540// key_timer = 0;
541// }
542// }
543// #endif
544
545// LT for S(keycode)
546void lt_shift(keyrecord_t *record, uint16_t keycode, uint8_t layer)
547{
548 if (record->event.pressed) {
549 key_timer = timer_read();
550 layer_on(layer);
551 }
552 else {
553 layer_off(layer);
554 // for shifted keycodes, hence, LT_SHIFT
555 key_press(SHIFT, keycode);
556 clear_mods();
557 key_timer = 0;
558 }
559}
560
561// set layer asap to overcome macro latency errors, notably tap dance and LT usage
562// this routine inexplicably (?) sets layer_on() faster than can be done in thumb_layer()
563void tap_layer(keyrecord_t *record, uint8_t layer)
564{
565 if (record->event.pressed) {
566 layer_on(layer);
567 }
568 else {
569 layer_off(layer);
570 }
571}
572
573// ..................................................................... Keymaps
574
575// void persistant_default_layer_set(uint16_t default_layer)
576// {
577// eeconfig_update_default_layer(default_layer);
578// default_layer_set (default_layer);
579// }
580
581void clear_layers(void)
582{
583 uint8_t layer;
584 for (layer = 0; layer < _END_LAYERS; layer++) {
585 layer_off(layer);
586 }
587}
588
589#ifdef CENTER_TT
590static uint16_t tt_keycode = 0; // current TT keycode
591
592void clear_tt(void)
593{
594 if (tt_keycode == KC_CAPS) {
595 tap_key(KC_CAPS); // clear capslock
596 }
597 tt_keycode = 0;
598 clear_layers();
599 set_single_persistent_default_layer(_BASE);
600}
601#endif
602
603// txbolt plover run state
604static uint8_t plover = 0;
605
606void base_layer(void)
607{
608#ifdef AUDIO_ENABLE
609 if (plover) {
610 PLAY_SONG(song_plover_gb);
611 }
612 else {
613 PLAY_SONG(song_qwerty);
614 }
615#endif
616 clear_layers();
617 set_single_persistent_default_layer(_BASE);
618}
619
620void toggle_plover(uint8_t state)
621{
622 if (plover != state) {
623#ifdef PLOVER_KEYBIND
624#include "plover_keybind.h"
625#endif
626 plover = state;
627 }
628}
629
630void steno(keyrecord_t *record)
631{
632 if (record->event.pressed) {
633#ifdef AUDIO_ENABLE
634 PLAY_SONG(song_plover);
635#endif
636 clear_layers();
637 layer_on(_PLOVER);
638 if (!eeconfig_is_enabled()) {
639 eeconfig_init();
640 }
641 keymap_config.raw = eeconfig_read_keymap();
642 keymap_config.nkro = 1;
643 eeconfig_update_keymap(keymap_config.raw);
644 if (!plover) {
645 toggle_plover(1);
646 }
647 }
648}
649
650void steno_exit(keyrecord_t *record)
651{
652 if (record->event.pressed) {
653 base_layer();
654 toggle_plover(0);
655 }
656}
diff --git a/keyboards/planck/keymaps/sdothum/common/number_fkey_layout.h b/keyboards/planck/keymaps/sdothum/common/number_fkey_layout.h
new file mode 100644
index 000000000..4824b82a0
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/number_fkey_layout.h
@@ -0,0 +1,87 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5#ifdef SHIFT_SYMBOLS
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | | | f() | | | | 0 | = | | | |
14 // | | | | f() | | | | = | 0 | | | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_NUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_CTL, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
23#else
24 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
25#endif
26 },
27#else
28 // .-----------------------------------------------------------------------------------.
29 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
30 // |-----------------------------------------------------------------------------------|
31 // | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
32 // |-----------------------------------------------------------------------------------|
33 // | | # | X | G | | | | , | 1 | 2 | 3 | + |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | f() | | | | 0 | = | | | |
36 // | | | | f() | | | | = | 0 | | | |
37 // '-----------------------------------------------------------------------------------'
38
39 [_NUMBER] = {
40 {_______, KC_F, MT_E, KC_D, _______, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
41 {OS_CTL, GT_C, AT_B, LT_A, _______, _______, _______, KC_DOT, KC_4, KC_5, KC_6, KC_MINS},
42 {_______, KC_HASH, MT_X, S(KC_G), _______, _______, _______, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
43#ifdef THUMB_0
44 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
45#else
46 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
47#endif
48 },
49
50 // .-----------------------------------------------------------------------------------.
51 // | | | | | | | | { | & | ? | : | } |
52 // |-----------------------------------------------------------------------------------|
53 // | | | | f() | | | | ( | $ | % | ^ | ) |
54 // |-----------------------------------------------------------------------------------|
55 // | | | | | | | | [ | < | ~ | > | ] |
56 // |-----------------------------------------------------------------------------------|
57 // | | | | f() | | | | \ | | | | | |
58 // '-----------------------------------------------------------------------------------'
59
60 [_NUMSYM] = {
61 {_______, _______, _______, ___x___, _______, _______, _______, TD_LCBR, KC_AMPR, KC_QUES, KC_COLN, KC_RCBR},
62 {___x___, ___x___, ___x___, ___fn__, _______, _______, _______, TD_LPRN, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN},
63 {_______, _______, _______, ___x___, _______, _______, _______, TD_LBRC, KC_LT, KC_TILD, KC_GT, KC_RBRC},
64 {___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_BSLS, KC_PIPE, ___x___, ___x___, ___x___},
65 },
66#endif
67
68// ............ .................................................. Function Keys
69
70 // .-----------------------------------------------------------------------------------.
71 // | | | | | | | | | F7 | F8 | F9 | F12 |
72 // |-----------------------------------------------------------------------------------|
73 // | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
74 // |-----------------------------------------------------------------------------------|
75 // | | | | | | | | | F1 | F2 | F3 | F10 |
76 // |-----------------------------------------------------------------------------------|
77 // | | | | | | f() | | + | | | | |
78 // | | | | | f() | | | + | | | | | see _PLOVER
79 // '-----------------------------------------------------------------------------------'
80
81 [_FNCKEY] = {
82 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
83 {OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
84 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
85 {_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
86 },
87
diff --git a/keyboards/planck/keymaps/sdothum/common/plover_keybind.h b/keyboards/planck/keymaps/sdothum/common/plover_keybind.h
new file mode 100644
index 000000000..88ec727bf
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/plover_keybind.h
@@ -0,0 +1,7 @@
1
2// simple window manager specific plover keybind hook
3
4// toggle plover application, see herbstluftwm/config/appbinds
5register_code (KC_LGUI);
6shift_key (KC_RGHT);
7unregister_code(KC_LGUI);
diff --git a/keyboards/planck/keymaps/sdothum/common/sounds.h b/keyboards/planck/keymaps/sdothum/common/sounds.h
new file mode 100644
index 000000000..1bfc7a6da
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/sounds.h
@@ -0,0 +1,14 @@
1
2// ................................................................ Audio Sounds
3
4#ifdef AUDIO_ENABLE
5float song_startup [][2] = SONG(STARTUP_SOUND);
6float song_colemak [][2] = SONG(COLEMAK_SOUND);
7float song_qwerty [][2] = SONG(QWERTY_SOUND);
8float song_plover [][2] = SONG(PLOVER_SOUND);
9float song_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
10float song_caps_on [][2] = SONG(CAPS_LOCK_ON_SOUND);
11float song_caps_off [][2] = SONG(CAPS_LOCK_OFF_SOUND);
12float music_scale [][2] = SONG(MUSIC_SCALE_SOUND);
13float song_goodbye [][2] = SONG(GOODBYE_SOUND);
14#endif
diff --git a/keyboards/planck/keymaps/sdothum/common/steno_layout.h b/keyboards/planck/keymaps/sdothum/common/steno_layout.h
new file mode 100644
index 000000000..ab4a6fe01
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/steno_layout.h
@@ -0,0 +1,39 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ...................................................................... Plover
5#ifdef STENO_ENABLE
6 // ,-----------------------------------------------------------------------------------.
7 // | # | # | # | # | # | # | # | # | # | # | # | # |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | Base | S | T | P | H | * | * | F | P | L | T | D |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | | A | O | E | U | |
14 // `-----------------------------------------------------------------------------------'
15
16 [_PLOVER] = {
17 {STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC },
18 {BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR },
19 {BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR },
20 {_______, _______, _______, PS_STNA, PS_STNO, _______, _______, PS_STNE, PS_STNU, _______, _______, _______},
21 },
22#else
23 // ,-----------------------------------------------------------------------------------.
24 // | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
25 // |------+------+------+------+------+-------------+------+------+------+------+------|
26 // | Base | S | T | P | H | * | * | F | P | L | T | D |
27 // |------+------+------+------+------+------|------+------+------+------+------+------|
28 // | Base | S | K | W | R | * | * | R | B | G | S | Z |
29 // |------+------+------+------+------+------+------+------+------+------+------+------|
30 // | | A | O | E | U | |
31 // `-----------------------------------------------------------------------------------'
32
33 [_PLOVER] = {
34 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
35 {BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
36 {BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
37 {_______, _______, _______, LT_C, LT_V, _______, _______, LT_N, LT_M, _______, _______, _______},
38 },
39#endif
diff --git a/keyboards/planck/keymaps/sdothum/common/symbol_guifn_layout.h b/keyboards/planck/keymaps/sdothum/common/symbol_guifn_layout.h
new file mode 100644
index 000000000..2edfe1a04
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/symbol_guifn_layout.h
@@ -0,0 +1,75 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ..................................................... Symbol Navigation Layer
5#ifdef SHIFT_SYMBOLS
6 // .-----------------------------------------------------------------------------------.
7 // | | ~ | * | & | | | | | Home | Up | End | PgUp |
8 // |-----------------------------------------------------------------------------------|
9 // | Ctrl | ^ | % | $ | | | | | Left | Down | Right| PgDn |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | @ | ! | | | | | | | | |
12 // |-----------------------------------------------------------------------------------|
13 // | | | |Adjust| \ | | | | f() | | | |
14 // '-----------------------------------------------------------------------------------'
15
16 [_SYMBOL] = {
17 {_______, KC_TILD, KC_ASTR, KC_AMPR, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
18 {OS_CTL, SM_CIRC, SM_PERC, SM_DLR, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
19 {_______, KC_HASH, KC_AT, KC_EXLM, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
20 {___x___, ___x___, ___x___, ADJUST, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
21 },
22#else
23 // .-----------------------------------------------------------------------------------.
24 // | { | . | * | & | } | | | | Home | Up | End | PgUp |
25 // |-----------------------------------------------------------------------------------|
26 // | ( | ^ | % | $ | ) | | | | Left | Down | Right| PgDn |
27 // |-----------------------------------------------------------------------------------|
28 // | [ | # | @ | ! | ] | | | | | | | |
29 // |-----------------------------------------------------------------------------------|
30 // | | | | | | \ | | | | f() | | | |
31 // '-----------------------------------------------------------------------------------'
32
33 [_SYMBOL] = {
34 {KC_LCBR, KC_DOT, KC_ASTR, KC_AMPR, TD_RCBR, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
35 {SM_LPRN, SM_CIRC, SM_PERC, SM_DLR, TD_RPRN, _______, _______, _______, LT_LFTX, KC_DOWN, KC_RGHT, KC_PGDN},
36 {KC_LBRC, KC_HASH, KC_AT, KC_EXLM, TD_RBRC, _______, _______, _______, _______, _______, _______, _______},
37 {___x___, ___x___, ___x___, SL_PIPE, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
38 },
39
40 // .-----------------------------------------------------------------------------------.
41 // | | ? | + | ~ | | | | | | | | |
42 // |-----------------------------------------------------------------------------------|
43 // | | < | = | > | | | | | f() | | | |
44 // |-----------------------------------------------------------------------------------|
45 // | | 3 | 2 | 1 | | | | | | | | |
46 // |-----------------------------------------------------------------------------------|
47 // | | | | | | | | | f() | | | |
48 // '-----------------------------------------------------------------------------------'
49
50 [_SYMREG] = {
51 {___x___, KC_QUES, KC_PLUS, KC_TILD, ___x___, _______, _______, _______, ___x___, ___x___, ___x___, ___x___},
52 {___x___, KC_LT, KC_EQL, TD_RNGL, ___x___, _______, _______, _______, ___fn__, ___x___, ___x___, ___x___},
53 {___x___, KC_3, KC_2, KC_1, ___x___, _______, _______, _______, _______, _______, _______, _______},
54 {___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
55 },
56#endif
57
58// ............................................................... Mouse Actions
59
60 // .-----------------------------------------------------------------------------------.
61 // | | | | | | | | | Left | Up | Right| Up |
62 // |-----------------------------------------------------------------------------------|
63 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
64 // |-----------------------------------------------------------------------------------|
65 // | | | | | | | | | | | | |
66 // |-----------------------------------------------------------------------------------|
67 // | | | | | f() | | | | f() | | | |
68 // '-----------------------------------------------------------------------------------'
69
70 [_MOUSE] = {
71 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
72 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
73 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
74 {_______, _______, _______, _______, ___fn__, _______, _______, _______, ___fn__, _______, _______, _______},
75 },
diff --git a/keyboards/planck/keymaps/sdothum/common/tapdance.h b/keyboards/planck/keymaps/sdothum/common/tapdance.h
new file mode 100644
index 000000000..d778286bf
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/tapdance.h
@@ -0,0 +1,49 @@
1
2// tap dance keys
3enum tap_dance {
4 _CAPS = 0
5 ,_COLN
6 ,_COMM
7 ,_DOT
8 ,_DQOT
9 ,_ENT
10 ,_EQL
11 ,_GRV
12 ,_GT
13 ,_LBRC
14 ,_LCBR
15 ,_LPRN
16 ,_LT
17 ,_PRIV
18 ,_QUOT
19 ,_RBRC
20 ,_RCBR
21 ,_RNGL
22 ,_RPRN
23 ,_SEND
24 ,_SPC
25 ,_TILD
26};
27
28#define TD_CAPS TD(_CAPS)
29#define TD_COLN TD(_COLN)
30#define TD_COMM TD(_COMM)
31#define TD_DOT TD(_DOT)
32#define TD_DQOT TD(_DQOT)
33#define TD_ENT TD(_ENT)
34#define TD_EQL TD(_EQL)
35#define TD_GRV TD(_GRV)
36#define TD_GT TD(_GT)
37#define TD_LBRC TD(_LBRC)
38#define TD_LCBR TD(_LCBR)
39#define TD_LPRN TD(_LPRN)
40#define TD_LT TD(_LT)
41#define TD_PRIV TD(_PRIV) // compile time macro string, provided in private_string.h
42#define TD_QUOT TD(_QUOT)
43#define TD_RBRC TD(_RBRC)
44#define TD_RCBR TD(_RCBR)
45#define TD_RNGL TD(_RNGL)
46#define TD_RPRN TD(_RPRN)
47#define TD_SEND TD(_SEND) // config.h defined macro string
48#define TD_SPC TD(_SPC) // see process_record_user() for extended handling of Spc
49#define TD_TILD TD(_TILD)
diff --git a/keyboards/planck/keymaps/sdothum/common/toggle_layout.h b/keyboards/planck/keymaps/sdothum/common/toggle_layout.h
new file mode 100644
index 000000000..504a1ff57
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/common/toggle_layout.h
@@ -0,0 +1,102 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ......................................................... Number Keypad Layer
5
6 // .-----------------------------------------------------------------------------------.
7 // | | F | E | D | | | | / | 7 | 8 | 9 | * |
8 // |-----------------------------------------------------------------------------------|
9 // | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
10 // |-----------------------------------------------------------------------------------|
11 // | | # | G | \ | | | | , | 1 | 2 | 3 | + |
12 // |-----------------------------------------------------------------------------------|
13 // | | f() | Space| 0 | = | |
14 // | | f() | Space| = | 0 | |
15 // '-----------------------------------------------------------------------------------'
16
17 [_TTNUMBER] = {
18 {_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
19 {OS_CTL, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
20 {_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
21#ifdef THUMB_0
22 {_______, _______, _______, _______, TT_ESC, KC_SPC, KC_0, LT_EQL, _______, _______, _______, _______},
23#else
24 {_______, _______, _______, _______, TT_ESC, KC_SPC, KC_EQL, LT_0, _______, _______, _______, _______},
25#endif
26 },
27
28// ............ .................................................. Function Keys
29
30 // .-----------------------------------------------------------------------------------.
31 // | | | | | | | | | F7 | F8 | F9 | F12 |
32 // |-----------------------------------------------------------------------------------|
33 // | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
34 // |-----------------------------------------------------------------------------------|
35 // | | | | | | | | | F1 | F2 | F3 | F10 |
36 // |-----------------------------------------------------------------------------------|
37 // | | f() | | + | | |
38 // '-----------------------------------------------------------------------------------'
39
40 [_TTFNCKEY] = {
41 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
42 {OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
43 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
44 {_______, _______, _______, _______, TT_ESC, _______, KC_PLUS, _______, _______, _______, _______, _______},
45 },
46
47// ....................................................................... Regex
48
49 // ,-----------------------------------------------------------------------------------.
50 // | | ~ | { | } | & | | | % | [ | ] | @ | |
51 // |------+------+------+------+------+-------------+------+------+------+------+------|
52 // | | ^ | < | > | ? | | | | | ( | ) | $ | |
53 // |------+------+------+------+------+-------------+------+------+------+------+------|
54 // | | : | ! | = | / | | | \ | * | . | # | |
55 // |------+------+------+------+------+------+------+------+------+------+------+------|
56 // | | f() | - | + | Space| |
57 // `-----------------------------------------------------------------------------------'
58
59 [_TTREGEX] = {
60 {___x___, KC_TILD, KC_LCBR, KC_RCBR, KC_AMPR, ___x___, ___x___, KC_PERC, KC_LBRC, KC_RBRC, KC_AT, ___x___},
61 {___x___, KC_CIRC, KC_LT, KC_GT, KC_QUES, ___x___, ___x___, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, ___x___},
62 {___x___, KC_COLN, KC_EXLM, KC_EQL, KC_SLSH, ___x___, ___x___, KC_BSLS, KC_ASTR, KC_DOT, KC_HASH, ___x___},
63 {_______, _______, _______, _______, TT_ESC, KC_MINS, KC_PLUS, KC_SPC, _______, _______, _______, _______},
64 },
65
66// ............................................................ Navigation Layer
67
68 // .-----------------------------------------------------------------------------------.
69 // | | | | | | | | | Home | Up | End | PgUp |
70 // |-----------------------------------------------------------------------------------|
71 // | Ctrl | GUI | Alt | Shift| | | | | Left | Down | Right| PgDn |
72 // |-----------------------------------------------------------------------------------|
73 // | | | | | | | | | | | | |
74 // |-----------------------------------------------------------------------------------|
75 // | | f() | | | | |
76 // '-----------------------------------------------------------------------------------'
77
78 [_TTCURSOR] = {
79 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
80 {OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
81 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
82 {_______, _______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______},
83 },
84
85// ............................................................... Mouse Actions
86
87 // .-----------------------------------------------------------------------------------.
88 // | | | | | | | | | Left | Up | Right| Up |
89 // |-----------------------------------------------------------------------------------|
90 // | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
91 // |-----------------------------------------------------------------------------------|
92 // | | | | | | | | | | | | |
93 // |-----------------------------------------------------------------------------------|
94 // | | f() | | | | |
95 // '-----------------------------------------------------------------------------------'
96
97 [_TTMOUSE] = {
98 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
99 {_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
100 {_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
101 {_______, _______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______},
102 },
diff --git a/keyboards/planck/keymaps/sdothum/config.h b/keyboards/planck/keymaps/sdothum/config.h
new file mode 100644
index 000000000..4b2cdeece
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/config.h
@@ -0,0 +1,50 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// required because lower/raise modifiers are redefined by colemak-dh
7#define PREVENT_STUCK_MODIFIERS
8
9// tap dance key press termination interval
10#define TAPPING_TERM 250
11
12// smooth mouse motion
13// #define MOUSEKEY_INTERVAL 20
14// #define MOUSEKEY_DELAY 0
15// #define MOUSEKEY_TIME_TO_MAX 60
16// #define MOUSEKEY_MAX_SPEED 7
17// #define MOUSEKEY_WHEEL_DELAY 0
18
19// compile time macro string, see functions/hardware planck script (undefine otherwise)
20#define PRIVATE_STRING
21
22// compile time macro string, must be in quotes
23#define PUBLIC_STRING ":%s/arch=(.*)/arch=('any')\n"
24
25// thumb key tap-shift() double tap: one shot shift (0) off (1) on
26#define DT_SHIFT 1
27
28// number layer 0 position KEYPAD_0, THUMB_0
29#define THUMB_0
30
31// home block shift symbol clustes defined (no overlays required for extended symbols, undefine otherwise)
32#define SHIFT_SYMBOLS
33
34// center column TT assignments (undefine for OSM chords)
35#define CENTER_TT
36#define TAPPING_TOGGLE 1
37
38// home row modifiers
39#define HOME_MODS
40// fix dual function timing
41#define PERMISSIVE_HOLD
42#define IGNORE_MOD_TAP_INTERRUPT
43
44// layout ADNW*, BEAKL*, COLEKA*, QWERTY (default)
45#define BEAKLSP
46
47// sync app with window manager keybind hook defined in plover_keybind.h
48#define PLOVER_KEYBIND
49
50#endif
diff --git a/keyboards/planck/keymaps/sdothum/keymap.c b/keyboards/planck/keymaps/sdothum/keymap.c
new file mode 100644
index 000000000..ac509c41d
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/keymap.c
@@ -0,0 +1,480 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3//
4// To flash planck firmware
5// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
6// Reset keyboard or press hw reset button on base (hole)
7//
8// cd qmk_firmware/keyboards/planck
9// sudo make KEYMAP=sdothum dfu
10//
11// sudo make clean (good practice before flashing)
12// sudo make KEYMAP=sdothum (to compile check)
13//
14// Package requirements (for arch linux)
15// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
16// avr-gcc-atmel
17// avr-libc-atmel
18// dfu-programmer
19//
20// Notes
21// ▔▔▔▔▔
22// ** E R G O W I D E S P L I T ** Layout
23//
24// Autocompletion tap dance key pairs (),[],{} are available from the
25// number/symbol layer, as well as, numerous (un)shift key values
26//
27// The navigation pad provides a single hand right thumb activated cluster
28// with left hand modifiers
29//
30// #define PRIVATE_STRING includes private_string.h, a user defined code
31// block for the PRIV tap dance e.g. SEND_STRING("secret messape"),
32// see function private()
33//
34// Modifier clusters
35// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
36// The num and sym keys together access the navigation pad layer
37//
38// ,-----------------------------------------------------------------------------------.
39// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
40// `-----------------------------------------------------------------------------------'
41//
42// Hint
43// ▔▔▔▔
44// For sculpted keycaps such as Cherry or OEM profile, reverse the Alt, Num,
45// Shift, Shift, Nav, Sym keycaps for more ergonomic thumb orientation and
46// actuation
47//
48// Code
49// ▔▔▔▔
50// This source is shamelessly based on the "default" planck layout
51//
52// #ifdef/#endif block structures are not indented, as syntax highlighting
53// in vim is sufficient for identification
54//
55// c++ commenting style is used throughout
56//
57// Change history
58// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔
59// See http://thedarnedestthing.com/planck%20constant
60// See http://thedarnedestthing.com/planck%20done
61
62
63
64// === N O T E ===
65//
66// sudo CPATH=<keymap.c directory>/common make ...
67
68
69#include "config.h"
70#include "planck.h"
71#include "action_layer.h"
72#ifdef STENO_ENABLE
73#include "keymap_steno.h"
74#endif
75#ifdef AUDIO_ENABLE
76#include "audio.h"
77#endif
78#include "eeconfig.h"
79
80extern keymap_config_t keymap_config;
81
82enum planck_layers {
83 _BASE = 0
84 ,_SHIFT
85 ,_LSHIFT
86 ,_RSHIFT
87 ,_PLOVER
88 ,_NUMBER
89 ,_SYMBOL
90 ,_FNCKEY
91 ,_MOUSE
92#ifdef CENTER_TT
93 ,_TTNUMBER
94 ,_TTREGEX
95 ,_TTFNCKEY
96 ,_TTCURSOR
97 ,_TTMOUSE
98#endif
99#ifndef SHIFT_SYMBOLS
100 ,_NUMSYM
101 ,_SYMREG
102#endif
103 ,_EDIT
104 ,_QWERTY
105 ,_ADJUST
106 ,_END_LAYERS
107};
108
109enum planck_keycodes {
110 BASE = SAFE_RANGE
111 ,BASE1
112 ,BASE2
113 ,PLOVER
114 ,PLOEXIT
115 ,SM_CIRC // pseudo GUI_T(S(KC_6)) for shifted key-codes, see process_record_user()
116 ,SM_DLR // pseudo SFT_T(S(KC_4)) for shifted key-codes, see process_record_user()
117 ,SM_G // pseudo MT (MOD_LALT | MOD_LSFT, S(KC_G)) for shifted key-codes, see process_record_user()
118 ,SM_PERC // pseudo ALT_T(S(KC_5)) for shifted key-codes, see process_record_user()
119 ,SM_LPRN // pseudo CTL_T(S(KC_9)) for shifted key-codes, see process_record_user()
120 ,SL_LEFT // pseudo LT (_MOUSE, S(KC_LEFT)) for shifted key-codes, see process_record_user()
121 ,SP_DEL // pseudo LT (_MOUSE, KC_DEL) for shifted key-codes, see process_record_user()
122 ,SL_PIPE // pseudo LT (_ADJUST, S(KC_BSLS)) for shifted key-codes, see process_record_user()
123 ,SL_TAB // pseudo LT (_FNCKEY, S(KC_TAB)) for shifted key-codes, see process_record_user()
124#ifdef CENTER_TT
125 ,TT_ESC
126#endif
127#ifdef STENO_ENABLE
128 ,PS_STNA = STN_A
129 ,PS_STNO = STN_O
130 ,PS_STNE = STN_E
131 ,PS_STNU = STN_U
132#else
133 ,LT_C = LT (_NUMBER, KC_C)
134 ,LT_V = LT (_FNCKEY, KC_V)
135 ,LT_N = LT (_EDIT, KC_N)
136 ,LT_M = LT (_SYMBOL, KC_M)
137#endif
138 ,PS_BASE
139};
140
141// modifier keys
142#define AT_B ALT_T(KC_B)
143#define AT_DOWN ALT_T(KC_DOWN)
144#define CT_RGHT CTL_T(KC_RGHT)
145#define GT_C GUI_T(KC_C)
146#define GT_UP GUI_T(KC_UP)
147#define MT_E MT (MOD_LCTL | MOD_LALT, KC_E)
148#define MT_X MT (MOD_LALT | MOD_LSFT, KC_X)
149#define ST_A SFT_T(KC_A)
150#ifdef HOME_MODS
151#define HOME_K CTL_T(KC_K)
152#define HOME_H GUI_T(KC_H)
153#define HOME_E ALT_T(KC_E)
154#define HOME_A SFT_T(KC_A)
155#if defined(BEAKLMU) || defined(BEAKLSP)
156#define HOME_T SFT_T(KC_T)
157#define HOME_R ALT_T(KC_R)
158#define HOME_S GUI_T(KC_S)
159#define HOME_W CTL_T(KC_W)
160#else
161#define HOME_T SFT_T(KC_T)
162#define HOME_S ALT_T(KC_S)
163#define HOME_N GUI_T(KC_N)
164#define HOME_B CTL_T(KC_B)
165#endif
166#else
167#define HOME_K KC_K
168#define HOME_H KC_H
169#define HOME_E KC_E
170#define HOME_A KC_A
171#define HOME_T KC_T
172#define HOME_S KC_S
173#define HOME_N KC_N
174#define HOME_B KC_B
175#endif
176
177#define S_DOWN S (KC_DOWN)
178#define S_LEFT S (KC_LEFT)
179#define S_RGHT S (KC_RGHT)
180#define S_TAB S (KC_TAB)
181#define S_UP S (KC_UP)
182
183#include "tapdance.h"
184
185// keycodes
186#define ___x___ KC_TRNS
187#define ___fn__ KC_TRNS
188#ifdef _______
189#undef _______
190#endif
191#define _______ KC_NO
192
193#define COPY LCTL(KC_C)
194#define CUT LCTL(KC_X)
195#define EOT LCTL(KC_D)
196#define NAK LCTL(KC_U)
197#define PASTE LCTL(KC_V)
198#define UNDO LCTL(KC_Z)
199#define TMCOPY LALT(LCTL(KC_C))
200#define TMPASTE LALT(LCTL(KC_V))
201#define LT_BSLS LT (_MOUSE, KC_BSLS) // see process_record_user() for extended handling
202#define LT_BSPC LT (_EDIT, KC_BSPC)
203#define SP_LEFT LT (_EDIT, KC_LEFT)
204#define LT_ESC LT (_NUMBER, KC_ESC)
205#define LT_LEFT LT (_SYMBOL, KC_LEFT) // see process_record_user() for extended handling
206#define SP_BSPC LT (_SYMBOL, KC_BSPC) // see process_record_user() for extended handling
207#define LT_TAB LT (_FNCKEY, KC_TAB)
208#define LT_INS LT (_FNCKEY, KC_INS)
209#define LT_ALTG LT (_FNCKEY, KC_RALT)
210#define ADJUST MO (_ADJUST)
211#define OS_ALT OSM (MOD_LALT)
212#define OS_CTL OSM (MOD_LCTL)
213#define OS_GUI OSM (MOD_LGUI)
214#define OS_SFT OSM (MOD_LSFT)
215#define OS_CALT OSM (MOD_LALT | MOD_LCTL)
216#define OS_CGUI OSM (MOD_LGUI | MOD_LCTL)
217#define OS_CSFT OSM (MOD_LSFT | MOD_LCTL)
218#define OS_SALT OSM (MOD_LALT | MOD_LSFT)
219#define OS_SGUI OSM (MOD_LGUI | MOD_LSFT)
220
221#ifdef CENTER_TT
222#ifdef BEAKLSP
223#define CNTR_TL OSM (MOD_LSFT)
224#else
225#define CNTR_TL TT (_TTFNCKEY)
226#endif
227#define CNTR_TR KC_CAPS
228#define CNTR_HL TT (_TTCURSOR)
229#define CNTR_HR TT (_TTMOUSE)
230#define CNTR_BL TT (_TTNUMBER)
231#define CNTR_BR TT (_TTREGEX)
232#else
233#define CNTR_TL OSM (MOD_LALT | MOD_LCTL)
234#define CNTR_TR OSM (MOD_LGUI | MOD_LCTL)
235#define CNTR_HL OSM (MOD_LALT | MOD_LSFT)
236#define CNTR_HR OSM (MOD_LGUI | MOD_LSFT)
237#define CNTR_BL TD (_CAPS)
238#define CNTR_BR OSM (MOD_LSFT | MOD_LCTL)
239#endif
240
241#ifdef THUMB_0
242#define LT_EQL LT (_ADJUST, KC_EQL)
243#else
244#define LT_0 LT (_ADJUST, KC_0)
245#endif
246#ifndef SHIFT_SYMBOLS
247#define LT_A LT (_NUMSYM, KC_A)
248#define LT_LFTX LT (_SYMREG, KC_LEFT)
249#endif
250
251// ........................................................ Default Alpha Layout
252
253const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
254
255#include "beakl.h"
256#include "colemak.h"
257#include "qwerty.h"
258#include "steno_layout.h"
259
260// ...................................................... Number / Function Keys
261
262#include "number_fkey_layout.h"
263
264// ......................................................... Symbol / Navigation
265
266#include "symbol_guifn_layout.h"
267
268// ............................................................... Toggle Layers
269
270#ifdef CENTER_TT
271#include "toggle_layout.h"
272#endif
273
274// ......................................................... Short Cuts / Adjust
275
276#include "chord_layout.h"
277
278};
279
280// ...................................................................... Sounds
281
282#include "sounds.h"
283
284// ........................................................... User Keycode Trap
285
286#include "keycode_functions.h"
287
288#define BASE_1 1
289#define BASE_2 2
290#define BASE_12 3
291static uint8_t base_n = 0;
292
293bool process_record_user(uint16_t keycode, keyrecord_t *record)
294{
295 switch (keycode) {
296 case BASE1:
297 if (record->event.pressed) {
298 base_n = base_n | BASE_1;
299 if (base_n == BASE_12) {
300 base_layer();
301 }
302 }
303 else {
304 base_n = base_n & ~BASE_1;
305 }
306 return false;
307 case BASE2:
308 if (record->event.pressed) {
309 base_n = base_n | BASE_2;
310 if (base_n == BASE_12) {
311 base_layer();
312 }
313 }
314 else {
315 base_n = base_n & ~BASE_2;
316 }
317 return false;
318 case AT_DOWN:
319#ifdef HOME_MODS
320 case HOME_E:
321#if defined(BEAKLMU) || defined(BEAKLSP)
322 case HOME_R:
323#else
324 case HOME_S:
325#endif
326#endif
327 tap_mods(record, KC_LALT);
328 break;
329 case CT_RGHT:
330#ifdef HOME_MODS
331 case HOME_K:
332#if defined(BEAKLMU) || defined(BEAKLSP)
333 case HOME_W:
334#else
335 case HOME_B:
336#endif
337#endif
338 tap_mods(record, KC_LCTL);
339 break;
340 case GT_UP:
341#ifdef HOME_MODS
342 case HOME_H:
343#if defined(BEAKLMU) || defined(BEAKLSP)
344 case HOME_S:
345#else
346 case HOME_N:
347#endif
348#endif
349 tap_mods(record, KC_LGUI);
350 break;
351#ifdef HOME_MODS
352 case HOME_A:
353 case HOME_T:
354 tap_mods(record, KC_LSFT);
355 break;
356#endif
357#ifdef CENTER_TT
358 case TT_ESC:
359 clear_tt(); // exit TT layer
360 return false;
361#endif
362 case LT_ESC:
363#ifdef CENTER_TT
364 if (tt_keycode != 0) {
365 clear_tt(); // exit TT layer
366 return false;
367 }
368#endif
369 tap_layer(record, _NUMBER);
370 break;
371 case LT_LEFT:
372 case SP_BSPC:
373 tap_layer(record, _SYMBOL);
374 // LT (_SYMBOL, KC_LEFT) left right combination layer
375 thumb_layer(record, RIGHT, 0, 0, _SYMBOL, _LSHIFT);
376 break;
377 case OS_ALT:
378 tap_mods(record, KC_LALT);
379 break;
380 case OS_CTL:
381 tap_mods(record, KC_LCTL);
382 break;
383 case OS_GUI:
384 tap_mods(record, KC_LGUI);
385 break;
386 case SM_CIRC:
387 // GUI_T(S(KC_6))
388 mt_shift(record, KC_LGUI, 0, KC_6);
389 break;
390 case SM_DLR:
391 // SFT_T(S(KC_4))
392 mt_shift(record, KC_LSFT, 0, KC_4);
393 break;
394 case SM_G:
395 // MT(MOD_LALT | MOD_LSFT, S(KC_G))
396 mt_shift(record, KC_LALT, KC_LSFT, KC_G);
397 break;
398 case SM_LPRN:
399 // CTL_T(S(KC_9))
400 mt_shift(record, KC_LCTL, 0, KC_9);
401 break;
402 case SM_PERC:
403 // ALT_T(S(KC_5))
404 mt_shift(record, KC_LALT, 0, KC_5);
405 break;
406 case LT_BSLS:
407 tap_layer(record, _MOUSE);
408 // LT (_MOUSE, KC_BSLS) left right combination layer, see #define LT_BSLS
409 thumb_layer(record, LEFT, 0, 0, _MOUSE, _SYMBOL);
410 break;
411 case SL_LEFT:
412 tap_layer(record, _MOUSE);
413 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
414 thumb_layer(record, RIGHT, SHIFT, KC_LEFT, _MOUSE, _LSHIFT);
415 break;
416 case SP_DEL:
417 tap_layer(record, _MOUSE);
418 // LT (_MOUSE, S(KC_LEFT)) left right combination layer
419 thumb_layer(record, RIGHT, NOSHIFT, KC_DEL, _MOUSE, _LSHIFT);
420 break;
421 case SL_PIPE:
422 // LT (_ADJUST, S(KC_BSLS)) emulation
423 lt_shift(record, KC_BSLS, _ADJUST);
424 break;
425 case SL_TAB:
426 // LT (_FNCKEY, S(KC_TAB)) emulation
427 lt_shift(record, KC_TAB, _FNCKEY);
428 break;
429 case TD_ENT:
430 tap_layer(record, _RSHIFT);
431 // LT (_RSHIFT, KC_ENT) emulation, see tap dance enter
432 break;
433 case TD_SPC:
434 tap_layer(record, _LSHIFT);
435 // LT (_LSHIFT, KC_SPC) left right combination layer, see tap dance TD_SPC
436 thumb_layer(record, LEFT, 0, 0, _LSHIFT, _SYMBOL);
437 break;
438#ifdef CENTER_TT
439 case CNTR_TL:
440 case CNTR_TR:
441 case CNTR_HL:
442 case CNTR_HR:
443 case CNTR_BL:
444 case CNTR_BR:
445 if (tt_keycode != keycode && tt_keycode != 0) {
446 clear_tt(); // return to base layer first if different TT layer selected
447 }
448 tt_keycode = keycode;
449 break;
450#endif
451// #ifdef STENO_ENABLE
452// case PS_STNA:
453// stn_layer(record, STN_A, _NUMBER);
454// break;
455// case PS_STNO:
456// stn_layer(record, STN_O, _FNCKEY);
457// break;
458// case PS_STNE:
459// stn_layer(record, STN_E, _EDIT);
460// break;
461// case PS_STNU:
462// stn_layer(record, STN_U, _SYMBOL);
463// break;
464// #endif
465 case PS_BASE:
466 if (record->event.pressed) {
467 base_layer();
468 }
469 return false;
470 case PLOVER:
471 steno(record);
472 return false;
473 case PLOEXIT:
474 steno_exit(record);
475 return false;
476 }
477 return true;
478}
479
480#include "init.h"
diff --git a/keyboards/planck/keymaps/sdothum/qwerty.h b/keyboards/planck/keymaps/sdothum/qwerty.h
new file mode 100644
index 000000000..d11d0478b
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/qwerty.h
@@ -0,0 +1,64 @@
1
2// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3
4// ...................................................................... Qwerty
5#ifdef QWERTY
6 // ,-----------------------------------------------------------------------------------.
7 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
8 // |------+------+------+------+------+-------------+------+------+------+------+------|
9 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | ; |
10 // |------+------+------+------+------+------|------+------+------+------+------+------|
11 // | Z | X | C | V | B | Caps |^Shift| N | M | , | . | " |
12 // |------+------+------+------+------+------+------+------+------+------+------+------|
13 // | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
14 // `-----------------------------------------------------------------------------------'
15
16 [_BASE] = {
17 {KC_Q, KC_W, KC_E, KC_R, KC_T, CNTR_TL, CNTR_TR, KC_Y, KC_U, KC_I, KC_O, KC_P },
18 {KC_A, KC_S, KC_D, KC_F, KC_G, CNTR_HL, CNTR_HR, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
19 {KC_Z, KC_X, KC_C, KC_V, KC_B, CNTR_BL, CNTR_BR, KC_N, KC_M, KC_COMM, KC_DOT, TD_QUOT},
20 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
21 },
22
23 [_SHIFT] = {
24 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
25 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), KC_SCLN},
26 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_COMM, KC_DOT, TD_QUOT},
27 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
28 },
29
30 // ,-----------------------------------------------------------------------------------.
31 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
32 // |------+------+------+------+------+-------------+------+------+------+------+------|
33 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
34 // |------+------+------+------+------+------|------+------+------+------+------+------|
35 // | Z | X | C | V | B | Caps |^Shift| N | M | / | ? | " |
36 // |------+------+------+------+------+------+------+------+------+------+------+------|
37 // | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
38 // `-----------------------------------------------------------------------------------'
39
40 [_LSHIFT] = {
41 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
42 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
43 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_SLSH, KC_QUES, TD_DQOT},
44 {OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
45 },
46
47 // ,-----------------------------------------------------------------------------------.
48 // | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
49 // |------+------+------+------+------+-------------+------+------+------+------+------|
50 // | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
51 // |------+------+------+------+------+------|------+------+------+------+------+------|
52 // | Z | X | C | V | B | Caps |^Shift| N | M | ~ | ` | " |
53 // |------+------+------+------+------+------+------+------+------+------+------+------|
54 // | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
55 // `-----------------------------------------------------------------------------------'
56
57 [_RSHIFT] = {
58 {S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
59 {S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
60 {S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), TD_TILD, TD_GRV, TD_DQOT},
61 {OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
62 },
63#endif
64
diff --git a/keyboards/planck/keymaps/sdothum/readme.md b/keyboards/planck/keymaps/sdothum/readme.md
new file mode 100644
index 000000000..58f73e3b4
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/readme.md
@@ -0,0 +1,10 @@
1# The sdothum extended Default Planck Layout
2
3- Colemak-DH layout layer with shift/tab key overlays
4- Number and symbol/function key layer
5- Hexadecimal keypad layer
6- Navigation keypad layer
7- Dynamic macro layer
8- Autocompletion tap key pairs (),[],{}
9- Normalized enter and esc key position across keyboard layers
10- Extensive use of tap keys
diff --git a/keyboards/planck/keymaps/sdothum/rules.mk b/keyboards/planck/keymaps/sdothum/rules.mk
new file mode 100644
index 000000000..40f153844
--- /dev/null
+++ b/keyboards/planck/keymaps/sdothum/rules.mk
@@ -0,0 +1,26 @@
1# Build Options:
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4
5BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # mouse keys(+4700)
7EXTRAKEY_ENABLE = no # audio control and System control(+450)
8CONSOLE_ENABLE = no # console for debug(+400)
9COMMAND_ENABLE = no # commands for debug and configuration
10NKRO_ENABLE = yes # nkey rollover
11BACKLIGHT_ENABLE = no # enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # audio output on port C6
14UNICODE_ENABLE = no # unicode
15BLUETOOTH_ENABLE = no # enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # enable WS2812 RGB underlight, do not enable this with audio at the same time.
17STENO_ENABLE = yes # enable TX Bolt protocol, requires VIRTSER and may not work with mouse keys
18
19# do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
20SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
21
22TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
23
24ifndef QUANTUM_DIR
25include ../../../../Makefile
26endif