mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-25 19:50:01 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			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___)
 | 
