summaryrefslogtreecommitdiffstats
path: root/users/ericgebhart/base_layers
diff options
context:
space:
mode:
Diffstat (limited to 'users/ericgebhart/base_layers')
-rw-r--r--users/ericgebhart/base_layers/accents.h90
-rw-r--r--users/ericgebhart/base_layers/alt.h150
-rw-r--r--users/ericgebhart/base_layers/base_layers.h58
-rw-r--r--users/ericgebhart/base_layers/beakl.h158
-rw-r--r--users/ericgebhart/base_layers/bepo.h114
-rw-r--r--users/ericgebhart/base_layers/carpalx.h46
-rw-r--r--users/ericgebhart/base_layers/dvorak.h73
-rw-r--r--users/ericgebhart/base_layers/gap.h67
-rw-r--r--users/ericgebhart/base_layers/hands_down.h147
-rw-r--r--users/ericgebhart/base_layers/keymaps.txt300
-rw-r--r--users/ericgebhart/base_layers/maks.h61
-rw-r--r--users/ericgebhart/base_layers/qwerty.h69
-rw-r--r--users/ericgebhart/base_layers/toprows.h56
13 files changed, 1389 insertions, 0 deletions
diff --git a/users/ericgebhart/base_layers/accents.h b/users/ericgebhart/base_layers/accents.h
new file mode 100644
index 0000000000..ad575da65c
--- /dev/null
+++ b/users/ericgebhart/base_layers/accents.h
@@ -0,0 +1,90 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+
+// probably best to have e and é on different fingers.
+
+// doesnt work, oled displays garbage
+/* #define CARTE_ACCENTED \ */
+/* carte_de_map(" æœêùì ¿ïüöë ", \ */
+/* " àôèéî ûçñß^", \ */
+/* " âöíúí ") */
+
+// need to figure out a better way to display these on the oled.
+#define CARTE_ACCENTED \
+ carte_de_map(" aoeui ?iuoe ", \
+ " aoeei ucnS^", \
+ " aoiúi ")
+
+#define ___ACCENTED___ \
+ LANG_MAP(_AE, _OE, _ECIR, _UGRV, _IGRV, _IQUE, _IIAE, _UIAE, _OIAE, _EIAE, \
+ _AGRV, _OCIR, _EGRV, _EACU, _ICIR, _UCIR, _CCED, _NTIL, _SS, _DCIR, \
+ _AACU, _ODIA, _IACU, _UACU, _IACU, _SPC, _SPC, _SPC , _SPC, _SPC)
+
+
+// A dead key layer, optimized for Most common,
+// western european.
+#define CARTE_MORTE \
+ carte_de_map(" ˝˘̉ ̛ ˙° ", \
+ "/`^´ ¸¨~¤", \
+ " ,ˇ. ˛µ¯")
+
+#define ___MORTE___ \
+ LANG_MAP(_, _DACU, _BREV, _HOKA, _, _, _HORN, _DOTA, _RNGA, _, \
+ _DSLS, _DGRV, _DCIR, _ACUT, _, _, _CEDL, _DIAE, _DTIL, _CURR, \
+ _, _DCMM, _CARN, _DOTB, _, _, _OGON, _DGRK, _MACR, _)
+
+// Just taking a guess and putting the things I know are most
+// used in easy to use places., not sure about ntil and ss, put
+// them in their dvorak spots on the home row.
+
+/* #define CARTE_ACCENTS_MORTE \ */
+/* carte_de_map(" æœêùì ¿`^´ë ", \ */
+/* " àôèéî ¸çñß~", \ */
+/* " âö,úí ¨ˇ° ") */
+
+#define CARTE_ACCENTS_MORTE \
+ carte_de_map(" aoeui ?`^'e ", \
+ " aoeei ,cnS~", \
+ " ao,ui \"^o")
+
+#define ___ACCENTS_MORTE___ \
+ LANG_MAP(_AE, _OE, _ECIR, _UGRV, _IGRV, _IQUE, _DGRV, _DCIR, _ACUT, _EIAE, \
+ _AGRV, _OCIR, _EGRV, _EACU, _ICIR, _CEDL, _CCED, _NTIL, _SS, _DTIL, \
+ _AACU, _OIAE, _DCMM, _UACU, _IACU, _OGON, _DIAE, _CARN, _RNGA, _HORN)
+
+/* // DEAD layer. */
+/* BP_DCIR // ^ (dead) */
+/* BP_ACUT // ´ (dead) */
+/* BP_DGRV // ` (dead) */
+/* BP_CARN // ˇ (dead) */
+/* BP_DSLS // / (dead) */
+/* BP_BREV // ˘ (dead) */
+/* BP_DIAE // ¨ (dead) */
+/* BP_DTIL // ~ (dead) */
+/* BP_MACR // ¯ (dead) */
+/* BP_CEDL // ¸ (dead) */
+/* BP_RNGA // ° (dead) */
+/* BP_DGRK // µ (dead Greek key) */
+/* BP_OGON // ˛ (dead) */
+/* BP_DACU // ˝ (dead) */
+/* BP_DOTA // ˙ (dead) */
+/* BP_CURR // ¤ (dead) */
+/* BP_HORN // ̛ (dead) */
+/* BP_DCMM // , (dead) */
+/* BP_HOKA // ̉ (dead) */
+/* BP_DOTB // ̣ (dead) */
diff --git a/users/ericgebhart/base_layers/alt.h b/users/ericgebhart/base_layers/alt.h
new file mode 100644
index 0000000000..28cf5ab738
--- /dev/null
+++ b/users/ericgebhart/base_layers/alt.h
@@ -0,0 +1,150 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+// e goes on the left thumb
+#define CARTE_MALTRON \
+ carte_de_map(" qpycb vmuzl", \
+ " anisf ctdor", \
+ " ;/jg, .wk-x e")
+
+#define ___MALTRON___ \
+ LANG_MAP(_Q, _P, _Y, _C, _B, _V, _M, _U, _Z, _L, \
+ _A, _N, _I, _S, _F, _D, _T, _D, _O, _R, \
+ TL_SCLN, TL_SLSH, _J, _G, TL_COMM, TL_DOT, _W, _K, TL_MINS, _X)
+
+#define CARTE_EUCALYN \
+ carte_de_map(" /,.fq aoeiu", \
+ " zxcvw mrdyp", \
+ " gtksn bhjl;")
+
+#define ___EUCALYN___ \
+ LANG_MAP(TL_SLSH, TL_COMM, TL_DOT, _F, _Q, _A, _O, _E, _I, _U, \
+ _Z, _X, _C, _V, _W, _M, _R, _D, _Y, _P, \
+ _G, _T, _K, _S, _N, _B, _H, _J, _L, TL_SCLN)
+
+
+
+// RSTHD
+/* j c y f k | z l , u q = */
+/* r s t h d | m n a i o - */
+/* / v g p b | x w . ; ' */
+/* e */
+
+// need a thumb cluster for this.
+// removed = and -, edge keys if you've got them.
+// e goes on left thumb
+
+#define CARTE_RSTHD \
+ carte_de_map(" jcyfk zl,uq", \
+ " rsthd mnaio", \
+ " /vgpb xw.;' e")
+
+#define ___RSTHD___ \
+ LANG_MAP(_J, _C, _Y, _F, _K, _Z, _L, TL_COMM, _U, _Q, \
+ _R, _S, _T, _H, _D, _M, _N, _A, _I, _O, \
+ _/, _V, _G, _P, _B, _X, _W, TL_DOT, TL_SCLN, TL_QUOT)
+
+#define CARTE_HANDS_UP \
+ carte_de_map(" fyou, kwclp", \
+ " hiea. dtsrn", \
+ " bj'z; vmgxq")
+
+#define ___HANDS_UP___ \
+ LANG_MAP(_F, _Y, _O, _U, TL_COMM, _K, _W, _C, _L, _P, \
+ _H, _I, _E, _A, TL_DOT , _D, _T, _S, _R, _N, \
+ _B, _J, TL_QUOT, _Z, TL_SCLN, _V, _M, _G, _X, _Q)
+
+#define CARTE_WHITE \
+ carte_de_map(" vyd,' jmlu-", \
+ " atheb csnoi", \
+ " pkgwq xrf.z")
+
+#define ___WHITE___ \
+ LANG_MAP(_V, _Y, _D, TL_COMM, TL_QUOT, _J, _M, _L, _U, _MINS, \
+ _A, _T, _H, _E, _B, _C, _S, _N, _O, _I, \
+ _P, _K, _G, _W, _Q, _X, _R, _F, TL_DOT, _Z)
+
+
+#define CARTE_ISRT \
+ carte_de_map(" yclmk zfu,'", \
+ " isrtg pneao", \
+ " qvwdj bh/.x")
+
+#define ___ISRT___ \
+ LANG_MAP(_Y, _C, _L, _M, _K, _Z, _F, _U, TL_COMM, TL_QUOT, \
+ _I, _S, _R, _T, _G, _P, _N, _E, _A, _O, \
+ _Q, _V, _W, _D, _J, _B, _H, TL_SLSH, TL_DOT, _X)
+
+#define CARTE_SOUL \
+ carte_de_map(" qwldp kmuy;", \
+ " srtg fneio", \
+ " zxcvj bh,./")
+
+#define ___SOUL___ \
+ LANG_MAP(_Q, _W, _L, _D, _P, _K, _M, _U, _Y, TL_SCLN, \
+ _A, _S, _R, _T, _G, _F, _N, _E, _I, _O, \
+ _Z, _X, _C, _V, _J, _B, _H, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_NIRO \
+ carte_de_map(" qwudp jfyl;", \
+ " asetg hniro", \
+ " zxcvb km,./")
+
+#define ___NIRO___ \
+ LANG_MAP(_Q, _W, _U, _D, _P, _J, _F, _Y, _L, TL_SCLN, \
+ _A, _S, _E, _T, _G, _H, _N, _I, _R, _O, \
+ _Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_ASSET \
+ carte_de_map(" qwjfg ypul;", \
+ " asetd hnior", \
+ " zxcvb km,./")
+
+#define ___Asset___ \
+ LANG_MAP(_Q, _W, _J, _F, _G, _Y, _P, _U, _L, TL_SCLN, \
+ _A, _S, _E, _T, _D, _H, _N, _I, _O, _R, \
+ _Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_WHORF \
+ carte_de_map("flhdm vwou,", \
+ "srntk gyaei", \
+ "xjbzq pc';. ")
+
+#define ___WHORF___ \
+ LANG_MAP(_F, _L, _H, _D, _M, _V, _W, _O, _U, TL_COMM, \
+ _S, _R, _N, _T, _K, _G, _Y, _A, _E, _I, \
+ _X, _J, _B, _Z, _Q, _P, _C, TL_QUOT, TL_SCLN, TL_DOT )
+
+#define CARTE_WHORF6 \
+ carte_de_map("vlhkj gwou.", \
+ "srntk ydeai", \
+ "xqbfz pc',; ")
+
+#define ___WHORF6___ \
+ LANG_MAP(_V, _L, _H, _D, _M, _G, _W, _O, _U, TL_DOT, \
+ _S, _R, _N, _T, _K, _Y, _D, _E, _A, _I, \
+ _X, _Q, _B, _F, _Z, _P, _C, TL_QUOT, TL_COMM, TL_SCLN )
+
+/* rsht/iena */
+/* jfldv @uopq */
+/* zrshtg .iena: */
+/* xcmwk /y,b? */
+
+// pine
+/* y l r d w j m o u , */
+/* c s n t g p h a e i */
+/* x z q v k b f ' / . */
diff --git a/users/ericgebhart/base_layers/base_layers.h b/users/ericgebhart/base_layers/base_layers.h
new file mode 100644
index 0000000000..ee784473fb
--- /dev/null
+++ b/users/ericgebhart/base_layers/base_layers.h
@@ -0,0 +1,58 @@
+#pragma once
+/*
+ Copyright 2018-2022 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 "keycodes.h"
+#include "lang_map.h"
+#include "oled_stuff.h"
+
+
+// an empty template.
+
+/* #define CARTE_EMPTY \ */
+/* carte_de_map(" ", \ */
+/* " ", \ */
+/* " ") */
+/* */
+/* #define ___EMPTY___ \ */
+/* LANG_MAP(_, _, _, _, _, _, _, _, _, _, \ */
+/* _, _, _, _, _, _, _, _, _, _, \ */
+/* _, _, _, _, _, _, _, _, _, _) */
+
+
+// dvorak, capewell-dvorak, ahei, and boo.
+#include "dvorak.h"
+//qwerty, workman, norman,
+#include "qwerty.h"
+// Colemak, halmak, minimak, etc.
+#include "maks.h"
+// eucalyn, maltron
+#include "alt.h"
+// mtgap, ctgap, apt
+#include "gap.h"
+// some hands down.
+#include "hands_down.h"
+// some beakls.
+#include "beakl.h"
+// bepo, optimot, beakl19bis, godox-fr?.
+#include "bepo.h"
+// some carpalxs.
+#include "carpalx.h"
+// The symbol, number function rows for all the above.
+#include "toprows.h"
+// some layers with accents and dead keys.
+#include "accents.h"
diff --git a/users/ericgebhart/base_layers/beakl.h b/users/ericgebhart/base_layers/beakl.h
new file mode 100644
index 0000000000..58b5fa4371
--- /dev/null
+++ b/users/ericgebhart/base_layers/beakl.h
@@ -0,0 +1,158 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+// beakl, balanced effort key layout.
+// Beakl 15 and 19 are somewhat more related.
+// Beakl-wi is the latest. It feels a little bit more like a system.
+
+
+// Remember the - and ; outside pinky keys.
+// Or use the 6 size.
+// Both are on the symbol layer too. So you
+// wont lose them at least.
+// KC_BK_COMM, KC_BK_QUOT, KC_BK_DOT - Beakl->Qwerty
+// BP_BK_COMM, BP_BK_QUOT, BP_BK_DOT - Beakl->Bepo
+// take care of the different shifted chars.
+
+
+/* BEAKL 27 (main layer): */
+/* // altered shifted pairs: dot = .` comma = ,? dquot = !" */
+/* Alt target is BK2 */
+
+/* 32104 76598 */
+/* qhoux gcmrv */
+/* yiea. dstnb */
+/* j",k' wflpz */
+
+/* BEAKL 27 (shift layer): */
+/* !@$#% ^(*)& */
+/* QHOUX GCMRV */
+/* YIEA` DSTNB */
+/* J!?K' WFLPZ */
+
+
+#define CARTE_BEAKL27 \
+ carte_de_map(" qhoux gcmrz ", \
+ " yiea. dstnb ", \
+ " j\",k' wflpv ")
+
+// Alt target is BK
+#define ___BEAKL27___ \
+ LANG_MAP(_Q, _H, _O, _U, _X, _G, _C, _M, _R, _Z, \
+ _Y, _I, _E, _A, TL_DOT, _D, _S, _T, _N, _B, \
+ _J, TL_EXLM, TL_COMM, _K, TL_QUOT, _W, _F, _L, _P, _V)
+
+/* BEAKL 15 (main layer): */
+// altered shifted pairs: quot = '` comma = ,! dot = .@
+/* 40123 76598 */
+#define CARTE_BEAKL15 \
+ carte_de_map(" qhoux gcrfz ", \
+ " yiea. dstnb ", \
+ " j/,k' wmlpv ")
+
+// Alt target is BK
+#define ___BEAKL15___ \
+ LANG_MAP(_Q, _H, _O, _U, _X, _G, _C, _R, _F, _Z, \
+ _Y, _I, _E, _A, TL_DOT, _D, _S, _T, _N, _B, \
+ _J, _SLSH, TL_COMM, _K, TL_QUOT, _W, _M, _L, _P, _V)
+
+/* BEAKL 19 */
+// Beakl 19. scores better than 15, better in french also.
+// Both are lots better than dvorak or bepo.
+
+/* same symbols and keypad as 15 */
+/* number row is different */
+/* 32104 76598 */
+
+// Alt target is BK
+#define CARTE_BEAKL19 \
+ carte_de_map(" q.ouj wdnm, ", \
+ " haeik gsrtp ", \
+ " z'/yx bclfv ")
+
+#define ___BEAKL19___ \
+ LANG_MAP(_Q, _DOT, _O, _U, _J, _W, _D, _N, _M, TL_COMM, \
+ _H, _A, _E, _I, _K, _G, _S, _R, _T, _P, \
+ _Z, _QUOT, _SLSH, _Y, _X, _B, _C, _L, _F, _V)
+
+//BEAKL 19bis - original.
+// the é and è were simply added for analysis not real use.
+// even so, this layout scores well for french, better than
+// bepo and mtgap
+/* qyouz wdnck */
+/* -hiea, gtrsp; */
+/* èj'é.x vmlfb */
+
+// A 3x12
+//BEAKL 19bis mod z.
+// French optimised with some english.
+// This version rearranges things a little based on fequency.
+// Since it needs 3x12, I filled in the corners and removed ;.
+// Leaving y where it is. the o and the e might cause sfbs.
+// Put é on a different finger from e.
+// swap z, e's, add à, ^, and ê, swap ; for -.
+// it might be beneficial to swap w and à, as à is much more frequent than w
+#define CARTE_BEAKL19bis \
+ carte_de_map(" àqyoué wdnck^ ", \
+ " ;hiea, gtrsp- ", \
+ " zj'è.x vmlfbê ")
+
+#define ___BEAKL19bis_3x12___ \
+ LANG_MAP6( \
+ _AGRV, _Q, _Y, _O, _U, _EACU, _W, _D, _N, _C, _K, _DCIR, \
+ _SCLN, _H, _I, _E, _A, _COMM, _G, _T, _R, _S, _P, _MINS, \
+ _Z, _J, _QUOT, _EGRV, _DOT, _X, _V, _M, _L, _F, _B, _ECIR)
+
+
+// Beakl Wi. This is the most current beakl this size. 18/01/2022.
+// Nothing on the 6th outer columns but layer toggle buttons. All 6.
+// altered shifted pairs: dot = .` comma = ,~ colon = :;
+// i is on the left thumb.
+/* ;you- ctrsv */
+/* qheaw gdnmz */
+/* j,.k' bplfx */
+/* i */
+
+#define CARTE_BEAKLWI \
+ carte_de_map(" ;you- ctrsv ", \
+ " qheaw gdnmz ", \
+ " j,.k' bplfx i")
+
+#define ___BEAKLWI___ \
+ LANG_MAP(TL_COLN, _Y, _O, _U, _MINS, _C, _T, _R, _S, _V, \
+ _Q, _H, _E, _A, _W, _G, _D, _N, _M, _Z, \
+ _J, TL_COMM, TL_DOT, _K, _QUOT, _B, _P, _L, _F, _X)
+
+// Thumbs.
+#define ___BEAKLWI_CRKBD_THUMBS___ LT_ESC, LT_I, LT_TAB, LT_ENT, LT_SPC, LT_BSPC
+
+// My version, loses KC_mins, because it's easier on my symbol layer.
+// put I in it's dvorak spot instead of thumbs, move W up to make room for I.
+// I'd rather have w and i on different fingers. One domino...
+
+// beakl-wi - mod iw-
+
+#define CARTE_BEAKLWIa \
+ carte_de_map(" ;youw ctrsv ", \
+ " qheai gdnmz ", \
+ " j,.k' bplfx ")
+
+// Alt target is BKW
+#define ___BEAKLWIa___ \
+ LANG_MAP(TL_COLN, _Y, _O, _U, _W, _C, _T, _R, _S, _V, \
+ _Q, _H, _E, _A, _I, _G, _D, _N, _M, _Z, \
+ _J, TL_COMM, TL_DOT, _K, _QUOT, _B, _P, _L, _F, _X)
diff --git a/users/ericgebhart/base_layers/bepo.h b/users/ericgebhart/base_layers/bepo.h
new file mode 100644
index 0000000000..64f56ec9ab
--- /dev/null
+++ b/users/ericgebhart/base_layers/bepo.h
@@ -0,0 +1,114 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+// Maps based on BEPO Mostly 3x12
+
+// BEAKL 19bis - English with French optimisations.
+// Least used letters in french xzykw QJÀ are fairly high.
+// XZ are good choices for pushing out, from english and french,
+// or using chords in both languages.
+
+// Note: The percentages came from different sources so do not
+// match between languages.
+// French
+/* Q 0.89 % */
+/* J 0.71 % */
+/* À 0.54 % */
+/*-------------*/
+/* X 0.42 % */
+/* È 0.35 % */
+/* Ê 0.24 % */
+/* Z 0.21 % */
+/* Y 0.19 % */
+/* K 0.16 % */
+/* Ô 0.07 % */
+/* Û 0.05 % */
+/* W 0.04 % */
+
+/* Least used letters in english. */
+/* X 0.2902% 1.48 */
+/* Z 0.2722% 1.39 */
+/* J 0.1965% 1.00 */
+/* Q 0.1962% (1) */
+
+
+// OPtimot by @Pyjam.
+/* àjoéb fdl’qxz */
+/* aieu, ptsrn^ç */
+/* êkyè.w gcmhvz */
+
+// -- rearranged z, and ç to get 3x12
+#define CARTE_OPTIMOT \
+ carte_de_map(" çàjoéb fdl’qx ", \
+ " aieu, ptsrn^ ", \
+ " êkyè.w gcmhvz ")
+
+#define ___OPTIMOT_3x12___ \
+ LANG_MAP6( \
+ _CCED, _AGRV, _J, _O, _EACU, _B, _F, _D, _L, _QUOT, _Q, _X, \
+ _TAB, _A, _I, _E, _U, _COMM, _P, _T, _S, _R, _N, _DCIR, \
+ _ECIR, _K, _Y, _EGRV, _DOT, _W, _G, _C, _M, _H, _V, _Z)
+
+// no z or x. combos exist for them.
+#define CARTE_OPTIMOT_COMPACT \
+ carte_de_map(" àjoéb fdl’q ", \
+ " aieu, ptsrn ", \
+ " kyè.w gcmhv ")
+
+#define ___OPTIMOT_3x10___ \
+ LANG_MAP6( \
+ _AGRV, _J, _O, _EACU, _B, _F, _D, _L, _QUOT, _Q, \
+ _A, _I, _E, _U, _COMM, _P, _T, _S, _R, _N, \
+ _K, _Y, _EGRV, _DOT, _W, _G, _C, _M, _H, _V,)
+
+// Maybe Use this for C
+//BP_C_CCED = MT(BP_CCED, BP_C)
+
+// BEPO
+
+// No quot, à or ç
+/* bépoè vdljz */
+/* auie, ctsrn */
+/* myx.k qghfw */
+#define CARTE_BEPOc \
+ carte_de_map(" bépoè vdljz", \
+ " auie, ctsrn", \
+ " myx.k qghfw")
+
+#define ___BEPOc_3x10___ \
+ LANG_MAP( \
+ _B, _EACU, _P, _O, _EGRV, _V, _D, _L, _J, _Z, \
+ _A, _U, _I, _E, _COMM, _C, _T, _S, _R, _N, \
+ _M, _Y, _X, _DOT, _K, _Q, _G, _H, _F, _W)
+
+
+#define CARTE_BEPO \
+ carte_de_map(" çbépoè ^vdljz ", \
+ " auie, ctsrnm ", \
+ " êàyx.k ’qghfw ")
+
+#define ___BEPO_3x12___ \
+ LANG_MAP6(_CCED, _B, _EACU, _P, _O, _EGRV, _DCIR, _V, _D, _L, _J, _Z, \
+ _TAB, _A, _U, _I, _E, _COMM, _C, _T, _S, _R, _N, _M, \
+ _ECIR, _AGRV, _Y, _X, _DOT, _K, _QUOT, _Q, _G, _H, _F, _W)
+
+// dont like this one much.
+/* #define ___GODOX_3x12___ \ */
+/* LANG_MAP6(___, _AGRV, _B, _EACU, _dot, _mins, _DCIR, _V, _L, _M, _X, _CCED, \ */
+/* ___, _O, _U, _I, _A, _J, _G, _T, _S, _N, _R, _F, \ */
+/* ___, _Q, _Y, _EGRV, _P, _K, _W, _D, _UP, _H, _C, _Z) */
+/* // E goes on left thumb. */
diff --git a/users/ericgebhart/base_layers/carpalx.h b/users/ericgebhart/base_layers/carpalx.h
new file mode 100644
index 0000000000..ae2ed708a5
--- /dev/null
+++ b/users/ericgebhart/base_layers/carpalx.h
@@ -0,0 +1,46 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+#define CARTE_CARPALX_QFMLWY \
+ carte_de_map(" qfmlw yuobj", \
+ " dstnr iaeh;", \
+ " zvgcx pk,./")
+
+#define ___CARPALX_QFMLWY___ \
+ LANG_MAP(_Q, _F, _M, _L, _W, _Y, _U, _O, _B, _J, \
+ _D, _S, _T, _N, _R, _I, _A, _E, _H, TL_SCLN, \
+ _Z, _V, _G, _C, _X, _P, _K, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_CARPALX_QFMLWB \
+ carte_de_map(" qgmlw byuv;", \
+ " dstnr iaeoh", \
+ " zxcfj kp,./")
+
+#define ___CARPALX_QGMLWB___ \
+ LANG_MAP(_Q, _G, _M, _L, _W, _B, _Y, _U, _V, TL_SCLN, \
+ _D, _S, _T, _N, _R, _I, _A, _E, _O, _H, \
+ _Z, _X, _C, _F, _J, _K, _P, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_CARPALX_QGMLWY \
+ carte_de_map(" qgmlw yfub;", \
+ " dstnr iaeoh", \
+ " zxcvj kp,./")
+
+#define ___CARPALX_QGMLWY___ \
+ LANG_MAP(_Q, _G, _M, _L, _W, _Y, _F, _U, _B, TL_SCLN, \
+ _D, _S, _T, _N, _R, _I, _A, _E, _O, _H, \
+ _Z, _X, _C, _V, _J, _K, _P, TL_COMM, TL_DOT, TL_SLSH)
diff --git a/users/ericgebhart/base_layers/dvorak.h b/users/ericgebhart/base_layers/dvorak.h
new file mode 100644
index 0000000000..8deee2005c
--- /dev/null
+++ b/users/ericgebhart/base_layers/dvorak.h
@@ -0,0 +1,73 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+
+#define CARTE_DVORAK \
+ carte_de_map(" ',.py fgcrl ", \
+ " aoeui dhtns ", \
+ " ;qjkx bmwvz ")
+
+#define ___DVORAK___ \
+ LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _F, _G, _C, _R, _L, \
+ _A, _O, _E, _U, _I, _D, _H, _T, _N, _S, \
+ TL_SCLN, _Q, _J, _K, _X, _B, _M, _W, _V, _Z)
+
+#define CARTE_DVORAK_RLC_IU \
+ carte_de_map(" ',.py fgrlc ", \
+ " aoeiu dhtns ", \
+ " ;qjkx bmwvz ")
+
+#define ___DVORAK_RLC_IU___ \
+ LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _F, _G, _R, _L, _C, \
+ _A, _O, _E, _I, _U, _D, _H, _T, _N, _S, \
+ TL_SCLN, _Q, _J, _K, _X, _B, _M, _W, _V, _Z)
+
+#define CARTE_BOO \
+ carte_de_map(" ,.ucv qfdly", \
+ " aoesg bntri", \
+ " ;x'wz phmkj")
+
+#define ___BOO___ \
+ LANG_MAP( TL_COMM, TL_DOT, _U, _C, _V, _Q, _F, _D, _L, _Y, \
+ _A, _O, _E, _S, _G, _B, _N, _T, _R, _I, \
+ TL_SCLN, _X, TL_QUOT, _W, _Z, _P, _H, _M, _K, _J)
+
+#define CARTE_CAPEWELL_DVORAK \
+ carte_de_map( " ',.py qfgrk", \
+ " oaeiu dhtns", \
+ " zxcvj lmwb;")
+
+#define ___CAPEWELL_DVORAK___ \
+ LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _Q, _F, _G, _R, _K, \
+ _O, _A, _E, _I, _U, _D, _H, _T, _N, _S, \
+ _Z, _X, _C, _V, _J, _L, _M, _W, _B, TL_SCLN)
+
+//ahei - derived from dvorak.
+// x moved to left side. j on pinky.
+/*;pouyq gdlm/= */
+/* ahei, fstnr- */
+/* j'k.x bcwvz */
+
+#define CARTE_AHEI \
+ carte_de_map("pouyq gdlm/", \
+ "ahei, fstnr", \
+ "j'k.x bcwvz")
+
+#define ___AHEI___ \
+LANG_MAP(_P, _O, _U, _Y, _Q, _G, _D, _L, _M, TL_SLSH, \
+ _A, _H, _E, _I, TL_COMM, _F, _S, _T, _N, _R, \
+ _J, TL_QUOT, _K, TL_DOT, _X, _B, _C, _W, _V, _Z)
diff --git a/users/ericgebhart/base_layers/gap.h b/users/ericgebhart/base_layers/gap.h
new file mode 100644
index 0000000000..76310bc6f9
--- /dev/null
+++ b/users/ericgebhart/base_layers/gap.h
@@ -0,0 +1,67 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+
+// an alternate I found.
+/* Reference: MTGAP */
+/* y p o u - | b d l c k j */
+/* i n e a , | m h t s r v */
+/* ( " ' . _ | ) f w g x */
+/* z */
+
+#define CARTE_MTGAP \
+ carte_de_map(" ypouj kdlcw", \
+ " inea, mhtsr", \
+ " qz/.; bfgvx")
+
+#define ___MTGAP___ \
+ LANG_MAP(_Y, _P, _O, _U, _J, _K, _D, _L, _C, _W, \
+ _I, _N, _E, _A, TL_COMM, _M, _H, _T, _S, _R, \
+ _Q, _Z, TL_SLSH, TL_DOT, TL_SCLN, _B, _F, _G, _V, _X)
+
+/* //APT v3*/
+/* https://github.com/Apsu/APT */
+#define CARTE_APT \
+ carte_de_map(" wgdfb qluoy", \
+ " rsthk jneai; ", \
+ " xcmpv z,.'/")
+
+#define ___APT___ \
+ LANG_MAP(_W, _G, _D, _F, _B, _Q, _L, _U, _O, _Y, \
+ _R, _S, _T, _H, _K, _J, _N, _E, _A, _I, TL_SCLN, \
+ _X, _C, _M, _P, _V, _Z, TL_COMM, TL_DOT, TL_QUOT, TL_SLSH)
+
+
+#define CARTE_CTGAP \
+ carte_de_map(" vplcf kuoyj", \
+ " rntsd 'aeih", \
+ " zbmgw x,.;q")
+
+#define ___CTGAP___ \
+ LANG_MAP(_V, _P, _L, _C, _F, _K, _U, _O, _Y, _J, \
+ _R, _N, _T, _S, _D, TL_QUOT, _A, _E, _I, _H, \
+ _Z, _B, _M, _G, _W, _X, TL_COMM, TL_DOT, TL_SCLN, _Q)
+
+#define CARTE_CANARY \
+ carte_de_map( " wlypb zfou'", \
+ " crstg mneia", \
+ " qjvd kxh/,.")
+
+#define ___CANARY___ \
+ LANG_MAP(_W, _L, _Y, _P, _B, _Z, _F, _O, _U, TL_QUOT, \
+ _C, _R, _S, _T, _G, _M, _N, _E, _I, _A, \
+ _Q, _J, _V, _D, _K, _X, _H, TL_SLSH, TL_COMM, TL_DOT)
diff --git a/users/ericgebhart/base_layers/hands_down.h b/users/ericgebhart/base_layers/hands_down.h
new file mode 100644
index 0000000000..0841a358d2
--- /dev/null
+++ b/users/ericgebhart/base_layers/hands_down.h
@@ -0,0 +1,147 @@
+#pragma once
+/*
+ Copyright 2018-2022 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/>.
+*/
+
+// https://sites.google.com/alanreiser.com/handsdown/home
+
+// The only 3x12 layout. The rest are 3x10.
+#define CARTE_HD_NEU \
+ carte_de_map( " wfmpv /.q\"'z", \
+ " rsntb ,aeihj", \
+ " xcldg -uoykK")
+
+#define ___HD_NEU___ \
+ LANG_MAP(_SML_NAV, _W, _F, _M, _P, _V , TL_SLSH, TL_DOT, _Q, TL_DQUO, TL_QUOT, _Z, \
+ _TAB, _R, _S, _N, _T, _B , TL_COMM, _A, _E, _I, _H, _J, \
+ _OS_ACCENT, _X, _C, _L, _D, _G , TL_MINS, _U, _O, _Y, _K, _SML_KEYPAD)
+
+
+// modified to fit 3x10.
+#define CARTE_HD_NEU_NARROW \
+ carte_de_map(" xcldb zuoyq", \
+ " rsntg ,aeih", \
+ " wfmpv ;./jk")
+
+#define ___HD_NEU_NARROW___ \
+ LANG_MAP(_X, _C, _L, _D, _B, _Z, _U, _O, _Y, _Q, \
+ _R, _S, _N, _T, _G, TL_COMM, _A, _E, _I, _H, \
+ _W, _F, _M, _P, _V, _SCLN, TL_DOT, TL_SLSH, _J, _K)
+
+
+#define CARTE_HD_REF \
+ carte_de_map(" qchpv kyoj/", \
+ " rsntg wueia", \
+ " xmldb zf',.")
+
+#define ___HD_REF___ \
+ LANG_MAP(_Q, _C, _H, _P, _V, _K, _Y, _O,