aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Jeandeau <alexis.jeandeau@gmail.com>2021-11-17 11:59:03 +0900
committerGitHub <noreply@github.com>2021-11-16 18:59:03 -0800
commit3d49069a46b42d2a0e4d8b7537ac4ccf41e6402d (patch)
treea49bd00ad8c8055732b1a656f953d0d7e10d572f
parent596511a959269097d640cf59fa0ad6ddb376b674 (diff)
downloadqmk_firmware-3d49069a46b42d2a0e4d8b7537ac4ccf41e6402d.tar.gz
qmk_firmware-3d49069a46b42d2a0e4d8b7537ac4ccf41e6402d.zip
[Keyboard] Add SOFT/HRUF Splitography keyboard (#15133)
-rw-r--r--keyboards/splitography/config.h55
-rw-r--r--keyboards/splitography/info.json302
-rw-r--r--keyboards/splitography/keymaps/default/keymap.c291
-rw-r--r--keyboards/splitography/keymaps/default/readme.md14
-rw-r--r--keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c291
-rw-r--r--keyboards/splitography/keymaps/dvorak/keymap.c291
-rw-r--r--keyboards/splitography/keymaps/jeandeaual/keymap.c293
-rw-r--r--keyboards/splitography/keymaps/jeandeaual/readme.md7
-rw-r--r--keyboards/splitography/keymaps/multi/keymap.c411
-rw-r--r--keyboards/splitography/keymaps/multi/readme.md15
-rw-r--r--keyboards/splitography/readme.md42
-rw-r--r--keyboards/splitography/rules.mk5
-rw-r--r--keyboards/splitography/splitography.c17
-rw-r--r--keyboards/splitography/splitography.h33
14 files changed, 2067 insertions, 0 deletions
diff --git a/keyboards/splitography/config.h b/keyboards/splitography/config.h
new file mode 100644
index 000000000..19afdec86
--- /dev/null
+++ b/keyboards/splitography/config.h
@@ -0,0 +1,55 @@
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#pragma once
18
19#include "config_common.h"
20
21/* USB Device descriptor parameter */
22#define PRODUCT Splitography
23
24/* Key matrix size */
25#define MATRIX_ROWS 4
26#define MATRIX_COLS 12
27
28/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
29#define DEBOUNCE 5
30
31/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
32#define LOCKING_SUPPORT_ENABLE
33/* Locking resynchronize hack */
34#define LOCKING_RESYNC_ENABLE
35
36/*
37 * Force NKRO
38 *
39 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
40 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
41 * makefile for this to work.)
42 *
43 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
44 * until the next keyboard reset.
45 *
46 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
47 * fully operational during normal computer usage.
48 *
49 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
50 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
51 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
52 * power-up.
53 *
54 */
55//#define FORCE_NKRO
diff --git a/keyboards/splitography/info.json b/keyboards/splitography/info.json
new file mode 100644
index 000000000..2d07607c2
--- /dev/null
+++ b/keyboards/splitography/info.json
@@ -0,0 +1,302 @@
1{
2 "manufacturer": "SOFT/HRUF",
3 "keyboard_name": "Splitography",
4 "url": "https://softhruf.love/collections/writers",
5 "maintainer": "qmk",
6 "processor": "atmega32u4",
7 "diode_direction": "COL2ROW",
8 "features": {
9 "steno": true,
10 "nkro": true,
11 "bootmagic": true,
12 "mousekey": false,
13 "extrakey": true,
14 "console": false,
15 "audio": false,
16 "command": false,
17 "backlight": false
18 },
19 "matrix_pins": {
20 "rows": ["D0", "D1", "D2", "D3"],
21 "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7"]
22 },
23 "usb": {
24 "vid": "0xFEED",
25 "pid": "0x6060",
26 "device_ver": "0x0001"
27 },
28 "layouts": {
29 "LAYOUT": {
30 "layout": [
31 {
32 "x": 0,
33 "y": 0,
34 "h": 0.6,
35 "matrix": [0, 0],
36 "label": "Esc"
37 },
38 {
39 "x": 1,
40 "y": 0,
41 "h": 0.6,
42 "matrix": [0, 1],
43 "label": "Q"
44 },
45 {
46 "x": 2,
47 "y": 0,
48 "h": 0.6,
49 "matrix": [0, 2],
50 "label": "W"
51 },
52 {
53 "x": 3,
54 "y": 0,
55 "h": 0.6,
56 "matrix": [0, 3],
57 "label": "E"
58 },
59 {
60 "x": 4,
61 "y": 0,
62 "h": 0.6,
63 "matrix": [0, 4],
64 "label": "R"
65 },
66 {
67 "x": 5,
68 "y": 0,
69 "h": 0.6,
70 "matrix": [0, 5],
71 "label": "T"
72 },
73 {
74 "x": 8,
75 "y": 0,
76 "h": 0.6,
77 "matrix": [0, 6],
78 "label": "Y"
79 },
80 {
81 "x": 9,
82 "y": 0,
83 "h": 0.6,
84 "matrix": [0, 7],
85 "label": "U"
86 },
87 {
88 "x": 10,
89 "y": 0,
90 "h": 0.6,
91 "matrix": [0, 8],
92 "label": "I"
93 },
94 {
95 "x": 11,
96 "y": 0,
97 "h": 0.6,
98 "matrix": [0, 9],
99 "label": "O"
100 },
101 {
102 "x": 12,
103 "y": 0,
104 "h": 0.6,
105 "matrix": [0, 10],
106 "label": "P"
107 },
108 {
109 "x": 13,
110 "y": 0,
111 "h": 0.6,
112 "matrix": [0, 11],
113 "label": "Backspace"
114 },
115 {
116 "x": 0,
117 "y": 0.6,
118 "matrix": [1, 0],
119 "label": "Alt"
120 },
121 {
122 "x": 1,
123 "y": 0.6,
124 "matrix": [1, 1],
125 "label": "A"
126 },
127 {
128 "x": 2,
129 "y": 0.6,
130 "matrix": [1, 2],
131 "label": "S"
132 },
133 {
134 "x": 3,
135 "y": 0.6,
136 "matrix": [1, 3],
137 "label": "D"
138 },
139 {
140 "x": 4,
141 "y": 0.6,
142 "matrix": [1, 4],
143 "label": "F"
144 },
145 {
146 "x": 5,
147 "y": 0.6,
148 "matrix": [1, 5],
149 "label": "G"
150 },
151 {
152 "x": 8,
153 "y": 0.6,
154 "matrix": [1, 6],
155 "label": "H"
156 },
157 {
158 "x": 9,
159 "y": 0.6,
160 "matrix": [1, 7],
161 "label": "J"
162 },
163 {
164 "x": 10,
165 "y": 0.6,
166 "matrix": [1, 8],
167 "label": "K"
168 },
169 {
170 "x": 11,
171 "y": 0.6,
172 "matrix": [1, 9],
173 "label": "L"
174 },
175 {
176 "x": 12,
177 "y": 0.6,
178 "matrix": [1, 10],
179 "label": ";"
180 },
181 {
182 "x": 13,
183 "y": 0.6,
184 "matrix": [1, 11],
185 "label": "Enter"
186 },
187 {
188 "x": 0,
189 "y": 1.6,
190 "h": 1.2,
191 "matrix": [2, 0],
192 "label": "Shift"
193 },
194 {
195 "x": 1,
196 "y": 1.6,
197 "h": 1.2,
198 "matrix": [2, 1],
199 "label": "Z"
200 },
201 {
202 "x": 2,
203 "y": 1.6,
204 "h": 1.2,
205 "matrix": [2, 2],
206 "label": "X"
207 },
208 {
209 "x": 3,
210 "y": 1.6,
211 "h": 1.2,
212 "matrix": [2, 3],
213 "label": "C"
214 },
215 {
216 "x": 4,
217 "y": 1.6,
218 "h": 1.2,
219 "matrix": [2, 4],
220 "label": "V"
221 },
222 {
223 "x": 5,
224 "y": 1.6,
225 "h": 1.2,
226 "matrix": [2, 5],
227 "label": "B"
228 },
229 {
230 "x": 8,
231 "y": 1.6,
232 "h": 1.2,
233 "matrix": [2, 6],
234 "label": "N"
235 },
236 {
237 "x": 9,
238 "y": 1.6,
239 "h": 1.2,
240 "matrix": [2, 7],
241 "label": "M"
242 },
243 {
244 "x": 10,
245 "y": 1.6,
246 "h": 1.2,
247 "matrix": [2, 8],
248 "label": ","
249 },
250 {
251 "x": 11,
252 "y": 1.6,
253 "h": 1.2,
254 "matrix": [2, 9],
255 "label": "c"
256 },
257 {
258 "x": 12,
259 "y": 1.6,
260 "h": 1.2,
261 "matrix": [2, 10],
262 "label": "/"
263 },
264 {
265 "x": 13,
266 "y": 1.6,
267 "h": 1.2,
268 "matrix": [2, 11],
269 "label": "Super"
270 },
271 {
272 "x": 3.5,
273 "y": 3,
274 "h": 1.2,
275 "matrix": [3, 4],
276 "label": "Orange"
277 },
278 {
279 "x": 4.5,
280 "y": 3,
281 "h": 1.2,
282 "matrix": [3, 5],
283 "label": "Blue"
284 },
285 {
286 "x": 8.5,
287 "y": 3,
288 "h": 1.2,
289 "matrix": [3, 6],
290 "label": "Space"
291 },
292 {
293 "x": 9.5,
294 "y": 3,
295 "h": 1.2,
296 "matrix": [3, 7],
297 "label": "Ctrl"
298 }
299 ]
300 }
301 }
302}
diff --git a/keyboards/splitography/keymaps/default/keymap.c b/keyboards/splitography/keymaps/default/keymap.c
new file mode 100644
index 000000000..91304c550
--- /dev/null
+++ b/keyboards/splitography/keymaps/default/keymap.c
@@ -0,0 +1,291 @@
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 _GEMINI,
23 _PLOVER,
24 _BLUE,
25 _ORANGE,
26 _GREEN,
27 _NUM,
28 _END_LAYERS,
29};
30
31enum keyboard_keycodes {
32 QWERTY = SAFE_RANGE,
33 QWERTY1,
34 QWERTY2,
35 GEMINI,
36 PLOVER,
37 BLUE,
38 ORANGE,
39};
40
41#define COPY LCTL(KC_C)
42#define CUT LCTL(KC_X)
43#define PASTE LCTL(KC_V)
44#define UNDO LCTL(KC_Z)
45#define TG_NUM TG(_NUM)
46
47// clang-format off
48const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
49 // ...................................................................... Qwerty
50 //
51 // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09
52
53 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
54 // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │
55 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
56 // │ Alt │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│
57 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
58 // │ Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │
59 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
60 // │Orange│ Blue │ Space│ Ctrl │
61 // └──────┴──────┴──────┴──────┘
62
63 [_QWERTY] = LAYOUT(
64 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
65 KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT ,
66 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
67 ORANGE, BLUE, KC_SPC, KC_LCTL
68 ),
69
70 // .................................................................. Blue Layer
71 //
72 // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b
73
74 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
75 // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │
76 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
77 // │ Alt │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │
78 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
79 // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │
80 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
81 // │Orange│ f() │ Del │ Ctrl │
82 // └──────┴──────┴──────┴──────┘
83
84 [_BLUE] = LAYOUT(
85 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
86 KC_LALT, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT,
87 KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI,
88 ORANGE, _______, KC_DEL, KC_LCTL
89 ),
90
91 // ................................................................ Orange Layer
92 //
93 // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248
94
95 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
96 // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │
97 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
98 // │ Alt │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │
99 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
100 // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │
101 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
102 // │ f() │ Blue │ Tab │ Ctrl │
103 // └──────┴──────┴──────┴──────┘
104
105 [_ORANGE] = LAYOUT(
106 PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX,
107 KC_LALT, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX,
108 KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI,
109 _______, BLUE, KC_TAB, KC_LCTL
110 ),
111
112 // ................................................................. Green Layer
113 //
114 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
115
116 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
117 // │Gemini│ │ │ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │
118 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
119 // │ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│
120 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
121 // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │
122 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
123 // │ f() │ f() │ -- │ Ctrl │
124 // └──────┴──────┴──────┴──────┘
125
126 [_GREEN] = LAYOUT(
127 GEMINI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX,
128 KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
129 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
130 _______, _______, XXXXXXX, KC_LCTL
131 ),
132
133 // ................................................................... Num Layer
134 //
135 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
136
137 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
138 // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │
139 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
140 // │ Alt │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│
141 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
142 // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │
143 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
144 // │ -- │ -- │ -- │ Ctrl │
145 // └──────┴──────┴──────┴──────┘
146
147 [_NUM] = LAYOUT(
148 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX,
149 KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
150 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, QWERTY, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
151 XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL
152 ),
153
154 // ...................................................................... Plover
155 //
156 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
157
158 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
159 // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │
160 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
161 // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
162 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
163 // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
164 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
165 // │ A │ O │ E │ U │
166 // └──────┴──────┴──────┴──────┘
167
168 [_PLOVER] = LAYOUT(
169 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
170 QWERTY1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
171 QWERTY2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
172 KC_C, KC_V, KC_N, KC_M
173 ),
174
175 // ...................................................................... Gemini
176 //
177 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
178
179 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
180 // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │
181 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
182 // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
183 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
184 // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
185 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
186 // │ A │ O │ E │ U │
187 // └──────┴──────┴──────┴──────┘
188
189 [_GEMINI] = LAYOUT(
190 STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC ,
191 QWERTY1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
192 QWERTY2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
193 STN_A, STN_O, STN_E, STN_U
194 ),
195};
196// clang-format on
197
198// ..................................................................... Keymaps
199
200#define QWERTY_1 1
201#define QWERTY_2 2
202#define QWERTY_12 3
203static uint8_t qwerty_n = 0;
204
205void qwerty(void) {
206 qwerty_n = 0;
207 layer_move(0);
208 set_single_persistent_default_layer(_QWERTY);
209}
210
211void plover(keyrecord_t *record) {
212 if (record->event.pressed) {
213 layer_move(0);
214 layer_on(_PLOVER);
215 if (!eeconfig_is_enabled()) {
216 eeconfig_init();
217 }
218 keymap_config.raw = eeconfig_read_keymap();
219 keymap_config.nkro = 1;
220 eeconfig_update_keymap(keymap_config.raw);
221 }
222}
223
224void gemini(void) {
225 layer_move(0);
226 layer_on(_GEMINI);
227}
228
229// ........................................................... User Keycode Trap
230
231bool process_record_user(uint16_t keycode, keyrecord_t *record) {
232 switch (keycode) {
233 case QWERTY:
234 if (record->event.pressed) {
235 qwerty();
236 }
237 return false;
238 case QWERTY1:
239 if (record->event.pressed) {
240 qwerty_n = qwerty_n | QWERTY_1;
241 if (qwerty_n == QWERTY_12) {
242 qwerty();
243 }
244 } else {
245 qwerty_n = qwerty_n & ~QWERTY_1;
246 }
247 return false;
248 case QWERTY2:
249 if (record->event.pressed) {
250 qwerty_n = qwerty_n | QWERTY_2;
251 if (qwerty_n == QWERTY_12) {
252 qwerty();
253 }
254 } else {
255 qwerty_n = qwerty_n & ~QWERTY_2;
256 }
257 return false;
258 case BLUE:
259 if (record->event.pressed) {
260 layer_on(_BLUE);
261 update_tri_layer(_BLUE, _ORANGE, _GREEN);
262 } else {
263 layer_off(_BLUE);
264 update_tri_layer(_BLUE, _ORANGE, _GREEN);
265 }
266 return false;
267 case ORANGE:
268 if (record->event.pressed) {
269 layer_on(_ORANGE);
270 update_tri_layer(_BLUE, _ORANGE, _GREEN);
271 } else {
272 layer_off(_ORANGE);
273 update_tri_layer(_BLUE, _ORANGE, _GREEN);
274 }
275 return false;
276 case PLOVER:
277 plover(record);
278 return false;
279 case GEMINI:
280 if (record->event.pressed) {
281 gemini();
282 }
283 return false;
284 }
285 return true;
286}
287
288// Initialize the steno protocol
289void eeconfig_init_user(void) {
290 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
291}
diff --git a/keyboards/splitography/keymaps/default/readme.md b/keyboards/splitography/keymaps/default/readme.md
new file mode 100644
index 000000000..b136d85ef
--- /dev/null
+++ b/keyboards/splitography/keymaps/default/readme.md
@@ -0,0 +1,14 @@
1# [Guide](https://softhruf.love/pages/guides)
2
3[Splitography quick start video](https://www.youtube.com/watch?v=ru4cRQ2s_v0)
4
5A short video guide on how to set up the SOFT/HRUF Splitography, a mechanical keyboard intended for use with [Plover](https://www.openstenoproject.org/plover/).
6
7Here is a reference card for the standard keyboard layout:
8
9![Reference card](https://i.imgur.com/ywe8jXR.png)
10
11* While holding down a colored thumb key, the matching colored functions/characters on the remaining keys can be pressed.
12* Bottom edge keys are accessed by holding down both keys.
13* Numlock locks in the Numpad layer.
14* Alt and Shift pressed simultaneously to return to the standard layout.
diff --git a/keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c b/keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c
new file mode 100644
index 000000000..5297af4c7
--- /dev/null
+++ b/keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c
@@ -0,0 +1,291 @@
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 _TXBOLT,
23 _PLOVER,
24 _BLUE,
25 _ORANGE,
26 _GREEN,
27 _NUM,
28 _END_LAYERS,
29};
30
31enum keyboard_keycodes {
32 QWERTY = SAFE_RANGE,
33 QWERTY1,
34 QWERTY2,
35 TXBOLT,
36 PLOVER,
37 BLUE,
38 ORANGE,
39};
40
41#define COPY LCTL(KC_C)
42#define CUT LCTL(KC_X)
43#define PASTE LCTL(KC_V)
44#define UNDO LCTL(KC_Z)
45#define TG_NUM TG(_NUM)
46
47// clang-format off
48const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
49 // ...................................................................... Qwerty
50 //
51 // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09
52
53 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
54 // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │
55 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
56 // │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│
57 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
58 // │ Alt │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │
59 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
60 // │Orange│ Blue │ Space│ Shift│
61 // └──────┴──────┴──────┴──────┘
62
63 [_QWERTY] = LAYOUT(
64 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
65 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT ,
66 KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
67 ORANGE, BLUE, KC_SPC, KC_LSFT
68 ),
69
70 // .................................................................. Blue Layer
71 //
72 // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b
73
74 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
75 // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │
76 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
77 // │ Ctrl │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │
78 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
79 // │ Alt │ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │
80 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
81 // │Orange│ f() │ Del │ Shift│
82 // └──────┴──────┴──────┴──────┘
83
84 [_BLUE] = LAYOUT(
85 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
86 KC_LCTL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT,
87 KC_LALT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI,
88 ORANGE, _______, KC_DEL, KC_LSFT
89 ),
90
91 // ................................................................ Orange Layer
92 //
93 // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248
94
95 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
96 // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │
97 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
98 // │ Ctrl │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │
99 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
100 // │ Alt │ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │
101 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
102 // │ f() │ Blue │ Tab │ Shift│
103 // └──────┴──────┴──────┴──────┘
104
105 [_ORANGE] = LAYOUT(
106 PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX,
107 KC_LCTL, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX,
108 KC_LALT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI,
109 _______, BLUE, KC_TAB, KC_LSFT
110 ),
111
112 // ................................................................. Green Layer
113 //
114 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
115
116 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
117 // │TxBolt│ │ │ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │
118 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
119 // │ Ctrl │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│
120 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
121 // │ Alt │ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │
122 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
123 // │ f() │ f() │ -- │ Shift│
124 // └──────┴──────┴──────┴──────┘
125
126 [_GREEN] = LAYOUT(
127 TXBOLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX,
128 KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
129 KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
130 _______, _______, XXXXXXX, KC_LSFT
131 ),
132
133 // ................................................................... Num Layer
134 //
135 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
136
137 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
138 // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │
139 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
140 // │ Ctrl │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│
141 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
142 // │ Alt │ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │
143 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
144 // │ -- │ -- │ -- │ Shift│
145 // └──────┴──────┴──────┴──────┘
146
147 [_NUM] = LAYOUT(
148 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX,
149 KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
150 KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, QWERTY, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
151 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT
152 ),
153
154 // ...................................................................... Plover
155 //
156 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
157
158 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
159 // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │
160 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
161 // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
162 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
163 // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
164 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
165 // │ A │ O │ E │ U │
166 // └──────┴──────┴──────┴──────┘
167
168 [_PLOVER] = LAYOUT(
169 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
170 QWERTY1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
171 QWERTY2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
172 KC_C, KC_V, KC_N, KC_M
173 ),
174
175 // ...................................................................... TxBolt
176 //
177 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
178
179 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
180 // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │
181 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
182 // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
183 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
184 // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
185 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
186 // │ A │ O │ E │ U │
187 // └──────┴──────┴──────┴──────┘
188
189 [_TXBOLT] = LAYOUT(
190 STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC ,
191 QWERTY1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
192 QWERTY2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
193 STN_A, STN_O, STN_E, STN_U
194 ),
195};
196// clang-format on
197
198// ..................................................................... Keymaps
199
200#define QWERTY_1 1
201#define QWERTY_2 2
202#define QWERTY_12 3
203static uint8_t qwerty_n = 0;
204
205void qwerty(void) {
206 qwerty_n = 0;
207 layer_move(0);
208 set_single_persistent_default_layer(_QWERTY);
209}
210
211void plover(keyrecord_t *record) {
212 if (record->event.pressed) {
213 layer_move(0);
214 layer_on(_PLOVER);
215 if (!eeconfig_is_enabled()) {
216 eeconfig_init();
217 }
218 keymap_config.raw = eeconfig_read_keymap();
219 keymap_config.nkro = 1;
220 eeconfig_update_keymap(keymap_config.raw);
221 }
222}
223
224void txbolt(void) {
225 layer_move(0);
226 layer_on(_TXBOLT);
227}
228
229// ........................................................... User Keycode Trap
230
231bool process_record_user(uint16_t keycode, keyrecord_t *record) {
232 switch (keycode) {
233 case QWERTY:
234 if (record->event.pressed) {
235 qwerty();
236 }
237 return false;
238 case QWERTY1:
239 if (record->event.pressed) {
240 qwerty_n = qwerty_n | QWERTY_1;
241 if (qwerty_n == QWERTY_12) {
242 qwerty();
243 }
244 } else {
245 qwerty_n = qwerty_n & ~QWERTY_1;
246 }
247 return false;
248 case QWERTY2:
249 if (record->event.pressed) {
250 qwerty_n = qwerty_n | QWERTY_2;
251 if (qwerty_n == QWERTY_12) {
252 qwerty();
253 }
254 } else {
255 qwerty_n = qwerty_n & ~QWERTY_2;
256 }
257 return false;
258 case BLUE:
259 if (record->event.pressed) {
260 layer_on(_BLUE);
261 update_tri_layer(_BLUE, _ORANGE, _GREEN);
262 } else {
263 layer_off(_BLUE);
264 update_tri_layer(_BLUE, _ORANGE, _GREEN);
265 }
266 return false;
267 case ORANGE:
268 if (record->event.pressed) {
269 layer_on(_ORANGE);
270 update_tri_layer(_BLUE, _ORANGE, _GREEN);
271 } else {
272 layer_off(_ORANGE);
273 update_tri_layer(_BLUE, _ORANGE, _GREEN);
274 }
275 return false;
276 case PLOVER:
277 plover(record);
278 return false;
279 case TXBOLT:
280 if (record->event.pressed) {
281 txbolt();
282 }
283 return false;
284 }
285 return true;
286}
287
288// Initialize the steno protocol
289void eeconfig_init_user(void) {
290 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
291}
diff --git a/keyboards/splitography/keymaps/dvorak/keymap.c b/keyboards/splitography/keymaps/dvorak/keymap.c
new file mode 100644
index 000000000..d8cd6ae8f
--- /dev/null
+++ b/keyboards/splitography/keymaps/dvorak/keymap.c
@@ -0,0 +1,291 @@
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 _DVORAK = 0,
22 _TXBOLT,
23 _PLOVER,
24 _BLUE,
25 _ORANGE,
26 _GREEN,
27 _NUM,
28 _END_LAYERS,
29};
30
31enum keyboard_keycodes {
32 DVORAK = SAFE_RANGE,
33 DVORAK1,
34 DVORAK2,
35 TXBOLT,
36 PLOVER,
37 BLUE,
38 ORANGE,
39};
40
41#define COPY LCTL(KC_C)
42#define CUT LCTL(KC_X)
43#define PASTE LCTL(KC_V)
44#define UNDO LCTL(KC_Z)
45#define TG_NUM TG(_NUM)
46
47// clang-format off
48const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
49 // ...................................................................... Dvorak
50 //
51 // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09
52
53 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
54 // │ Esc │ " │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ Bksp │
55 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
56 // │ Alt │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ Enter│
57 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
58 // │ Shift│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ GUI │
59 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
60 // │Orange│ Blue │ Space│ Ctrl │
61 // └──────┴──────┴──────┴──────┘
62
63 [_DVORAK] = LAYOUT(
64 KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
65 KC_LALT, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT ,
66 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI,
67 ORANGE, BLUE, KC_SPC, KC_LCTL
68 ),
69
70 // .................................................................. Blue Layer
71 //XXXXXXX,
72 // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b
73
74 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
75 // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │
76 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
77 // │ Alt │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ / │
78 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
79 // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │
80 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
81 // │Orange│ f() │ Del │ Ctrl │
82 // └──────┴──────┴──────┴──────┘
83
84 [_BLUE] = LAYOUT(
85 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
86 KC_LALT, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_SLSH,
87 KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI,
88 ORANGE, _______, KC_DEL, KC_LCTL
89 ),
90
91 // ................................................................ Orange Layer
92 //
93 // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248
94
95 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
96 // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │
97 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
98 // │ Alt │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │
99 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
100 // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │
101 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
102 // │ f() │ Blue │ Tab │ Ctrl │
103 // └──────┴──────┴──────┴──────┘
104
105 [_ORANGE] = LAYOUT(
106 PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX,
107 KC_LALT, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX,
108 KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI,
109 _______, BLUE, KC_TAB, KC_LCTL
110 ),
111
112 // ................................................................. Green Layer
113 //
114 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
115
116 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
117 // │TxBolt│ │ │ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │
118 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
119 // │ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│
120 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
121 // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │
122 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
123 // │ f() │ f() │ -- │ Ctrl │
124 // └──────┴──────┴──────┴──────┘
125
126 [_GREEN] = LAYOUT(
127 TXBOLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX,
128 KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
129 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
130 _______, _______, XXXXXXX, KC_LCTL
131 ),
132
133 // ................................................................... Num Layer
134 //
135 // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab
136
137 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
138 // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │
139 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
140 // │ Alt │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│
141 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
142 // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │
143 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
144 // │ -- │ -- │ -- │ Ctrl │
145 // └──────┴──────┴──────┴──────┘
146
147 [_NUM] = LAYOUT(
148 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX,
149 KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
150 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, DVORAK, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
151 XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL
152 ),
153
154 // ...................................................................... Plover
155 //
156 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
157
158 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
159 // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │
160 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
161 // │Dvorak│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
162 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
163 // │Dvorak│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
164 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
165 // │ A │ O │ E │ U │
166 // └──────┴──────┴──────┴──────┘
167
168 [_PLOVER] = LAYOUT(
169 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
170 DVORAK1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
171 DVORAK2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
172 KC_C, KC_V, KC_N, KC_M
173 ),
174
175 // ...................................................................... TxBolt
176 //
177 // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4
178
179 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
180 // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │
181 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
182 // │Dvorak│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
183 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
184 // │Dvorak│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
185 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
186 // │ A │ O │ E │ U │
187 // └──────┴──────┴──────┴──────┘
188
189 [_TXBOLT] = LAYOUT(
190 STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC ,
191 DVORAK1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
192 DVORAK2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
193 STN_A, STN_O, STN_E, STN_U
194 ),
195};
196// clang-format on
197
198// ..................................................................... Keymaps
199
200#define DVORAK_1 1
201#define DVORAK_2 2
202#define DVORAK_12 3
203static uint8_t dvorak_n = 0;
204
205void dvorak(void) {
206 dvorak_n = 0;
207 layer_move(0);
208 set_single_persistent_default_layer(_DVORAK);
209}
210
211void plover(keyrecord_t *record) {
212 if (record->event.pressed) {
213 layer_move(0);
214 layer_on(_PLOVER);
215 if (!eeconfig_is_enabled()) {
216 eeconfig_init();
217 }
218 keymap_config.raw = eeconfig_read_keymap();
219 keymap_config.nkro = 1;
220 eeconfig_update_keymap(keymap_config.raw);
221 }
222}
223
224void txbolt(void) {
225 layer_move(0);
226 layer_on(_TXBOLT);
227}
228
229// ........................................................... User Keycode Trap
230
231bool process_record_user(uint16_t keycode, keyrecord_t *record) {
232 switch (keycode) {
233 case DVORAK:
234 if (record->event.pressed) {
235 dvorak();
236 }
237 return false;
238 case DVORAK1:
239 if (record->event.pressed) {
240 dvorak_n = dvorak_n | DVORAK_1;
241 if (dvorak_n == DVORAK_12) {
242 dvorak();
243 }
244 } else {
245 dvorak_n = dvorak_n & ~DVORAK_1;
246 }
247 return false;
248 case DVORAK2:
249 if (record->event.pressed) {
250 dvorak_n = dvorak_n | DVORAK_2;
251 if (dvorak_n == DVORAK_12) {
252 dvorak();
253 }
254 } else {
255 dvorak_n = dvorak_n & ~DVORAK_2;
256 }
257 return false;
258 case BLUE:
259 if (record->event.pressed) {
260 layer_on(_BLUE);
261 update_tri_layer(_BLUE, _ORANGE, _GREEN);
262 } else {
263 layer_off(_BLUE);
264 update_tri_layer(_BLUE, _ORANGE, _GREEN);
265 }
266 return false;
267 case ORANGE:
268 if (record->event.pressed) {
269 layer_on(_ORANGE);
270 update_tri_layer(_BLUE, _ORANGE, _GREEN);
271 } else {
272 layer_off(_ORANGE);
273 update_tri_layer(_BLUE, _ORANGE, _GREEN);
274 }
275 return false;
276 case PLOVER:
277 plover(record);
278 return false;
279 case TXBOLT:
280 if (record->event.pressed) {
281 txbolt();
282 }
283 return false;
284 }
285 return true;
286}
287
288// Initialize the steno protocol
289void eeconfig_init_user(void) {
290 steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
291}
diff --git a/keyboards/splitography/keymaps/jeandeaual/keymap.c b/keyboards/splitography/keymaps/jeandeaual/keymap.c
new file mode 100644
index 000000000..6679d835f
--- /dev/null
+++ b/keyboards/splitography/keymaps/jeandeaual/keymap.c
@@ -0,0 +1,293 @@
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 _GEMINI = 0,
22 _QWERTY,
23 _DVORAK,
24 _BLUE,
25 _ORANGE,
26 _GREEN,
27 _NUM,
28 _END_LAYERS,
29};
30
31enum keyboard_keycodes {
32 QWERTY = SAFE_RANGE,
33 DVORAK,
34 BASE,
35 BASE1,
36 BASE2,
37 GEMINI,
38 BLUE,
39 ORANGE,
40};
41
42#define COPY LCTL(KC_C)
43#define CUT LCTL(KC_X)
44#define PASTE LCTL(KC_V)
45#define UNDO LCTL(KC_Z)
46#define TG_NUM TG(_NUM)
47
48// clang-format off
49const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
50 // ...................................................................... GeminiPR
51 //
52 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
53 // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │
54 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
55 // │ Base │ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │
56 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
57 // │ Base │ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │
58 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
59 // │ A │ O │ E │ U │
60 // └──────┴──────┴──────┴──────┘
61
62 [_GEMINI] = LAYOUT(
63 STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC ,
64 BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
65 BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
66 STN_A, STN_O, STN_E, STN_U
67 ),
68
69 // ...................................................................... Qwerty
70 //
71 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
72 // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │
73 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
74 // │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│
75 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
76 // │ Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │
77 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
78 // │Orange│ Blue │ Space│ Alt │
79 // └──────┴──────┴──────┴──────┘
80
81 [_QWERTY] = LAYOUT(
82 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
83 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT ,
84 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
85 ORANGE, BLUE, KC_SPC, KC_LALT
86 ),
87
88 // ...................................................................... Dvorak
89 //
90 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
91 // │ Esc │ " │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ Bksp │
92 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
93 // │ Ctrl │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ Enter│
94 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
95 // │ Shift│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ GUI │
96 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
97 // │Orange│ Blue │ Space│ Alt │
98 // └──────┴──────┴──────┴──────┘
99
100 [_DVORAK] = LAYOUT(
101 KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
102 KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT ,
103 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI,
104 ORANGE, BLUE, KC_SPC, KC_LALT
105 ),
106
107 // .................................................................. Blue Layer
108 //
109 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
110 // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │
111 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
112 // │ Ctrl │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │
113 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
114 // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │
115 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
116 // │Orange│ f() │ Del │ Alt │
117 // └──────┴──────┴──────┴──────┘
118
119 [_BLUE] = LAYOUT(
120 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
121 KC_LCTL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT,
122 KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI,
123 ORANGE, _______, KC_DEL, KC_LALT
124 ),
125
126 // ................................................................ Orange Layer
127 //
128 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
129 // │ │ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │
130 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
131 // │ Ctrl │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │
132 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
133 // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │
134 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
135 // │ f() │ Blue │ Tab │ Alt │
136 // └──────┴──────┴──────┴──────┘
137
138 [_ORANGE] = LAYOUT(
139 XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX,
140 KC_LCTL, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX,
141 KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI,
142 _______, BLUE, KC_TAB, KC_LALT
143 ),
144
145 // ................................................................. Green Layer
146 //
147 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
148 // │Gemini│QWERTY│Dvorak│ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │
149 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
150 // │ Ctrl │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│
151 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
152 // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │
153 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
154 // │ f() │ f() │ -- │ Alt │
155 // └──────┴──────┴──────┴──────┘
156
157 [_GREEN] = LAYOUT(
158 GEMINI, QWERTY, DVORAK, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX,
159 KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
160 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
161 _______, _______, XXXXXXX, KC_LALT
162 ),
163
164 // ................................................................... Num Layer
165 //
166 // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
167 // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │
168 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
169 // │ Ctrl │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│
170 // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
171 // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │
172 // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
173 // │ -- │ -- │ -- │ Alt │
174 // └──────┴──────┴──────┴──────┘
175
176 [_NUM] = LAYOUT(
177 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX,
178 KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT ,
179 KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, BASE, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI,
180 XXXXXXX, XXXXXXX, XXXXXXX, KC_LALT
181 ),
182};
183// clang-format on
184
185// ..................................................................... Keymaps
186
187#define BASE_1 1
188#define BASE_2 2
189#define BASE_12 3
190static uint8_t base_n = 0;
191
192void (*base_layer)(void) = NULL;
193
194void qwerty(void) {
195 base_layer = qwerty;
196 base_n = 0;
197 layer_move(0);
198 set_single_persistent_default_layer(_QWERTY);
199}
200
201void dvorak(void) {
202 base_layer = dvorak;
203 base_n = 0;
204 layer_move(0);
205 set_single_persistent_default_layer(_DVORAK);
206}
207
208void gemini(void) {
209 layer_move(0);
210 set_single_persistent_default_layer(_GEMINI);
211}
212
213// ........................................................... User Keycode Trap
214
215bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
216 switch (keycode) {
217 case QWERTY:
218 if (record->event.pressed) {
219 qwerty();
220 }
221 return false;
222 case DVORAK:
223 if (record->event.pressed) {
224 dvorak();
225 }
226 return false;
227 case KC_QUOT:
228 if ((base_layer != dvorak) || (biton32(layer_state) != _BLUE)) {
229 break;
230 }
231 if (record->event.pressed) {
232 register_code(KC_SLSH);
233 } else {
234 unregister_code(KC_SLSH);
235 }
236 return false;
237 case BASE:
238 if (record->event.pressed) {
239 base_layer();
240 }
241 return false;
242 case BASE1:
243 if (record->event.pressed) {
244 base_n = base_n | BASE_1;
245 if (base_n == BASE_12) {
246 base_layer();
247 }
248 } else {
249 base_n = base_n & ~BASE_1;
250 }
251 return false;
252 case BASE2:
253 if (record->event.pressed) {
254 base_n = base_n | BASE_2;
255 if (base_n == BASE_12) {
256 base_layer();
257 }
258 } else {
259 base_n = base_n & ~BASE_2;
260 }
261 return false;
262 case BLUE:
263 if (record->event.pressed) {
264 layer_on(_BLUE);
265 update_tri_layer(_BLUE, _ORANGE, _GREEN);
266 } else {
267 layer_off(_BLUE);
268 update_tri_layer(_BLUE, _ORANGE, _GREEN);
269 }
270 return false;
271 case ORANGE:
272 if (record->event.pressed) {
273 layer_on(_ORANGE);
274 update_tri_layer(_BLUE, _ORANGE, _GREEN);
275 } else {
276 layer_off(_ORANGE);
277 update_tri_layer(_BLUE, _ORANGE, _GREEN);
278 }
279 return false;
280 case GEMINI:
281 if (record->event.pressed) {
282 gemini();
283 }
284 return false;
285 }
286 return true;
287}
288
289// Initialize the steno protocol
290void eeconfig_init_user(void) {
291 steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
292 base_layer = dvorak;
293}
diff --git a/keyboards/splitography/keymaps/jeandeaual/readme.md b/keyboards/splitography/keymaps/jeandeaual/readme.md
new file mode 100644
index 000000000..8e786b7fc
--- /dev/null
+++ b/keyboards/splitography/keymaps/jeandeaual/readme.md
@@ -0,0 +1,7 @@
1# Differences with the [default layout](../default)
2
3* Alt and Ctrl are shifted.
4* Use Gemini PR instead of TX Bolt.
5* The Plover layer has been removed.
6* QWERTY and Dvorak like in the [multi layout](../multi).
7* The default layer is set to the steno (Gemini PR) layout.
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}
diff --git a/keyboards/splitography/keymaps/multi/readme.md b/keyboards/splitography/keymaps/multi/readme.md
new file mode 100644
index 000000000..2eb7d8f98
--- /dev/null
+++ b/keyboards/splitography/keymaps/multi/readme.md
@@ -0,0 +1,15 @@
1# Differences with the [default layout](../default)
2
3* QWERTY, Dvorak, Colemak and Workman are available by pressing Orange + Blue + one of the top left keys:
4
5```
6┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
7│TxBolt│QWERTY│Dvorak│Colemk│Workmn│Scroll│ / │ 7 │ 8 │ 9 │ - │ │
8├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
9│ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│
10├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
11│ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │
12└──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘
13 │ f() │ f() │ -- │ Ctrl │
14 └──────┴──────┴──────┴──────┘
15```
diff --git a/keyboards/splitography/readme.md b/keyboards/splitography/readme.md
new file mode 100644
index 000000000..eeb9b2f40
--- /dev/null
+++ b/keyboards/splitography/readme.md
@@ -0,0 +1,42 @@
1# Splitography
2
3![Splitography](https://i.imgur.com/NlmR4Gc.jpeg)
4
5A *pay what you will* compact keyboard intended for use with [Plover](https://www.openstenoproject.org/), free and open source stenography software. This is a low-cost keyboard with minimal packaging and design, and arrives fully assembled, ready to use.
6
7* Keyboard Maintainer: [The QMK Community](https://github.com/qmk)
8* Hardware Supported: Splitography
9* Hardware Availability: [softhruf.love](https://softhruf.love/collections/writers)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make splitography:default
14
15Flashing example for this keyboard:
16
17 make splitography:default:flash
18
19See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
20
21## Bootloader
22
23Enter the bootloader in 3 ways:
24
25* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard.
26* **Physical reset button**: Briefly press the button on the back of the PCB.
27* **Keycode in layout**: Press the key mapped to `RESET` if it is available.
28
29## [Guide](https://softhruf.love/pages/guides)
30
31[Splitography quick start video](https://www.youtube.com/watch?v=ru4cRQ2s_v0)
32
33A short video guide on how to set up the SOFT/HRUF Splitography, a mechanical keyboard intended for use with [Plover](https://www.openstenoproject.org/plover/).
34
35Here is a reference card for the standard keyboard layout:
36
37![Reference card](https://i.imgur.com/ywe8jXR.png)
38
39* While holding down a colored thumb key, the matching colored functions/characters on the remaining keys can be pressed.
40* Bottom edge keys are accessed by holding down both keys.
41* Numlock locks in the Numpad layer.
42* Alt and Shift pressed simultaneously to return to the standard layout.
diff --git a/keyboards/splitography/rules.mk b/keyboards/splitography/rules.mk
new file mode 100644
index 000000000..e8326bcf0
--- /dev/null
+++ b/keyboards/splitography/rules.mk
@@ -0,0 +1,5 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
diff --git a/keyboards/splitography/splitography.c b/keyboards/splitography/splitography.c
new file mode 100644
index 000000000..4fe3452ef
--- /dev/null
+++ b/keyboards/splitography/splitography.c
@@ -0,0 +1,17 @@
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 "splitography.h"
diff --git a/keyboards/splitography/splitography.h b/keyboards/splitography/splitography.h
new file mode 100644
index 000000000..cfef33363
--- /dev/null
+++ b/keyboards/splitography/splitography.h
@@ -0,0 +1,33 @@
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#pragma once
18
19#include "quantum.h"
20
21// clang-format off
22#define LAYOUT( \
23 L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
24 L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
25 L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
26 L34, L35, R30, R31 \
27) \
28{ \
29 { L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05 }, \
30 { L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15 }, \
31 { L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25 }, \
32 { KC_NO, KC_NO, KC_NO, KC_NO, L34, L35, R30, R31, KC_NO, KC_NO, KC_NO, KC_NO } \
33}