aboutsummaryrefslogtreecommitdiff
path: root/keyboards/splitography/keymaps/multi/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/splitography/keymaps/multi/keymap.c')
-rw-r--r--keyboards/splitography/keymaps/multi/keymap.c411
1 files changed, 411 insertions, 0 deletions
diff --git a/keyboards/splitography/keymaps/multi/keymap.c b/keyboards/splitography/keymaps/multi/keymap.c
new file mode 100644
index 000000000..af1cc1a80
--- /dev/null
+++ b/keyboards/splitography/keymaps/multi/keymap.c
@@ -0,0 +1,411 @@
1/* Copyright 2021 Alexis Jeandeau
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18#include "keymap_steno.h"
19
20enum keyboard_layers {
21 _QWERTY = 0,
22 _DVORAK,
23 _COLEMAK,
24 _WORKMAN,
25 _TXBOLT,
26 _PLOVER,
27 _BLUE,
28 _ORANGE,
29 _GREEN,
30 _NUM,
31 _END_LAYERS,
32};
33
34enum keyboard_keycodes {
35 QWERTY = SAFE_RANGE,
36 DVORAK,
37 COLEMAK,
38 WORKMAN,
39 BASE,
40 BASE1,
41 BASE2,
42 TXBOLT,
43 PLOVER,
44 BLUE,
45 ORANGE,
46};
47
48#define COPY LCTL(KC_C)
49#define CUT LCTL(KC_X)
50#define PASTE LCTL(KC_V)
51#define UNDO LCTL(KC_Z)
52#define TG_NUM TG(_NUM)
53
54// clang-format off
55const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
56 // ...................................................................... Qwerty
57 //
58 // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09
59
60 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
61 // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │
62 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
63 // │ Alt │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│
64 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
65 // │ Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │
66 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
67 // │Orange│ Blue │ Space│ Ctrl │
68 // └──────┴──────┴──────┴──────┘
69
70 [_QWERTY] = LAYOUT(
71 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
72 KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT ,
73 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
74 ORANGE, BLUE, KC_SPC, KC_LCTL
75 ),
76
77 // ...................................................................... Dvorak
78 //
79 // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09
80
81 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
82 // │ Esc │ " │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ Bksp │
83 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
84 // │ Alt │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ Enter│
85 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
86 // │ Shift│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ GUI │
87 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
88 // │Orange│ Blue │ Space│ Ctrl │
89 // └──────┴──────┴──────┴──────┘
90
91 [_DVORAK] = LAYOUT(
92 KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
93 KC_LALT, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT ,
94 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI,
95 ORANGE, BLUE, KC_SPC, KC_LCTL
96 ),
97
98 // ..................................................................... Colemak
99
100 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
101 // │ Esc │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ Bksp │
102 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
103 // │ Alt │ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ Enter│
104 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
105 // │ Shift│ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │ GUI │
106 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
107 // │Orange│ Blue │ Space│ Ctrl │
108 // └──────┴──────┴──────┴──────┘
109
110 [_COLEMAK] = LAYOUT(
111 KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
112 KC_LALT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT ,
113 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
114 ORANGE, BLUE, KC_SPC, KC_LCTL
115 ),
116
117 // ..................................................................... Workman
118
119 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
120 // │ Esc │ Q │ D │ R │ W │ B │ J │ F │ U │ P │ ; │ Bksp │
121 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
122 // │ Alt │ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ Enter│
123 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
124 // │ Shift│ Z │ X │ M │ C │ V │ K │ L │ , │ . │ / │ GUI │
125 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
126 // │Orange│ Blue │ Space│ Ctrl │
127 // └──────┴──────┴──────┴──────┘
128
129 [_WORKMAN] = LAYOUT(
130 KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC,
131 KC_LALT, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT ,
132 KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
133 ORANGE, BLUE, KC_SPC, KC_LCTL
134 ),
135
136 // .................................................................. Blue Layer
137 //
138 // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b
139
140 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
141 // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │
142 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
143 // │ Alt │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │
144 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
145 // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │
146 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
147 // │Orange│ f() │ Del │ Ctrl │
148 // └──────┴──────┴──────┴──────┘
149
150 [_BLUE] = LAYOUT(
151 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
152 KC_LALT, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT,
153 KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI,
154 ORANGE, _______, KC_DEL, KC_LCTL
155 ),
156
157 // ................................................................ Orange Layer
158 //
159 // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248
160
161 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
162 // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │
163 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
164 // │ Alt │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │
165 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
166 // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │
167 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
168 // │ f() │ Blue │ Tab │ Ctrl │
169 // └──────┴──────┴──────┴──────┘
170
171 [_ORANGE] = LAYOUT(
172 PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX,
173 KC_LALT, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX,
174 KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI,
175 _______, BLUE, KC_TAB, KC_LCTL
176 ),
177
178 // ................................................................. Green Layer
179 //
180 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
181
182 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
183 // │TxBolt│QWERTY│Dvorak│Colemk│Workmn│Scroll│ / │ 7 │ 8 │ 9 │ - │ │
184 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
185 // │ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│
186 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
187 // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │
188 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
189 // │ f() │ f() │ -- │ Ctrl │
190 // └──────┴──────┴──────┴──────┘
191
192 [_GREEN] = LAYOUT(
193 TXBOLT, QWERTY, DVORAK, COLEMAK, WORKMAN, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX,
194 KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
195 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
196 _______, _______, XXXXXXX, KC_LCTL
197 ),
198
199 // ................................................................... Num Layer
200 //
201 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
202
203 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
204 // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │
205 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
206 // │ Alt │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│
207 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
208 // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │
209 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
210 // │ -- │ -- │ -- │ Ctrl │
211 // └──────┴──────┴──────┴──────┘
212
213 [_NUM] = LAYOUT(
214 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX,
215 KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
216 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, BASE, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
217 XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL
218 ),
219
220 // ...................................................................... Plover
221 //
222 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
223
224 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
225 // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │
226 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
227 // │ Base │ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
228 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
229 // │ Base │ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
230 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
231 // │ A │ O │ E │ U │
232 // └──────┴──────┴──────┴──────┘
233
234 [_PLOVER] = LAYOUT(
235 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
236 BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
237 BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
238 KC_C, KC_V, KC_N, KC_M
239 ),
240
241 // ...................................................................... TxBolt
242 //
243 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
244
245 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
246 // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │
247 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
248 // │ Base │ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
249 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
250 // │ Base │ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
251 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
252 // │ A │ O │ E │ U │
253 // └──────┴──────┴──────┴──────┘
254
255 [_TXBOLT] = LAYOUT(
256 STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC ,
257 BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
258 BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
259 STN_A, STN_O, STN_E, STN_U
260 ),
261};
262// clang-format on
263
264// ..................................................................... Keymaps
265
266#define BASE_1 1
267#define BASE_2 2
268#define BASE_12 3
269static uint8_t base_n = 0;
270
271void (*base_layer)(void) = NULL;
272
273void qwerty(void) {
274 base_layer = qwerty;
275 base_n = 0;
276 layer_move(0);
277 set_single_persistent_default_layer(_QWERTY);
278}
279
280void dvorak(void) {
281 base_layer = dvorak;
282 base_n = 0;
283 layer_move(0);
284 set_single_persistent_default_layer(_DVORAK);
285}
286
287void colemak(void) {
288 base_layer = colemak;
289 base_n = 0;
290 layer_move(0);
291 set_single_persistent_default_layer(_COLEMAK);
292}
293
294void workman(void) {
295 base_layer = workman;
296 base_n = 0;
297 layer_move(0);
298 set_single_persistent_default_layer(_WORKMAN);
299}
300
301void plover(keyrecord_t *record) {
302 if (record->event.pressed) {
303 layer_move(0);
304 layer_on(_PLOVER);
305 if (!eeconfig_is_enabled()) {
306 eeconfig_init();
307 }
308 keymap_config.raw = eeconfig_read_keymap();
309 keymap_config.nkro = 1;
310 eeconfig_update_keymap(keymap_config.raw);
311 }
312}
313
314void txbolt(void) {
315 layer_move(0);
316 layer_on(_TXBOLT);
317}
318
319// ........................................................... User Keycode Trap
320
321bool process_record_user(uint16_t keycode, keyrecord_t *record) {
322 switch (keycode) {
323 case QWERTY:
324 if (record->event.pressed) {
325 qwerty();
326 }
327 return false;
328 case DVORAK:
329 if (record->event.pressed) {
330 dvorak();
331 }
332 return false;
333 case KC_QUOT:
334 if ((base_layer != dvorak) || (biton32(layer_state) != _BLUE)) {
335 break;
336 }
337 if (record->event.pressed) {
338 register_code(KC_SLSH);
339 } else {
340 unregister_code(KC_SLSH);
341 }
342 return false;
343 case COLEMAK:
344 if (record->event.pressed) {
345 colemak();
346 }
347 return false;
348 case WORKMAN:
349 if (record->event.pressed) {
350 workman();
351 }
352 return false;
353 case BASE:
354 if (record->event.pressed) {
355 base_layer();
356 }
357 return false;
358 case BASE1:
359 if (record->event.pressed) {
360 base_n = base_n | BASE_1;
361 if (base_n == BASE_12) {
362 base_layer();
363 }
364 } else {
365 base_n = base_n & ~BASE_1;
366 }
367 return false;
368 case BASE2:
369 if (record->event.pressed) {
370 base_n = base_n | BASE_2;
371 if (base_n == BASE_12) {
372 base_layer();
373 }
374 } else {
375 base_n = base_n & ~BASE_2;
376 }
377 return false;
378 case BLUE:
379 if (record->event.pressed) {
380 layer_on(_BLUE);
381 update_tri_layer(_BLUE, _ORANGE, _GREEN);
382 } else {
383 layer_off(_BLUE);
384 update_tri_layer(_BLUE, _ORANGE, _GREEN);
385 }
386 return false;
387 case ORANGE:
388 if (record->event.pressed) {
389 layer_on(_ORANGE);
390 update_tri_layer(_BLUE, _ORANGE, _GREEN);
391 } else {
392 layer_off(_ORANGE);
393 update_tri_layer(_BLUE, _ORANGE, _GREEN);
394 }
395 return false;
396 case PLOVER:
397 plover(record);
398 return false;
399 case TXBOLT:
400 if (record->event.pressed) {
401 txbolt();
402 }
403 return false;
404 }
405 return true;
406}
407
408// Initialize the steno protocol
409void eeconfig_init_user(void) {
410 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_BOLT
411}