123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771 |
- #pragma once
- /*
- Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- #include "base_layers.h"
- #include "mod_layer.h"
- #include "edge_keys.h"
- #include "thumbs.h"
- #include QMK_KEYBOARD_H
- /******************************************************************/
- /* This is where I put my Keyboard layouts. */
- /* The mod layer can be modified in mod_layer.h */
- /* can be applied here. The physical shape of the keyboard is */
- /* also accounted for here. This makes it very simple to add a */
- /* new keyboard and reuse all of my layouts and layers */
- /* */
- /* With all of that in hand, we then create a LAYOUT wrapper */
- /* macro that takes a list of keys, to create a keyboard matrix */
- /* that fits the keyboard. Simple. */
- /* */
- /* The thumb keys, the bottom rows, etc. */
- /* */
- /* An attempt has been made to adapt the kinesis and ergodox */
- /* Thumb keys to the rectangular shapes of the xd75, viterbi, */
- /* and rebound. */
- /******************************************************************/
- /******************************************************************/
- /* * The XD75 is a 5x15 Ortholinear matrix which means it has 3 */
- /* keys inbetween the usual left and right hand keys */
- /* * The Viterbi is a split 5x14 Ortholinear with 2 middle keys. */
- /* * The Ergodox is a split 5x14 Ortholinear with 2 middle keys, */
- /* thumbkeys. It is missing middle keys on (home) row 3. */
- /* * The Corne is a split 3x12 with 6 thumb keys. It has no */
- /* extra middle keys */
- /* * The Kinesis is 4x6 + 4 and 6 thumb keys. */
- /* * My Dactyl is 4x6 + 5 and 8 thumb keys. */
- /******************************************************************/
- /******************************************************************/
- /* In all cases these keyboards are defined in a matrix which is */
- /* a set of rows. Maybe like so, or not. */
- /* */
- /* -------------------------|------------------------ */
- /* | Left0 | Numbers L | mid|dle0 | numbers R | Right0 | */
- /* | Left1 | keys0-5 | mid|dle1 | Keys6-10 | Right1 | */
- /* | Left2 | keys11-15 | mid|dle2 | Keys16-20 | Right2 | */
- /* | Left3 | keys20-25 | mid|dle3 | Keys25-30 | Right3 | */
- /* | Row5L | Row5R | */
- /* | ThumbsL | ThumbsR | */
- /* -------------------------|------------------------ */
- /* Generally speaking, the keys on the right and left don't change. */
- /* Neither does the bottom row or the thumbs. Frequently the numbers */
- /* row is identical across layers. Mostly, we want our Base layers to */
- /* be predctable. */
- // Since our quirky block definitions are basically a list of comma separated
- // arguments, we need a wrapper in order for these definitions to be
- // expanded before being used as arguments to the LAYOUT_xxx macro.
- #if (!defined(LAYOUT) && defined(KEYMAP))
- #define LAYOUT KEYMAP
- #endif
- // every keyboard has it's Layout. We start there and make a var args
- // out of it.
- #define LVARG_ergodox(...) LAYOUT_ergodox(__VA_ARGS__)
- #define LVARG_edox(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
- #define LAYOUT_VARG(...) LAYOUT(__VA_ARGS__)
- #define LAYOUT_PVARG(...) LAYOUT_pretty(__VA_ARGS__)
- #define LVARG_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__)
- #define LVARG_5x12(...) LAYOUT_ortho_5x12(__VA_ARGS__)
- #define LVARG_5x14(...) LAYOUT_ortho_5x14(__VA_ARGS__)
- #define LVARG_5x15(...) LAYOUT_ortho_5x15(__VA_ARGS__)
- /*
- | Left | Numbers L | middle | numbers R | Right |
- | Left | keys0-5 | middle | Keys6-10 | Right |
- | Left | keys11-15 | middle | Keys16-20 | Right |
- | Left | keys20-25 | middle | Keys25-30 | Right |
- |Row5L Row5R |
- |ThumbsL ThumbsR |
- */
- /* Assuming that left, midddle, right, row5, and thumbs stay the same, */
- /* numbers, no numbers, numbers never change, whatever. */
- /* we can have a layout macro that takes a nice rectangle of keys. */
- /*Some keyboards need number rows, some don't. there is a setting for that */
- /* the keymap will give number rows if BASE_NUMBER_ROW is defined.*/
- /* in that case, the layout should take 4 rows of 10. */
- /* If all the layouts you might ever want would have the same top row,*/
- /* Then it could be defined like that here, and it could take 3x10.*/
- /* All layouts are relatively simple to make. */
- /* The ROW macros add a universal mod layer so that mods can be defined once */
- /* and used everywhere. No matter the keymap or layer. this allows actual maps */
- /* like dvorak, qwerty, colemak, beakl, etc., to be defined simply. */
- /* Additional, usage examples can be found in keyboards.*/
- /* crkbd/keymaps/ericgebhart */
- /* kinesis/keymaps/ericgebhart */
- /* ergodox_ez/keymaps/ericgebhart */
- /* keebio/viterbi/keymaps/ericgebhart */
- /* xiudi/xd75/keymaps/ericgebhart */
- /* montsinger/rebound/rev4/keymaps/ericgebhart */
- /********************************************************************/
- /* xiudi/xd75 - Ortholinear 5x15 */
- /********************************************************************/
- /// These first two base layout templates take sets of 5 keys, left and right.
- // Using 4 sets allows for changing the number row if you have one.
- // if you never change the number row, then use 3 sets of left and right.
- // and define the number row here.
- #define Base_5x15( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, \
- K31, K32, K33, K34, K35, \
- K36, K37, K38, K39, K3A) \
- LVARG_5x15( \
- MOD_ROW(ROW0L)(K01, K02, K03, K04, K05), \
- MAP_CHUNK(___3_MIDDLE_T), \
- MOD_ROW(ROW0R)(K06, K07, K08, K09, K0A), \
- \
- MOD_ROW(ROW1L)(K11, K12, K13, K14, K15), \
- MAP_CHUNK(___3_MIDDLE_1), \
- MOD_ROW(ROW1R)(K16, K17, K18, K19, K1A), \
- \
- MOD_ROW(ROW2L)(K21, K22, K23, K24, K25), \
- MAP_CHUNK(___3_MIDDLE_2), \
- MOD_ROW(ROW2R)(K26, K27, K28, K29, K2A), \
- \
- MOD_ROW(ROW3L)(K31, K32, K33, K34, K35), \
- MAP_CHUNK(___3_MIDDLE_3), \
- MOD_ROW(ROW3R)(K36, K37, K38, K39, K3A), \
- MAP_CHUNK(___15_BOTTOM) \
- )
- #define Base_5x15t6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- K31, K32, K33, K34, K35, K36, \
- K37, K38, K39, K3A, K3B, K3C) \
- LVARG_5x15( \
- MOD_ROW(ROW0L)(K01, K02, K03, K04, K05, K06), \
- MAP_CHUNK(___3_MIDDLE_T), \
- MOD_ROW(ROW0R)(K07, K08, K09, K0A, K0B, K0C), \
- MOD_ROW(ROW1L)(K11, K12, K13, K14, K15, K16), \
- MAP_CHUNK(___3_MIDDLE_1), \
- MOD_ROW(ROW1R)(K17, K18, K19, K1A, K1B, K1C), \
- MOD_ROW(ROW2L)(K21, K22, K23, K24, K25, K26), \
- MAP_CHUNK(___3_MIDDLE_2), \
- MOD_ROW(ROW2R)(K27, K28, K29, K2A, K2B, K2C), \
- MOD_ROW(ROW3L)(K31, K32, K33, K34, K35, K36), \
- MAP_CHUNK(___3_MIDDLE_3), \
- MOD_ROW(ROW3R)(K37, K38, K39, K3A, K3B, K3C), \
- MAP_CHUNK(___15_BOTTOM) \
- )
- // 4 rows of 12. 3 columns transparent in the middle.
- #define Transient_5x15( \
- K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, \
- K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, \
- K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B \
- ) \
- LVARG_5x15( \
- ___15___, \
- ___, K01, K02, K03, K04, K05, \
- ___3___, \
- K07, K08, K09, K0A, K0B, ___, \
- ___, K11, K12, K13, K14, K15, \
- ___3___, \
- K17, K18, K19, K1A, K1B, ___, \
- ___, K21, K22, K23, K24, K25, \
- ___3___, \
- K27, K28, K29, K2A, K2B, ___, \
- MAP_CHUNK(___15_BOTTOM) \
- ) \
- /********************************************************************/
- /********************************************************************/
- /* viterbi - Ortholinear 5x14 */
- /********************************************************************/
- #define Base_5x14( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, \
- K31, K32, K33, K34, K35, \
- K36, K37, K38, K39, K3A) \
- LVARG_5x14( \
- MOD_ROW(ROW0L)(K01, K02, K03, K04, K05), \
- MAP_CHUNK(___2_MIDDLE_T), \
- MOD_ROW(ROW0R)(K06, K07, K08, K09, K0A), \
- \
- MOD_ROW(ROW1L)(K11, K12, K13, K14, K15), \
- MAP_CHUNK(___2_MIDDLE_1), \
- MOD_ROW(ROW1R)(K16, K17, K18, K19, K1A), \
- \
- MOD_ROW(ROW2L)(K21, K22, K23, K24, K25), \
- MAP_CHUNK(___2_MIDDLE_2), \
- MOD_ROW(ROW2R)(K26, K27, K28, K29, K2A), \
- \
- MOD_ROW(ROW3L)(K31, K32, K33, K34, K35), \
- MAP_CHUNK(___2_MIDDLE_3), \
- MOD_ROW(ROW3R)(K36, K37, K38, K39, K3A), \
- MAP_CHUNK(___14_BOTTOM) \
- )
- #define Base_5x14t6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- K31, K32, K33, K34, K35, K36, \
- K37, K38, K39, K3A, K3B, K3C) \
- LVARG_5x15( \
- MOD_ROW(ROW0L)(K01, K02, K03, K04, K05, K06), \
- MAP_CHUNK(___2_MIDDLE_T), \
- MOD_ROW(ROW0R)(K07, K08, K09, K0A, K0B, K0C), \
- MOD_ROW(ROW1L)(K11, K12, K13, K14, K15, K16), \
- MAP_CHUNK(___2_MIDDLE_1), \
- MOD_ROW(ROW1R)(K17, K18, K19, K1A, K1B, K1C), \
- MOD_ROW(ROW2L)(K21, K22, K23, K24, K25, K26), \
- MAP_CHUNK(___2_MIDDLE_2), \
- MOD_ROW(ROW2R)(K27, K28, K29, K2A, K2B, K2C), \
- MOD_ROW(ROW3L)(K31, K32, K33, K34, K35, K36), \
- MAP_CHUNK(___2_MIDDLE_3), \
- MOD_ROW(ROW3R)(K37, K38, K39, K3A, K3B, K3C), \
- MAP_CHUNK(___14_BOTTOM) \
- )
- // 4 rows of 12. 2 columns transparent in the middle.
- #define Transient_5x14( \
- K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, \
- K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, \
- K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B \
- ) \
- LVARG_5x14( \
- ___14___, \
- ___, K01, K02, K03, K04, K05, \
- ___2___, \
- K07, K08, K09, K0A, K0B, ___, \
- \
- ___, K11, K12, K13, K14, K15, \
- ___2___, \
- K17, K18, K19, K1A, K1B, ___, \
- \
- ___, K21, K22, K23, K24, K25, \
- ___2___, \
- K27, K28, K29, K2A, K2B, ___, \
- MAP_CHUNK(___14_BOTTOM) \
- ) \
- /********************************************************************/
- /* Ortholinear 4x12 */
- /********************************************************************/
- #define LAYOUT_4x12_base( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A \
- ) \
- LVARG_4x12( \
- MOD_CORE_3x5(K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A), \
- ___12_BOTTOM___ \
- )
- // Just for bepo because it's a 3x6 matrix on each side.
- // So 3 pairs of 6 keys, left and right.
- // takes 3 makes 4 rows of 12.
- #define LAYOUT_4x12_transient( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C \
- ) \
- LVARG_4x12( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- ___12_BOTTOM___ \
- ) \
- /********************************************************************/
- /* CRKBD Corne or any other 3x5/6 with 3 thumbs on each side. */
- /* The Corne has 3x6 matrix on both sides with 6 thumbs total */
- /* This Macro takes 2x3x5 and gives it pinkies, and thumbs. */
- /* Arg chunks are in the middle with the passthrough modifiers as */
- /* needed. Sama Sama apres cette fois. */
- /********************************************************************/
- #define Base_3x6_3( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A) \
- LAYOUT_VARG( \
- MOD_CORE_3x5(K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A), \
- ___6_ERGO_THUMBS___ \
- )
- #define Base_3x6_3t6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C) \
- LAYOUT_VARG( \
- MOD_CORE_3x6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C), \
- ___6_ERGO_THUMBS___ \
- )
- // All we really need is to add the see through thumbs to the end.
- #define Transient_3x6_3( \
- K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, \
- K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, \
- K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B \
- ) \
- LAYOUT_VARG( \
- ___, K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, ___, \
- ___, K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, ___, \
- ___, K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B, ___, \
- ___6_ERGO_THUMBS___ \
- )
- //___6_ERGO_THUMBS___
- /********************************************************************/
- /* Kinesis*/
- /********************************************************************/
- // A 4x6 on each side, with a 4 column fifth row, and 6 thumbs on
- // each side. - 4x6_4_6.
- // Then a giant row up top, 9 keys on each side, for function keys.
- #define Base_4x6_4_6( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, \
- K31, K32, K33, K34, K35, \
- K36, K37, K38, K39, K3A \
- ) \
- LAYOUT_PVARG( \
- ___KINTFUNC_L___, ___KINTFUNC_R___, \
- MOD_CORE_4x5(K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, \
- K31, K32, K33, K34, K35, \
- K36, K37, K38, K39, K3A), \
- MAP_CHUNK(___4_BOTTOM_LEFT), \
- MAP_CHUNK(___4_BOTTOM_RIGHT), \
- MAP_CHUNK(___12_DOX_ALL_THUMBS) \
- )
- #define Base_4x6_4_6t6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- K31, K32, K33, K34, K35, K36, \
- K37, K38, K39, K3A, K3B, K3C) \
- LAYOUT_PVARG( \
- MOD_CORE_4x6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- K31, K32, K33, K34, K35, K36, \
- K37, K38, K39, K3A, K3B, K3C), \
- MAP_CHUNK(___4_BOTTOM_LEFT), \
- MAP_CHUNK(___4_BOTTOM_RIGHT), \
- MAP_CHUNK(___12_DOX_ALL_THUMBS) \
- )
- #define Transient_4x6_4_6( \
- K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, \
- K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, \
- K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B \
- ) \
- LAYOUT_PVARG( \
- ___12___, ___6___, \
- ___12___, \
- ___, K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, ___, \
- ___, K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, ___, \
- ___, K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B, ___, \
- ___4___, ___4___, \
- MAP_CHUNK(___12_DOX_ALL_THUMBS) \
- )
- /* ___KINTFUNC_L___, ___KINTFUNC_R___, \ */
- /* This keyboard is a split, 4x6 + a row of 5 and a thumb cluster of 8. */
- /* So We need Base_4x6_5_8 As a layout template to add mods, and fill */
- /* out the perimeter keys of the keyboard. Perimeter keys being the */
- /* number row, outside pinky keys, the 5th row, and thumbs. */
- /********************************************************************/
- /* Dactyl with 8 thumb keys*/
- /********************************************************************/
- // Basically an ergodox ez without the 3 pairs of middle keys.
- // electrically 7 columns in the 5th row. 6 in the rest.
- // Left, right, bottom, and thumbs all stay the same.
- #define Base_4x6_5_8( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, \
- K31, K32, K33, K34, K35, \
- K36, K37, K38, K39, K3A \
- ) \
- LAYOUT_PVARG( \
- MOD_CORE_4x5(K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, \
- K31, K32, K33, K34, K35, \
- K36, K37, K38, K39, K3A \
- ), \
- MAP_CHUNK(___5_BOTTOM_LEFT), MAP_CHUNK(___5_BOTTOM_RIGHT), \
- MAP_CHUNK(___16_ALL_THUMBSa) \
- )
- #define Base_4x6_5_8t6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- K31, K32, K33, K34, K35, K36, \
- K37, K38, K39, K3A, K3B, K3C) \
- LAYOUT_PVARG( \
- MOD_CORE_4x6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- K31, K32, K33, K34, K35, K36, \
- K37, K38, K39, K3A, K3B, K3C), \
- MAP_CHUNK(___5_BOTTOM_LEFT), MAP_CHUNK(___5_BOTTOM_RIGHT), \
- MAP_CHUNK(___16_ALL_THUMBSa) \
- )
- // so far no need for mods on the transient layers.
- // switching to 3x5 transients. 10 column defines.
- // I like 3x10 maps even on big keyboards.
- # define Transient_4x6_5_8( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A \
- ) \
- LAYOUT_PVARG( \
- ___6___, ___6___, \
- ___, K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, ___, \
- ___, K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, ___, \
- ___, K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, ___, \
- ___5___, ___5___, \
- MAP_CHUNK(___16_ALL_THUMBSa) \
- )
- /********************************************************************/
- /* Ergodox EZ */
- /********************************************************************/
- // This one is is set up to pass in the number row.
- // Beakl and bepo both change the number row.
- // Left, middle, right, bottom, and thumbs all stay the same.
- #define Base_dox( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A, \
- K31, K32, K33, K34, K35, \
- K36, K37, K38, K39, K3A \
- ) \
- LVARG_edox( \
- MOD_ROW(ROW0L)(K01, K02, K03, K04, K05), \
- MAP_CHUNK(___2_MIDDLE_1), \
- MOD_ROW(ROW0R)(K06, K07, K08, K09, K0A), \
- \
- MOD_ROW(ROW1L)(K11, K12, K13, K14, K15), \
- MAP_CHUNK(___2_MIDDLE_2), \
- MOD_ROW(ROW1R)(K16, K17, K18, K19, K1A), \
- \
- MOD_ROW(ROW2L)(K21, K22, K23, K24, K25), \
- MOD_ROW(ROW2R)(K26, K27, K28, K29, K2A), \
- \
- MOD_ROW(ROW3L)(K31, K32, K33, K34, K35), \
- MAP_CHUNK(___2_MIDDLE_3), \
- MOD_ROW(ROW3R)(K36, K37, K38, K39, K3A), \
- MAP_CHUNK(___5_BOTTOM_LEFT), MAP_CHUNK(___5_BOTTOM_RIGHT), \
- MAP_CHUNK(___12_DOX_ALL_THUMBS) \
- )
- #define Base_doxt6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C, \
- K31, K32, K33, K34, K35, K36, \
- K37, K38, K39, K3A, K3B, K3C) \
- LVARG_edox(MOD_ROW(ROW0L)(K01, K02, K03, K04, K05, K06), \
- MAP_CHUNK(___2_MIDDLE_1), \
- MOD_ROW(ROW0R)(K07, K08, K09, K0A, K0B, K0C), \
- MOD_ROW(ROW1L)(K11, K12, K13, K14, K15, K16), \
- MAP_CHUNK(___2_MIDDLE_2), \
- MOD_ROW(ROW1R)(K17, K18, K19, K1A, K1B, K1C), \
- MOD_ROW(ROW2L)(K21, K22, K23, K24, K25, K26), \
- MOD_ROW(ROW2R)(K27, K28, K29, K2A, K2B, K2C), \
- MOD_ROW(ROW3L)(K31, K32, K33, K34, K35, K36), \
- MAP_CHUNK(___2_MIDDLE_3), \
- MOD_ROW(ROW3R)(K37, K38, K39, K3A, K3B, K3C), \
- MAP_CHUNK(___5_BOTTOM_LEFT), \
- MAP_CHUNK(___5_BOTTOM_RIGHT), \
- MAP_CHUNK(___12_DOX_ALL_THUMBS))
- #define Transient_dox( \
- K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, \
- K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, \
- K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B) \
- LVARG_edox( \
- ___14___, \
- ___, K01, K02, K03, K04, K05, \
- ___2___, \
- K07, K08, K09, K0A, K0B, ___, \
- ___, K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, ___, \
- ___, K21, K22, K23, K24, K25, \
- ___2___, \
- K27, K28, K29, K2A, K2B, ___, \
- ___5___, ___5___, \
- MAP_CHUNK(___12_DOX_ALL_THUMBS) \
- )
- /********************************************************************/
- /* Rebound 4 rows, 1x12, 3x13 */
- /********************************************************************/
- #define LVARG_rebound(...) LAYOUT_all(__VA_ARGS__)
- #define Base_rebound( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A \
- ) \
- LVARG_rebound( \
- MOD_ROW(ROW1L)(K01, K02, K03, K04, K05), \
- MOD_ROW(ROW1R)(K06, K07, K08, K09, K0A), \
- \
- MOD_ROW(ROW2L)(K11, K12, K13, K14, K15), \
- KC_CCCV, \
- MOD_ROW(ROW2R)(K16, K17, K18, K19, K1A), \
- \
- MOD_ROW(ROW3L)(K21, K22, K23, K24, K25), \
- MO_ADJUST, \
- MOD_ROW(ROW3R)(K26, K27, K28, K29, K2A), \
- MAP_CHUNK(___13_BOTTOM) \
- )
- #define Base_reboundt6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C \
- ) \
- LVARG_rebound( \
- MOD_ROW(ROW1L)(K01, K02, K03, K04, K05, K06), \
- MOD_ROW(ROW1R)(K07, K08, K09, K0A, K0B, K0C), \
- MOD_ROW(ROW2L)(K11, K12, K13, K14, K15, K16), \
- KC_CCCV, \
- MOD_ROW(ROW2R)(K17, K18, K19, K1A, K1B, K1C), \
- MOD_ROW(ROW3L)(K21, K22, K23, K24, K25, K26), \
- MO_ADJUST, \
- MOD_ROW(ROW3R)(K27, K28, K29, K2A, K2B, K2C), \
- MAP_CHUNK(___13_BOTTOM) \
- )
- #define Rebound_transient( \
- K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, \
- K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, \
- K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B \
- ) \
- LVARG_rebound( \
- ___, K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, ___, \
- ___, K11, K12, K13, K14, K15, \
- ___, \
- K17, K18, K19, K1A, K1B, ___, \
- ___, K21, K22, K23, K24, K25, \
- ___, \
- K27, K28, K29, K2A, K2B, ___, \
- MAP_CHUNK(___13_BOTTOM) \
- )
- /********************************************************************/
- /* Kyria or any other 3x5/6 with 4 keys in the middle of the last */
- /* Row. Followed by 5 thumb keys on each side. 7 thumb keys total. */
- /********************************************************************/
- #define Base_2x6_8_5( \
- K01, K02, K03, K04, K05, \
- K06, K07, K08, K09, K0A, \
- K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K1A, \
- K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K2A) \
- LAYOUT_VARG( \
- MOD_ROW(ROW1L)(K01, K02, K03, K04, K05), \
- MOD_ROW(ROW1R)(K06, K07, K08, K09, K0A), \
- \
- MOD_ROW(ROW2L)(K11, K12, K13, K14, K15), \
- MOD_ROW(ROW2R)(K16, K17, K18, K19, K1A), \
- \
- MOD_ROW(ROW3L)(K21, K22, K23, K24, K25), \
- MAP_CHUNK(___4_THUMBS), \
- MOD_ROW(ROW3R)(K26, K27, K28, K29, K2A), \
- MAP_CHUNK(___10_ERGO_THUMBS) \
- )
- #define Base_2x6_8_5t6( \
- K01, K02, K03, K04, K05, K06, \
- K07, K08, K09, K0A, K0B, K0C, \
- K11, K12, K13, K14, K15, K16, \
- K17, K18, K19, K1A, K1B, K1C, \
- K21, K22, K23, K24, K25, K26, \
- K27, K28, K29, K2A, K2B, K2C) \
- LAYOUT_VARG( \
- MOD_ROW(ROW1L)(K01, K02, K03, K04, K05, K06), \
- MOD_ROW(ROW1R)(K07, K08, K09, K0A, K0B, K0C), \
- MOD_ROW(ROW2L)(K11, K12, K13, K14, K15, K16), \
- MOD_ROW(ROW2R)(K17, K18, K19, K1A, K1B, K1C), \
- MOD_ROW(ROW3L)(K21, K22, K23, K24, K25, K26), \
- MAP_CHUNK(___4_THUMBS), \
- MOD_ROW(ROW3R)(K27, K28, K29, K2A, K2B, K2C), \
- MAP_CHUNK(___10_ERGO_THUMBS) \
- )
- // All we really need is to add the see through thumbs to the end.
- #define Transient_2x6_8_5( \
- K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, \
- K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, \
- K21, K22, K23, K24, K25, \
- K27, K28, K29, K2A, K2B \
- ) \
- LAYOUT_VARG( \
- ___, K01, K02, K03, K04, K05, \
- K07, K08, K09, K0A, K0B, ___, \
- ___, K11, K12, K13, K14, K15, \
- K17, K18, K19, K1A, K1B, ___, \
- ___, K21, K22, K23, K24, K25, \
- ___4___, \
- K27, K28, K29, K2A, K2B, ___, \
- MAP_CHUNK(___10_ERGO_THUMBS) \
- )
|