diff options
Diffstat (limited to 'users/ericgebhart/layouts.h')
| -rw-r--r-- | users/ericgebhart/layouts.h | 720 |
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 | ) | ||
