mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-25 18:06:34 +06:00
050472a4d0
Co-authored-by: Drashna Jaelre <drashna@live.com>
226 lines
11 KiB
C
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___)
|