qmk-firmware/users/ericgebhart/layers/symbols.h
Eric Gebhart 050472a4d0
Eric Gebhart user space and keymaps (#17487)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-11-11 23:09:41 +00:00

226 lines
11 KiB
C

/*
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/>.
*/
/******************************************************************/
/* */
/* Symbol layers: */
/* */
/* The BEAKL15 Symbol layer with or without additions. */
/* */
/* There is the offical beakl symbol layer, an extended symbol */
/* layer which is expanded with: !?@`'/-;. */
/* */
/* Placing these 8 keys in the pinky and index corners */
/* at the edges of the, 3x3, BEAKL home Region. */
/* */
/* Beakl has these keys in it's base layer which isn't the case */
/* for other layouts like dvorak, colemak, etc. */
/* */
/* The third layer moves /:? to more accessible places. */
/* to make vi keybindings more accessible. */
/* */
/* Note that there are 2 widths. 12 and 10. The wider layer adds */
/* - and ; to the middle row edges. */
/* */
/* Official: */
/* <$> [_] */
/* - \(")# %{=}| ; */
/* :*+ &^~ */
/* */
/* not yet implemented */
/* BEAKL27 (punctuation layer): */
/* ↹@$#↹ ~^` */
/* ↹<=> [_] */
/* \(-)+ %{;}! */
/* *:/⏎ |~& */
/* */
/* */
/* BEAKL Extended symbol layer */
/* Expanded with: !?@`'/-; */
/* */
/* A: */
/* `<$>' ?[_]- */
/* - \(")# %{=}| ; */
/* @:*+; !&^~/ */
/* */
/* Optimized for Vi. */
/* B: */
/* */
/* `<$>' ?[_]- */
/* - \(")# !{:}/ ; */
/* @=*+; %&^~| */
/* */
/* C: */
/* */
/* `<$>' ?[_-] */
/* - \("#) !{:/} ; */
/* @=*+; %&^~| */
/* */
/* */
/* Both ; and ' could have found their dvorak positions. Analysis showed */
/* that only caused pinky overuse. Rotating the symbols around Put better */
/* keys on the index finger which showed a huge improvement in efficiency. */
/* The same is true of the exclamation point. */
/* */
/* Beakl Wi */
/* This Symbol layer does not improve on the above extended symbol */
/* layers in my opinon, for my usage. */
/* The original symbol was the Left side with defined/but/transparent */
/* right. The regex layer was the opposite. I combined them into one, I am */
/* not sure of the functionality that might be lost due to that, but they */
/* are defined as original sans extra tap dance functions. It would be easy to */
/* make two layers with transparent right and left. There is duplication */
/* of | and *. */
/* Symbols on the left */
/* .*&+ */
/* ?!/| */
/* <>%@ */
// regex on the right
/* *[^] */
/* ?($) */
/* |{#} */
// Altogether
/* .*&+ *[^] */
/* ?!/| ?($) */
/* <>%@ |{#} */
/******************************************************************/
// Left
#define ___SB_L1___ _OCLTGT, _DLR, _GT
#define ___SB_L2___ _BSLS, _OCPRN, _OCDQUO, _RPRN, _HASH
#define ___SB_L2c___ _BSLS, _OCPRN, _OCDQUO, _HASH, _RPRN
#define ___SB_L3___ _COLN, _ASTR, _PLUS
// Right
#define ___SB_R1___ _OCBRC, _UNDS, _RBRC
#define ___SB_R1c___ _OCBRC, _UNDS, _MINS
#define ___SB_R2___ _PERC, _OCCBR, _EQL, _RCBR, _PIPE
#define ___SB_R3___ _AMPR, _CIRC_ND, _TILD_ND
// a and b... left and right.
#define ___SB_L3b___ _EQL, _ASTR, _PLUS
#define ___SB_R2a___ _PERC, _OCCBR, _EXLM, _RCBR, _PIPE
#define ___SB_R2b___ _EXLM, _OCCBR, _COLN, _RCBR, _SLSH
#define ___SB_R2c___ _EXLM, _OCCBR, _COLN, _SLSH, _RCBR
// ---------------------------
// ---------------------------
#define CARTE_SYMB_BEAKL \
carte_de_map(" <$> [_] ", \
"-\\(\")# %{=}|;", \
" :*+ &^~ ")
#define ___SYMB_BEAKL_3x10___ \
CHUNK_LANG_MAP(_TRNS, ___SB_L1___, _TRNS, _TRNS, ___SB_R1___, _TRNS, \
___SB_L2___, ___SB_R2___, \
_TRNS, ___SB_L3___, _TRNS, _TRNS, ___SB_R3___, _TRNS)
// ---------------------------
// A: Extended.
#define CARTE_SYMB_BEAKLA \
carte_de_map(" `<$>' ?[_]-", \
" -\\(\")# %{:}|;", \
" @=*+; !&^~/")
#define ___SYMB_BEAKLA_3x10___ \
CHUNK_LANG_MAP(_OCGRV, ___SB_L1___, _OCQUOT, _QUES, ___SB_R1___, _MINS, \
___SB_L2___, ___SB_R2a___, \
_AT, ___SB_L3___, _SCLN, _EXLM, ___SB_R3___, _SLSH)
// ---------------------------
// B: Extended & Vi
#define CARTE_SYMB_BEAKLB \
carte_de_map(" `<$>' ?[_]-", \
" -\\(\")# !{:}/;", \
" @=*+; %&^~|")
#define ___SYMB_BEAKLB_3x10___ \
CHUNK_LANG_MAP(_OCGRV, ___SB_L1___, _OCQUOT, _QUES, ___SB_R1___, _MINS, \
___SB_L2___, ___SB_R2b___, \
_AT, ___SB_L3b___, _SCLN, _PERC, ___SB_R3___, _PIPE)
// ---------------------------
// C: Extended & Vi, move closing braces to pinky, seldom used.
// because of tap hold - open_openclose feature.
// Also emacs which mostly closes them.
#define CARTE_SYMB_BEAKLC \
carte_de_map(" `<$>' ?[_-]", \
" -\\(\"#) !{:/};", \
" @=*+; %&^~|")
#define ___SYMB_BEAKLC_3x10___ \
CHUNK_LANG_MAP(_OCGRV, ___SB_L1___, _OCQUOT, _QUES, ___SB_R1c___, _RBRC, \
___SB_L2c___, ___SB_R2c___, \
_AT, ___SB_L3b___, _SCLN, _PERC, ___SB_R3___, _PIPE)
// wants ( and ) on the left thumb.
#define CARTE_SYMB_MIRYOKU \
carte_de_map(" {&.(} ", \
" :$%^+ ", \
" ~!@#| ")
#define ___SYMB_MIRYOKU_3x10___ \
CHUNK_LANG_MAP(_OCCBR, _AMPR, _DOT, _OCPRN, _RCBR, ____5_, \
_COLN, _DLR, _PERC, _CIRC_ND, _PLUS, ____5_, \
_TILD_ND, _EXLM, _AT, _HASH, _PIPE, ____5_)
// ---------------------------
// WI: the Beakl Wi definition.
#define ___SYMB_BKL_WI_L1___ ___, _DOT, _ASTR, _AMPR, _PLUS
#define ___SYMB_BKL_WI_L2___ ___, _QUES, _EXLM, _SLSH, _PIPE
#define ___SYMB_BKL_WI_L3___ ___, _LT, _GT, _PERC, _AT
#define ___SYMB_BKL_WI_R1___ _ASTR, _OCBRC, _CIRC_ND, _RBRC, ___
#define ___SYMB_BKL_WI_R2___ _QUES, _OCPRN, _DLR , _RPRN, ___
#define ___SYMB_BKL_WI_R3___ _PIPE, _OCCBR, _HASH, _RCBR, ___
#define CARTE_SYMB_BEAKLWI \
carte_de_map(" .*&+ *[^] ", \
" ?!/| ?($) ", \
" <>%@ |{#} ")
#define ___SYMB_BEAKL_WI_3x10___ \
CHUNK_LANG_MAP(___SYMB_BKL_WI_L1___, ___SYMB_BKL_WI_R1___, \
___SYMB_BKL_WI_L2___, ___SYMB_BKL_WI_R2___, \
___SYMB_BKL_WI_L3___, ___SYMB_BKL_WI_R3___)
// ---------------------------
// Neo symbol layer
#define ___SYMB_NEO_L1___ ___, _OCDQUOT, _UNDS, _OCLBRC, _RBRC, _CIRC_ND
#define ___SYMB_NEO_L2___ ___, _SLSH, _MINS, _OCLCBR, _RCBR, _ASTR
#define ___SYMB_NEO_L3___ ___, _HASH, _DLR, _PIPE, _TILD_ND, _OCGRV
#define ___SYMB_NEO_R1___ _EXLM, _LT, _GT, _EQL, _AMPR
#define ___SYMB_NEO_R2___ _QUES, _OCPRN, _RPRN , _QUOT, _COLN
#define ___SYMB_NEO_R3___ _PLUS, _PERC, _BSLS, _AT, ___
#define CARTE_SYMB_NEO \
carte_de_map("\"_[]^ !<>=&", \
"/-{}* ?()':", \
"#$|~` +%\@")
#define ___SYMB_NEO_3x10___ \
CHUNK_LANG_MAP(___SYMB_NEO_L1___, ___SYMB_NEO_R1___, \
___SYMB_NEO_L2___, ___SYMB_NEO_R2___, \
___SYMB_NEO_L3___, ___SYMB_NEO_R3___)