aboutsummaryrefslogtreecommitdiff
path: root/users/ericgebhart/layouts.h
diff options
context:
space:
mode:
authorEric Gebhart <e.a.gebhart@gmail.com>2022-01-13 23:40:41 -0500
committerGitHub <noreply@github.com>2022-01-13 20:40:41 -0800
commite865cab48ec25c2fff958b23d89b1f86755d445c (patch)
tree0632ae08d0bfd477469768925ba74bce67087871 /users/ericgebhart/layouts.h
parent0f110737dba362596fcdbebd6c2bd4cc574f344b (diff)
downloadqmk_firmware-e865cab48ec25c2fff958b23d89b1f86755d445c.tar.gz
qmk_firmware-e865cab48ec25c2fff958b23d89b1f86755d445c.zip
[Keymap] ericgebhart keymap and userspace updates (#15727)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com> Co-authored-by: Drashna Jael're <drashna@live.com>
Diffstat (limited to 'users/ericgebhart/layouts.h')
-rw-r--r--users/ericgebhart/layouts.h720
1 files changed, 720 insertions, 0 deletions
diff --git a/users/ericgebhart/layouts.h b/users/ericgebhart/layouts.h
new file mode 100644
index 000000000..5ca9b00e6
--- /dev/null
+++ b/users/ericgebhart/layouts.h
@@ -0,0 +1,720 @@
1#pragma once
2/*
3 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include "core_keysets.h"
20#include "mod_layer.h"
21#include "edge_keys.h"
22
23/******************************************************************/
24/* This is where I put my Keyboard layouts. */
25/* The mod layer can be modified in mod_layer.h */
26/* can be applied here. The physical shape of the keyboard is */
27/* also accounted for here. This makes it very simple to add a */
28/* new keyboard and reuse all of my layouts and layers */
29/* */
30/* With all of that in hand, we then create a LAYOUT wrapper */
31/* macro that takes a list of keys, to create a keyboard matrix */
32/* that fits the keyboard. Simple. */
33/* */
34/* The thumb keys, the bottom rows, etc. */
35/* */
36/* An attempt has been made to adapt the kinesis and ergodox */
37/* Thumb keys to the rectangular shapes of the xd75, viterbi, */
38/* and rebound. */
39/******************************************************************/
40
41/******************************************************************/
42/* * The XD75 is a 5x15 Ortholinear matrix which means it has 3 */
43/* keys inbetween the usual left and right hand keys */
44/* * The Viterbi is a split 5x14 Ortholinear with 2 middle keys. */
45/* * The Ergodox is a split 5x14 Ortholinear with 2 middle keys, */
46/* thumbkeys. It is missing middle keys on (home) row 3. */
47/* * The Corne is a split 3x12 with 6 thumb keys. It has no */
48/* extra middle keys */
49/* */
50/******************************************************************/
51
52
53/******************************************************************/
54/* In all cases these keyboards are defined in a matrix which is */
55/* a set of rows. Maybe like so, or not. */
56/* */
57/* -------------------------|------------------------ */
58/* | Left0 | Numbers L | mid|dle0 | numbers R | Right0 | */
59/* | Left1 | keys0-5 | mid|dle1 | Keys6-10 | Right1 | */
60/* | Left2 | keys11-15 | mid|dle2 | Keys16-20 | Right2 | */
61/* | Left3 | keys20-25 | mid|dle3 | Keys25-30 | Right3 | */
62/* | Row5L | Row5R | */
63/* | ThumbsL | ThumbsR | */
64/* -------------------------|------------------------ */
65
66/* Generally speaking, the keys on the right and left don't change. */
67/* Neither does the bottom row or the thumbs. Frequently the numbers */
68/* row is identical across layers. Mostly, we want our Base layers to */
69/* be predctable. */
70
71
72// Since our quirky block definitions are basically a list of comma separated
73// arguments, we need a wrapper in order for these definitions to be
74// expanded before being used as arguments to the LAYOUT_xxx macro.
75#if (!defined(LAYOUT) && defined(KEYMAP))
76#define LAYOUT KEYMAP
77#endif
78
79// every keyboard has it's Layout. We start there and make a var args
80// out of it.
81
82#define LVARG_ergodox(...) LAYOUT_ergodox(__VA_ARGS__)
83#define LVARG_edox(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
84#define LAYOUT_VARG(...) LAYOUT(__VA_ARGS__)
85#define LAYOUT_PVARG(...) LAYOUT_pretty(__VA_ARGS__)
86
87#define LVARG_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__)
88#define LVARG_5x12(...) LAYOUT_ortho_5x12(__VA_ARGS__)
89#define LVARG_5x14(...) LAYOUT_ortho_5x14(__VA_ARGS__)
90#define LVARG_5x15(...) LAYOUT_ortho_5x15(__VA_ARGS__)
91
92/*
93 | Left | Numbers L | middle | numbers R | Right |
94 | Left | keys0-5 | middle | Keys6-10 | Right |
95 | Left | keys11-15 | middle | Keys16-20 | Right |
96 | Left | keys20-25 | middle | Keys25-30 | Right |
97 |Row5L Row5R |
98 |ThumbsL ThumbsR |
99*/
100
101/* Assuming that left, midddle, right, row5, and thumbs stay the same, */
102/* numbers, no numbers, numbers never change, whatever. */
103/* we can have a layout macro that takes a nice rectangle of keys. */
104
105/* Actually, because of Bepo, each keyboard currently requires four of */
106/* these macros. One for Qwerty, One for foreign layouts on bepo like */
107/* dvorak and beakl on bepo instead of on Qwerty. Then another for the Bepo */
108/* layout because unlike the rest of the layouts Bepo doesn't fit in */
109/* 3x10. It wants 3x12. So there are potentially 4 macros per keyboard here. */
110/* XXXX_base, XXXX_base_bepo, XXXX_base_bepo6, The 4th macro */
111/* is XXXXX_transient and generally works for all other */
112/* non base layers. */
113/* The base and transient versions are all that is necessary, if bepo is */
114/* not needed. */
115
116
117/* All layouts are relatively simple to make. */
118/* The ROW macros add a universal mod layer so that mods can be defined once */
119/* and used everywhere. No matter the keymap or layer. this allows actual maps */
120/* like dvorak, qwerty, colemak, beakl, etc., to be defined simply. */
121
122
123/* Additional, more complicated layouts can be found here.*/
124/* examples can be found in crkbd/keymaps/ericgebhart */
125/* examples can be found in kinesis/keymaps/ericgebhart */
126/* examples can be found in ergodox/keymaps/ericgebhart */
127/* examples can be found in montsinger/rebound/rev4/keymaps/ericgebhart */
128
129
130
131/********************************************************************/
132/* xiudi/xd75 - Ortholinear 5x15 */
133/********************************************************************/
134/// These first two base layout templates take sets of 5 keys, left and right.
135// Using 4 sets allows for changing the number row if you have one.
136// if you never change the number row, then use 3 sets of left and right.
137// and define the number row here.
138#define LAYOUT_5x15_base( \
139 K01, K02, K03, K04, K05, \
140 K06, K07, K08, K09, K0A, \
141 K11, K12, K13, K14, K15, \
142 K16, K17, K18, K19, K1A, \
143 K21, K22, K23, K24, K25, \
144 K26, K27, K28, K29, K2A, \
145 K31, K32, K33, K34, K35, \
146 K36, K37, K38, K39, K3A) \
147 LVARG_5x15( \
148 ROW0_LEFT(K01, K02, K03, K04, K05), \
149 ___3_MIDDLE_T___, \
150 ROW0_RIGHT(K06, K07, K08, K09, K0A), \
151 \
152 ROW1_LEFT(K11, K12, K13, K14, K15), \
153 ___3_MIDDLE_1___, \
154 ROW1_RIGHT(K16, K17, K18, K19, K1A), \
155 \
156 ROW2_LEFT(K21, K22, K23, K24, K25), \
157 ___3_MIDDLE_2___, \
158 ROW2_RIGHT(K26, K27, K28, K29, K2A), \
159 \
160 ROW3_LEFT(K31, K32, K33, K34, K35), \
161 ___3_MIDDLE_3___, \
162 ROW3_RIGHT(K36, K37, K38, K39, K3A), \
163 ___15_BOTTOM___ \
164 )
165
166#define LAYOUT_5x15_base_bepo( \
167 K01, K02, K03, K04, K05, \
168 K06, K07, K08, K09, K0A, \
169 K11, K12, K13, K14, K15, \
170 K16, K17, K18, K19, K1A, \
171 K21, K22, K23, K24, K25, \
172 K26, K27, K28, K29, K2A, \
173 K31, K32, K33, K34, K35, \
174 K36, K37, K38, K39, K3A) \
175 LVARG_5x15( \
176 ROW0_LEFT_BP(K01, K02, K03, K04, K05), \
177 ___3_MIDDLE_T___, \
178 ROW0_RIGHT_BP(K06, K07, K08, K09, K0A), \
179 \
180 ROW1_LEFT_BP(K11, K12, K13, K14, K15), \
181 ___3_MIDDLE_1_BP___, \
182 ROW1_RIGHT_BP(K16, K17, K18, K19, K1A), \
183 \
184 ROW2_LEFT_BP(K21, K22, K23, K24, K25), \
185 ___3_MIDDLE_2_BP___, \
186 ROW2_RIGHT_BP(K26, K27, K28, K29, K2A), \
187 \
188 ROW3_LEFT_BP(K31, K32, K33, K34, K35), \
189 ___3_MIDDLE_3_BP___, \
190 ROW3_RIGHT_BP(K36, K37, K38, K39, K3A), \
191 ___15_BOTTOM_BP___ \
192 )
193
194// Just for bepo because it's a 3x6 matrix on each side.
195// So 3 pairs of 6 keys, left and right.
196#define Layout_5x15_base_bepo6( \
197 K01, K02, K03, K04, K05, K06, \
198 K07, K08, K09, K0A, K0B, K0C, \
199 K11, K12, K13, K14, K15, K16, \
200 K17, K18, K19, K1A, K1B, K1C, \
201 K21, K22, K23, K24, K25, K26, \
202 K27, K28, K29, K2A, K2B, K2C \
203 ) \
204 LVARG_5x15( \
205 ___15_B_SYMB___, \
206 ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
207 ___3_MIDDLE_1_BP___, \
208 ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
209 \
210 ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
211 ___3_MIDDLE_2___, \
212 ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
213 \
214 ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
215 ___3_MIDDLE_3___, \
216 ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
217 ___15_BOTTOM_BP___ \
218 )
219
220 // 4 rows of 12. 3 columns transparent in the middle.
221#define LAYOUT_5x15_transient( \
222 K01, K02, K03, K04, K05, K06, \
223 K07, K08, K09, K0A, K0B, K0C, \
224 K11, K12, K13, K14, K15, K16, \
225 K17, K18, K19, K1A, K1B, K1C, \
226 K21, K22, K23, K24, K25, K26, \
227 K27, K28, K29, K2A, K2B, K2C, \
228 K31, K32, K33, K34, K35, K36, \
229 K37, K38, K39, K3A, K3B, K3C \
230 ) \
231 LVARG_5x15( \
232 K01, K02, K03, K04, K05, K06, \
233 ___3___, \
234 K07, K08, K09, K0A, K0B, K0C, \
235 K11, K12, K13, K14, K15, K16, \
236 ___3___, \
237 K17, K18, K19, K1A, K1B, K1C, \
238 K21, K22, K23, K24, K25, K26, \
239 ___3___, \
240 K27, K28, K29, K2A, K2B, K2C, \
241 K31, K32, K33, K34, K35, K36, \
242 ___3___, \
243 K37, K38, K39, K3A, K3B, K3C, \
244 ___15___) \
245
246#define BASE_5x15(...) LAYOUT_5x15_base(__VA_ARGS__)
247#define BASE_5x15_bepo(...) LAYOUT_5x15_base_bepo(__VA_ARGS__)
248#define BASE_5x15_bepo6(...) LAYOUT_5x15_base_bepo6(__VA_ARGS__)
249#define TRANSIENT_5x15(...) LAYOUT_5x15_transient(__VA_ARGS__)
250
251/********************************************************************/
252
253
254/********************************************************************/
255/* viterbi - Ortholinear 5x14 */
256/********************************************************************/
257#define LAYOUT_5x14_base( \
258 K01, K02, K03, K04, K05, \
259 K06, K07, K08, K09, K0A, \
260 K11, K12, K13, K14, K15, \
261 K16, K17, K18, K19, K1A, \
262 K21, K22, K23, K24, K25, \
263 K26, K27, K28, K29, K2A, \
264 K31, K32, K33, K34, K35, \
265 K36, K37, K38, K39, K3A) \
266 LVARG_5x14( \
267 ROW0_LEFT(K01, K02, K03, K04, K05), \
268 ___2_MIDDLE_T___, \
269 ROW0_RIGHT(K06, K07, K08, K09, K0A), \
270 \
271 ROW1_LEFT(K11, K12, K13, K14, K15), \
272 ___2_MIDDLE_1___, \
273 ROW1_RIGHT(K16, K17, K18, K19, K1A), \
274 \
275 ROW2_LEFT(K21, K22, K23, K24, K25), \
276 ___2_MIDDLE_2___, \
277 ROW2_RIGHT(K26, K27, K28, K29, K2A), \
278 \
279 ROW3_LEFT(K31, K32, K33, K34, K35), \
280 ___2_MIDDLE_3___, \
281 ROW3_RIGHT(K36, K37, K38, K39, K3A), \
282 ___14_BOTTOM___ \
283 )
284
285#define LAYOUT_5x14_base_bepo( \
286 K01, K02, K03, K04, K05, \
287 K06, K07, K08, K09, K0A, \
288 K11, K12, K13, K14, K15, \
289 K16, K17, K18, K19, K1A, \
290 K21, K22, K23, K24, K25, \
291 K26, K27, K28, K29, K2A, \
292 K31, K32, K33, K34, K35, \
293 K36, K37, K38, K39, K3A) \
294 LVARG_5x14( \
295 ROW0_LEFT_BP(K01, K02, K03, K04, K05), \
296 ___2_MIDDLE_T___, \
297 ROW0_RIGHT_BP(K06, K07, K08, K09, K0A), \
298 \
299 ROW1_LEFT_BP(K11, K12, K13, K14, K15), \
300 ___2_MIDDLE_1_BP___, \
301 ROW1_RIGHT_BP(K16, K17, K18, K19, K1A), \
302 \
303 ROW2_LEFT_BP(K21, K22, K23, K24, K25), \
304 ___2_MIDDLE_2_BP___, \
305 ROW2_RIGHT_BP(K26, K27, K28, K29, K2A), \
306 \
307 ROW3_LEFT_BP(K31, K32, K33, K34, K35), \
308 ___2_MIDDLE_3_BP___, \
309 ROW3_RIGHT_BP(K36, K37, K38, K39, K3A), \
310 ___14_BOTTOM_BP___ \
311 )
312
313 // Just for bepo because it's a 3x6 matrix on each side.
314// So 3 pairs of 6 keys, left and right.
315#define LAYOUT_5x14_base_bepo6( \
316 K01, K02, K03, K04, K05, K06, \
317 K07, K08, K09, K0A, K0B, K0C, \
318 K11, K12, K13, K14, K15, K16, \
319 K17, K18, K19, K1A, K1B, K1C, \
320 K21, K22, K23, K24, K25, K26, \
321 K27, K28, K29, K2A, K2B, K2C \
322 ) \
323 LVARG_5x14( \
324 ___14_B_SYMB___, \
325 ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
326 ___2_MIDDLE_1_BP___, \
327 ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
328 \
329 ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
330 ___2_MIDDLE_2___, \
331 ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
332 \
333 ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
334 ___2_MIDDLE_3___, \
335 ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
336 ___14_BOTTOM_BP___ \
337 )
338
339// 4 rows of 12. 2 columns transparent in the middle.
340#define LAYOUT_5x14_transient( \
341 K01, K02, K03, K04, K05, K06, \
342 K07, K08, K09, K0A, K0B, K0C, \
343 K11, K12, K13, K14, K15, K16, \
344 K17, K18, K19, K1A, K1B, K1C, \
345 K21, K22, K23, K24, K25, K26, \
346 K27, K28, K29, K2A, K2B, K2C, \
347 K31, K32, K33, K34, K35, K36, \
348 K37, K38, K39, K3A, K3B, K3C \
349 ) \
350 LVARG_5x14( \
351 K01, K02, K03, K04, K05, K06, \
352 ___2___, \
353 K07, K08, K09, K0A, K0B, K0C, \
354 K11, K12, K13, K14, K15, K16, \
355 ___2___, \
356 K17, K18, K19, K1A, K1B, K1C, \
357 K21, K22, K23, K24, K25, K26, \
358 ___2___, \
359 K27, K28, K29, K2A, K2B, K2C, \
360 K31, K32, K33, K34, K35, K36, \
361 ___2___, \
362 K37, K38, K39, K3A, K3B, K3C, \
363 ___14___ \
364 ) \
365
366#define BASE_5x14(...) LAYOUT_5x14_base(__VA_ARGS__)
367#define BASE_5x14_bepo(...) LAYOUT_5x14_base_bepo(__VA_ARGS__)
368#define BASE_5x14_bepo6(...) LAYOUT_5x14_base_bepo6(__VA_ARGS__)
369#define TRANSIENT_5x14(...) LAYOUT_5x14_transient(__VA_ARGS__)
370
371/********************************************************************/
372/* Ortholinear 4x12 */
373/********************************************************************/
374#define LAYOUT_4x12_base( \
375 K01, K02, K03, K04, K05, \
376 K06, K07, K08, K09, K0A, \
377 K11, K12, K13, K14, K15, \
378 K16, K17, K18, K19, K1A, \
379 K21, K22, K23, K24, K25, \
380 K26, K27, K28, K29, K2A \
381 ) \
382 LVARG_4x12( \
383 ROW1_LEFT(K01, K02, K03, K04, K05), \
384 ROW1_RIGHT(K06, K07, K08, K09, K0A), \
385 \
386 ROW2_LEFT(K11, K12, K13, K14, K15), \
387 ROW2_RIGHT(K16, K17, K18, K19, K1A), \
388 \
389 ROW3_LEFT(K21, K22, K23, K24, K25), \
390 ROW3_RIGHT(K26, K27, K28, K29, K2A), \
391 \
392 ___12_BOTTOM___ \
393 )
394
395#define LAYOUT_4x12_base_bepo( \
396 K01, K02, K03, K04, K05, \
397 K06, K07, K08, K09, K0A, \
398 K11, K12, K13, K14, K15, \
399 K16, K17, K18, K19, K1A, \
400 K21, K22, K23, K24, K25, \
401 K26, K27, K28, K29, K2A \
402 ) \
403 LVARG_4x12( \
404 ROW1_LEFT_BP(K01, K02, K03, K04, K05), \
405 ROW1_RIGHT_BP(K06, K07, K08, K09, K0A), \
406 \
407 ROW2_LEFT_BP(K11, K12, K13, K14, K15), \
408 ROW2_RIGHT_BP(K16, K17, K18, K19, K1A), \
409 \
410 ROW3_LEFT_BP(K21, K22, K23, K24, K25), \
411 ROW3_RIGHT_BP(K26, K27, K28, K29, K2A), \
412 \
413 ___12_BOTTOM_BP___ \
414 )
415
416 // Just for bepo because it's a 3x6 matrix on each side.
417 // So 3 pairs of 6 keys, left and right.
418#define Layout_4x12_base_bepo6( \
419 K01, K02, K03, K04, K05, K06, \
420 K07, K08, K09, K0A, K0B, K0C, \
421 K11, K12, K13, K14, K15, K16, \
422 K17, K18, K19, K1A, K1B, K1C, \
423 K21, K22, K23, K24, K25, K26, \
424 K27, K28, K29, K2A, K2B, K2C \
425 ) \
426 LVARG_4x12( \
427 ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
428 ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
429 \
430 ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
431 ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
432 \
433 ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
434 ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
435 ___12_BOTTOM_BP___ \
436 )
437
438// takes 3 makes 4 rows of 12.
439#define LAYOUT_4x12_transient( \
440 K01, K02, K03, K04, K05, K06, \
441 K07, K08, K09, K0A, K0B, K0C, \
442 K11, K12, K13, K14, K15, K16, \
443 K17, K18, K19, K1A, K1B, K1C, \
444 K21, K22, K23, K24, K25, K26, \
445 K27, K28, K29, K2A, K2B, K2C \
446 ) \
447 LVARG_4x12( \
448 K01, K02, K03, K04, K05, K06, \
449 K07, K08, K09, K0A, K0B, K0C, \
450 K11, K12, K13, K14, K15, K16, \
451 K17, K18, K19, K1A, K1B, K1C, \
452 K21, K22, K23, K24, K25, K26, \
453 K27, K28, K29, K2A, K2B, K2C, \
454 ___12___) \
455
456#define BASE_4x12(...) LAYOUT_4x12_base(__VA_ARGS__)
457#define BASE_4x12_bepo(...) LAYOUT_4x12_base_bepo(__VA_ARGS__)
458#define BASE_4x12_bepo6(...) LAYOUT_4x12_base_bepo6(__VA_ARGS__)
459#define TRANSIENT_4x12(...) LAYOUT_4x12_transient(__VA_ARGS__)
460
461/********************************************************************/
462/* CRKBD Corne */
463/* The Corne has 3x6 matrix on both sides with 6 thumbs total */
464/* This Macro takes 2x3x5 and gives it pinkies, and thumbs. */
465/* Arg chunks are in the middle with the passthrough modifiers as */
466/* needed. Sama Sama apres cette fois. */
467/********************************************************************/
468#define Base_3x6_3( \
469 K01, K02, K03, K04, K05, \
470 K06, K07, K08, K09, K0A, \
471 K11, K12, K13, K14, K15, \
472 K16, K17, K18, K19, K1A, \
473 K21, K22, K23, K24, K25, \
474 K26, K27, K28, K29, K2A) \
475 LAYOUT_VARG( \
476 ROW1_LEFT(K01, K02, K03, K04, K05), \
477 ROW1_RIGHT(K06, K07, K08, K09, K0A), \
478 \
479 ROW2_LEFT(K11, K12, K13, K14, K15), \
480 ROW2_RIGHT(K16, K17, K18, K19, K1A), \
481 \
482 ROW3_LEFT(K21, K22, K23, K24, K25), \
483 ROW3_RIGHT(K26, K27, K28, K29, K2A), \
484 ___6_ERGO_THUMBS___ \
485 )
486
487// So we can have different transient layers for symbols and numbers on bepo.
488// for layouts like dvorak on bepo.
489#define Base_bepo_3x6_3( \
490 K01, K02, K03, K04, K05, \
491 K06, K07, K08, K09, K0A, \
492 K11, K12, K13, K14, K15, \
493 K16, K17, K18, K19, K1A, \
494 K21, K22, K23, K24, K25, \
495 K26, K27, K28, K29, K2A \
496 ) \
497 LAYOUT_VARG( \
498 ROW1_LEFT_BP(K01, K02, K03, K04, K05), \
499 ROW1_RIGHT_BP(K06, K07, K08, K09, K0A), \
500 \
501 ROW2_LEFT_BP(K11, K12, K13, K14, K15), \
502 ROW2_RIGHT_BP(K16, K17, K18, K19, K1A), \
503 \
504 ROW3_LEFT_BP(K21, K22, K23, K24, K25), \
505 ROW3_RIGHT_BP(K26, K27, K28, K29, K2A), \
506 ___6_ERGO_THUMBS_BP___ \
507 )
508
509// No room for pinkies.
510// Just for bepo because it's a 3x6 matrix on each side.
511// So 3 pairs of 6 keys, And we lose our left and right.
512// Except it keeps the layer toggles along with the keycode
513// on the bottom.
514#define Base_bepo6_3x6_3( \
515 K01, K02, K03, K04, K05, K06, \
516 K07, K08, K09, K0A, K0B, K0C, \
517 K11, K12, K13, K14, K15, K16, \
518 K17, K18, K19, K1A, K1B, K1C, \
519 K21, K22, K23, K24, K25, K26, \
520 K27, K28, K29, K2A, K2B, K2C \
521 ) \
522 LAYOUT_VARG( \
523 ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
524 ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
525 \
526 ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
527 ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
528 \
529 ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
530 ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
531 ___6_ERGO_THUMBS_BP___ \
532 )
533
534// All we really need is to add the see through thumbs to the end.
535#define Transient6_3x6_3( \
536 K01, K02, K03, K04, K05, K06, \
537 K07, K08, K09, K0A, K0B, K0C, \
538 K11, K12, K13, K14, K15, K16, \
539 K17, K18, K19, K1A, K1B, K1C, \
540 K21, K22, K23, K24, K25, K26, \
541 K27, K28, K29, K2A, K2B, K2C \
542 ) \
543 LAYOUT_VARG( \
544 K01, K02, K03, K04, K05, K06, \
545 K07, K08, K09, K0A, K0B, K0C, \
546 K11, K12, K13, K14, K15, K16, \
547 K17, K18, K19, K1A, K1B, K1C, \
548 K21, K22, K23, K24, K25, K26, \
549 K27, K28, K29, K2A, K2B, K2C, \
550 ___6___)
551
552//---------------------------------------------------------
553// 3x5
554#define Base_3x5_3( \
555 K01, K02, K03, K04, K05, \
556 K06, K07, K08, K09, K0A, \
557 K11, K12, K13, K14, K15, \
558 K16, K17, K18, K19, K1A, \
559 K21, K22, K23, K24, K25, \
560 K26, K27, K28, K29, K2A) \
561 LAYOUT_VARG( \
562 ROW1_LEFT5(K01, K02, K03, K04, K05), \
563 ROW1_RIGHT5(K06, K07, K08, K09, K0A), \
564 \
565 ROW2_LEFT5(K11, K12, K13, K14, K15), \
566 ROW2_RIGHT5(K16, K17, K18, K19, K1A), \
567 \
568 ROW3_LEFT5(K21, K22, K23, K24, K25), \
569 ROW3_RIGHT5(K26, K27, K28, K29, K2A), \
570 ___6_ERGO_THUMBS___ \
571 )
572
573// So we can have different transient layers for symbols and numbers on bepo.
574// for layouts like dvorak on bepo.
575#define Base_bepo_3x5_3( \
576 K01, K02, K03, K04, K05, \
577 K06, K07, K08, K09, K0A, \
578 K11, K12, K13, K14, K15, \
579 K16, K17, K18, K19, K1A, \
580 K21, K22, K23, K24, K25, \
581 K26, K27, K28, K29, K2A \
582 ) \
583 LAYOUT_VARG( \
584 ROW1_LEFT5_BP(K01, K02, K03, K04, K05), \
585 ROW1_RIGHT5_BP(K06, K07, K08, K09, K0A), \
586 \
587 ROW2_LEFT5_BP(K11, K12, K13, K14, K15), \
588 ROW2_RIGHT5_BP(K16, K17, K18, K19, K1A), \
589 \
590 ROW3_LEFT5_BP(K21, K22, K23, K24, K25), \
591 ROW3_RIGHT5_BP(K26, K27, K28, K29, K2A), \
592 ___6_ERGO_THUMBS_BP___ \
593 )
594
595// All we really need is to add the see through thumbs to the end.
596#define Transient5_3x5_3( \
597 K01, K02, K03, K04, K05, \
598 K07, K08, K09, K0A, K0B, \
599 K11, K12, K13, K14, K15, \
600 K17, K18, K19, K1A, K1B, \
601 K21, K22, K23, K24, K25, \
602 K27, K28, K29, K2A, K2B \
603 ) \
604 LAYOUT_VARG( \
605 K01, K02, K03, K04, K05, \
606 K07, K08, K09, K0A, K0B, \
607 K11, K12, K13, K14, K15, \
608 K17, K18, K19, K1A, K1B, \
609 K21, K22, K23, K24, K25, \
610 K27, K28, K29, K2A, K2B, \
611 ___6___)
612
613/********************************************************************/
614/* Kinesis*/
615/********************************************************************/
616// Basically an ergodox ez without the 3 pairs of middle keys.
617// Left, right, bottom, and thumbs all stay the same.
618#define Base_4x6_4_6( \
619 K01, K02, K03, K04, K05, \
620 K06, K07, K08, K09, K0A, \
621 K11, K12, K13, K14, K15, \
622 K16, K17, K18, K19, K1A, \
623 K21, K22, K23, K24, K25, \
624 K26, K27, K28, K29, K2A, \
625 K31, K32, K33, K34, K35, \
626 K36, K37, K38, K39, K3A \
627 ) \
628 LAYOUT_PVARG( \
629 ___KINTFUNC_L___, ___KINTFUNC_R___, \
630 ROW0_LEFT(K01, K02, K03, K04, K05), \
631 ROW0_RIGHT(K06, K07, K08, K09, K0A), \
632 \
633 ROW1_LEFT(K11, K12, K13, K14, K15), \
634 ROW1_RIGHT(K16, K17, K18, K19, K1A), \
635 \
636 ROW2_LEFT(K21, K22, K23, K24, K25), \
637 ROW2_RIGHT(K26, K27, K28, K29, K2A), \
638 \
639 ROW3_LEFT(K31, K32, K33, K34, K35), \
640 ROW3_RIGHT(K36, K37, K38, K39, K3A), \
641 ___4_BOTTOM_LEFT___, ___4_BOTTOM_RIGHT___, \
642 ___12_DOX_ALL_THUMBS___ \
643 )
644
645#define Base_bepo_4x6_4_6( \
646 K01, K02, K03, K04, K05, \
647 K06, K07, K08, K09, K0A, \
648 K11, K12, K13, K14, K15, \
649 K16, K17, K18, K19, K1A, \
650 K21, K22, K23, K24, K25, \
651 K26, K27, K28, K29, K2A, \
652 K31, K32, K33, K34, K35, \
653 K36, K37, K38, K39, K3A \
654 ) \
655 LAYOUT_PVARG( \
656 ___KINTFUNC_L___, ___KINTFUNC_R___, \
657 ROW0_LEFT(K01, K02, K03, K04, K05), \
658 ROW0_RIGHT(K06, K07, K08, K09, K0A), \
659 \
660 ROW1_LEFT(K11, K12, K13, K14, K15), \
661 ROW1_RIGHT(K16, K17, K18, K19, K1A), \
662 \
663 ROW2_LEFT(K21, K22, K23, K24, K25), \
664 ROW2_RIGHT(K26, K27, K28, K29, K2A), \
665 \
666 ROW3_LEFT(K31, K32, K33, K34, K35), \
667 ROW3_RIGHT(K36, K37, K38, K39, K3A), \
668 ___4_BOTTOM_LEFT___, ___4_BOTTOM_RIGHT___, \
669 ___12_DOX_ALL_THUMBS_BP___ \
670 )
671
672
673// So 3 pairs of 6 keys, left and right.
674#define Base_bepo6_4x6_4_6( \
675 K01, K02, K03, K04, K05, K06, \
676 K07, K08, K09, K0A, K0B, K0C, \
677 K11, K12, K13, K14, K15, K16, \
678 K17, K18, K19, K1A, K1B, K1C, \
679 K21, K22, K23, K24, K25, K26, \
680 K27, K28, K29, K2A, K2B, K2C \
681 ) \
682 LAYOUT_PVARG( \
683 ___KINTFUNC_L___, ___KINTFUNC_R___, \
684 ___6SYMBOL_BEPO_L___, \
685 ___6SYMBOL_BEPO_R___, \
686 ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
687 ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
688 \
689 ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
690 ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
691 \
692 ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
693 ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
694 ___4_BOTTOM_LEFT_BP___, ___4_BOTTOM_RIGHT_BP___, \
695 ___12_DOX_ALL_THUMBS_BP___ \
696 )
697
698#define Transient6_4x6_4_6( \
699 K01, K02, K03, K04, K05, K06, \
700 K07, K08, K09, K0A, K0B, K0C, \
701 K11, K12, K13, K14, K15, K16, \
702 K17, K18, K19, K1A, K1B, K1C, \
703 K21, K22, K23, K24, K25, K26, \
704 K27, K28, K29, K2A, K2B, K2C, \
705 K31, K32, K33, K34, K35, K36, \
706 K37, K38, K39, K3A, K3B, K3C \
707 ) \
708 LAYOUT_PVARG( \
709 ___KINTFUNC_L___, ___KINTFUNC_R___, \
710 K01, K02, K03, K04, K05, K06, \
711 K07, K08, K09, K0A, K0B, K0C, \
712 K11, K12, K13, K14, K15, K16, \
713 K17, K18, K19, K1A, K1B, K1C, \
714 K21, K22, K23, K24, K25, K26, \
715 K27, K28, K29, K2A, K2B, K2C, \
716 K31, K32, K33, K34, K35, K36, \
717 K37, K38, K39, K3A, K3B, K3C, \
718 ___4___, ___4___, \
719 ___12___ \
720 )