mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-25 10:44:59 +06:00
e865cab48e
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com> Co-authored-by: Drashna Jael're <drashna@live.com>
678 lines
39 KiB
C
Executable File
678 lines
39 KiB
C
Executable File
#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 "core_keys.h"
|
|
/*********************************************************************/
|
|
/* Non-Base Layer Definitions. */
|
|
/* */
|
|
/* Keypads, sympads, funcpads, symbols, RGB, Layers, Controls, etc. */
|
|
/* Qwerty and Bepo versions exist as needed. */
|
|
/* */
|
|
/* This file defines every auxillary layer I use on every keyboard */
|
|
/* Ergodox, keebio/viterbi, xd75, rebound, crkbd, morpho, dactyl,.. */
|
|
/*********************************************************************/
|
|
/********************************************************************************/
|
|
/* The following Transient/Non-Base Layers are provided within. */
|
|
/* Each layer is named with the size of Keymatrix it has entries for. */
|
|
/* 3x12 or 4x12 are usual for these. Splitting is managed in the macros as */
|
|
/* needed. BP indicates the Bepo equivalent to the Qwerty layer when needed. */
|
|
/********************************************************************************/
|
|
/* */
|
|
/* Explore below to see what they all are. */
|
|
/* Naming gives the sizes of things, a prefix number is the length. */
|
|
/* BP is the bepo version of things. */
|
|
/* BKL is the beakl 15 version of a layout or chunk. */
|
|
/* C on the end of a name means its a compact version of something. */
|
|
/* Compact meaning for use on a 3 row layout. */
|
|
/* */
|
|
/* TOPROWS - numbers, symbols, functions, all on one layer. */
|
|
/* ___TOPROWS_3x12___ */
|
|
/* ___TOPROWS_BP_3x12___ */
|
|
/* // just numbers on the home row */
|
|
/* ___NUM_HOME_BEAKL_3x12___ */
|
|
/* ___NUM_HOME_BEAKL_BP_3x12___ */
|
|
/* ___NUM_HOME_3x12___ */
|
|
/* ___NUM_HOME_BP_3x12___ */
|
|
/* */
|
|
/* KEYPADS/FUNCPADS. */
|
|
/* ___KEY_BKL_FUNC_4x12___ -- The BEAKL15 Keypad with a Funcpad on the right */
|
|
/* ___KEY_BKL_FUNC_BP_4x12___ */
|
|
/* ___FUNC_KEYPAD_4x12___ -- A Funcpad and a keypad */
|
|
/* ___FUNC_KEYPAD_BP_4x12___ -- For Bepo */
|
|
/* */
|
|
/* // Compact Funcpad and keypad, 3x12 */
|
|
/* ___KP_C_3x12___ */
|
|
/* ___KP_C_BP_3x12___ */
|
|
/* ___KP_C_BKL_FUNC_3x12___ -- BEAKL key/func pads. */
|
|
/* ___KP_C_BKL_FUNC_BP_3x12___ */
|
|
/* */
|
|
/* SYMBOLS -Beakl or Beakl extended */
|
|
/* ___SYMB_BEAKL_3x12___ */
|
|
/* ___SYMB_BEAKL_BP_3x12___ */
|
|
/* */
|
|
/* Beakl extended symbol layer with additional corner symbols. */
|
|
/* For use with non-beakl base layers. */
|
|
/* ___SYMB_BEAKLA_3x12___ */
|
|
/* ___SYMB_BEAKLA_BP_3x12___ */
|
|
/* For use with vi bindings optimized */
|
|
/* ___SYMB_BEAKLB_3x12___ */
|
|
/* ___SYMB_BEAKLB_BP_3x12___ */
|
|
/* */
|
|
/* NAVIGATION */
|
|
/* ___NAV_3x12___ */
|
|
/* ___NAV_4x12___ */
|
|
/* */
|
|
/* CONTROLS */
|
|
/* ___RGB_3x12___ */
|
|
/* ___ADJUST_3x12___ */
|
|
/* ___LAYERS_3x12___ */
|
|
/********************************************************************************/
|
|
/*********************************************************************/
|
|
/* XXXXXX Layer chunk -- These are the final layers. */
|
|
/* */
|
|
/* Each section defines the necessary pieces to create a layer. */
|
|
/* It builds them up into consistently shaped lists for the layout */
|
|
/* wrapper. */
|
|
/* */
|
|
/* Each Section ends with a _Layer Chunk_. This is so the */
|
|
/* layer can be easily given to the Layout Wrapper macros which */
|
|
/* takes a list of keys in lengths of 2x3x5, 2x3x6, 2x4x5, or 2x4x6. */
|
|
/* */
|
|
/* All of my keyboard definitions use these same chunks with similar */
|
|
/* macros. The differences between keyboards are all managed in the */
|
|
/* macro. Here we just have nice rectangular sets of keys to */
|
|
/* complete a layout. */
|
|
/*********************************************************************/
|
|
|
|
|
|
/*******************************************************************/
|
|
/* A Top Rows layer. Pick your parts. Bepo and Qwerty */
|
|
/* */
|
|
/* This is, to me, a stop gap layer. If I need symbols, numbers or */
|
|
/* function keys these rows are nicely predictable to most people. */
|
|
/* I currently use the beakl number row with regular symbols. */
|
|
/* I never use function keys for anything. */
|
|
/*******************************************************************/
|
|
#define ___12_SYMB___ ___, ___SYMS___, ___
|
|
#define ___12_SYMB_BP___ ___12_SYMS_BEPO___,
|
|
|
|
#define ___12_NUM___ ___, ___NUMS___, ___
|
|
#define ___12_NUM_BP___ ___, ___NUMS_BP___, ___
|
|
#define ___12_NUM_BEAKL___ ___, ___BKLNUMS___, ___
|
|
#define ___12_NUM_BEAKL_BP___ ___, ___BKLNUMS_BP___, ___
|
|
|
|
#define ___12_FUNC___ ___FUNC_1_6___, ___FUNC_7_12___
|
|
#define ___12_SYMS_BEPO___ ___6SYMBOL_BEPO_L___, ___6SYMBOL_BEPO_R___
|
|
#define ___12_SYMS_FR___ ___SYMB_L_FR___, ___SYMB_R_FR___
|
|
|
|
// Kinesis function key row. I don't use them. but might as well define them.
|
|
#define ___KINTFUNC_L___ KC_ESC, ___FUNC_1_6___, KC_F7, KC_F8
|
|
// #define ___KINTFUNC_RIGHT___ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET
|
|
#define ___KINTFUNC_R___ KC_F9, KC_F10, KC_F11, KC_F12, XXX, XXX, XXX, XXX, RESET
|
|
|
|
// A TOPROWS Layer.
|
|
// set it how you like it, if you like it.
|
|
#define ___TOPROW_1___ ___12_SYMB___
|
|
#define ___TOPROW_2___ ___12_NUM_BEAKL___
|
|
#define ___TOPROW_3___ ___12_FUNC___
|
|
|
|
#define ___TOPROW_1_BP___ ___12_SYMS_BEPO___
|
|
#define ___TOPROW_2_BP___ ___12_NUM_BEAKL_BP___
|
|
#define ___TOPROW_3_BP___ ___12_FUNC___
|
|
|
|
/********************************************************************************/
|
|
/* TOPROWS Layer chunk */
|
|
/********************************************************************************/
|
|
// altogether in a chunk.
|
|
#define ___TOPROWS_3x12___ ___TOPROW_1___, ___TOPROW_2___, ___TOPROW_3___
|
|
#define ___TOPROWS_BP_3x12___ ___TOPROW_1_BP___, ___TOPROW_2_BP___, ___TOPROW_3_BP___
|
|
|
|
// Some layers with just a home row of numbers.
|
|
// The beakl ones, r the usual ones.
|
|
#define ___NUM_HOME_BEAKL_3x12___ ___12___, ___12_NUM_BEAKL___, ___12___
|
|
#define ___NUM_HOME_BEAKL_BP_3x12___ ___12___, ___12_NUM_BEAKL_BP___, ___12___
|
|
#define ___NUM_HOME_3x12___ ___12___, ___12_NUM___, ___12___
|
|
#define ___NUM_HOME_BP_3x12___ ___12___, ___12_NUM_BP___, ___12___
|
|
|
|
|
|
/********************************************************************************/
|
|
/* KEYPADS. Mostly all in Bepo and Qwerty versions */
|
|
/* 4 row Pads: */
|
|
/* * The BEAKL 15 Number pad, for the left hand. */
|
|
/* * Regular Number pad, for the right hand. */
|
|
/* * 12 Function pad. */
|
|
/* 3 row pads: */
|
|
/* keypad */
|
|
/* function pad */
|
|
/* */
|
|
/* LAYERS: */
|
|
/* 4 Row: */
|
|
/* * BEAKL with a compact FuncPad on the right. */
|
|
/* * Funcpad on the left, keypad on the right. */
|
|
/* 3 Row: */
|
|
/* * Funcpad on the left, keypad on the right. */
|
|
/* * BEAKL with a compact FuncPad on the right. */
|
|
/* */
|
|
/********************************************************************************/
|
|
|
|
// BEAKL 15 (numpad layer):
|
|
/* +=* ^%~ */
|
|
/* ↹523: */
|
|
/* - 7.104 */
|
|
/* /698, */
|
|
|
|
// Keypads
|
|
#define ___6KEYPAD_BEAKL_L1___ ___, _X_, KC_PLUS, KC_PEQL, KC_ASTR, _X_
|
|
#define ___6KEYPAD_BEAKL_L2___ ___, TAB_BKTAB, KC_5, KC_2, KC_3, KC_COLON
|
|
#define ___6KEYPAD_BEAKL_L3___ KC_MINS, KC_7, KC_DOT, KC_1, KC_0, KC_4
|
|
#define ___6KEYPAD_BEAKL_L4___ ___, KC_SLASH, KC_6, KC_9, KC_8, KC_COMM
|
|
|
|
#define ___5KEYPAD_BEAKL_R1___ ___, KC_CIRC, KC_PERC, KC_TILD, ___
|
|
|
|
#define ___6KEYPAD_BEAKL_L1_BP___ ___, _X_, BP_PLUS, BP_EQL, BP_ASTR, _X_
|
|
#define ___6KEYPAD_BEAKL_L2_BP___ ___, TAB_BKTAB, BP_5, BP_2, BP_3, BP_COLN
|
|
#define ___6KEYPAD_BEAKL_L3_BP___ BP_MINS, BP_7, BP_DOT, BP_1, BP_0, BP_4
|
|
#define ___6KEYPAD_BEAKL_L4_BP___ ___, BP_SLSH, BP_6, BP_9, BP_8, BP_COMM
|
|
|
|
#define ___5KEYPAD_BEAKL_R1_BP___ ___, BP_CIRC, BP_PERC, BP_TILD, ___
|
|
|
|
#define ___5KEYPAD_1___ _X_, KC_7, KC_8, KC_9, KC_PSLS
|
|
#define ___5KEYPAD_2___ _X_, KC_4, KC_5, KC_6, KC_PAST
|
|
#define ___5KEYPAD_3___ _X_, KC_1, KC_2, KC_3, KC_PMNS
|
|
#define ___5KEYPAD_4___ _X_, KC_0, KC_DOT, KC_PEQL, KC_PPLS
|
|
// For Bepo
|
|
#define ___5KEYPAD_1_BP___ _X_, DB_7, DB_8, DB_9, BP_SLSH
|
|
#define ___5KEYPAD_2_BP___ _X_, DB_4, DB_5, DB_6, BP_ASTR
|
|
#define ___5KEYPAD_3_BP___ _X_, DB_1, DB_2, DB_3, DB_MINUS
|
|
#define ___5KEYPAD_4_BP___ _X_, DB_0, DB_DOT, DB_EQL, BP_PLUS
|
|
|
|
// Keypad from the default keymap.c of the xd75
|
|
#define ___4KEYPAD_1_ALT___ _X_, KC_P7, KC_P8, KC_P9, KC_MINS
|
|
#define ___4KEYPAD_2_ALT___ _X_, KC_P4, KC_P5, KC_P6, KC_PLUS
|
|
#define ___4KEYPAD_3_ALT___ _X_, KC_P1, KC_P2, KC_P3, KC_PENT
|
|
#define ___4KEYPAD_4_ALT___ _X_, KC_P0, KC_DOT, KC_PENT, KC_PENT
|
|
|
|
// Function pad. Same idea as above, but for function keys.
|
|
// For the left side.
|
|
#define ___5FUNCPAD_T___ _X_, KC_F10, KC_F11, KC_F12, _X_
|
|
#define ___5FUNCPAD_1___ _X_, KC_F7, KC_F8, KC_F9, _X_
|
|
#define ___5FUNCPAD_2___ _X_, KC_F4, KC_F5, KC_F6, _X_
|
|
#define ___5FUNCPAD_3___ _X_, KC_F1, KC_F2, KC_F3, _X_
|
|
|
|
|
|
// Put them together for complete left and right layers.
|
|
// Beakl keypad with a funcpad
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_1___ ___6KEYPAD_BEAKL_L1___, _X_, ___5KEYPAD_BEAKL_R1___
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_2___ ___6KEYPAD_BEAKL_L2___, _X_, ___5_FUNCPADC_1___
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_3___ ___6KEYPAD_BEAKL_L3___, _X_, ___5_FUNCPADC_2___
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_4___ ___6KEYPAD_BEAKL_L4___, _X_, ___5_FUNCPADC_3___
|
|
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_1_BP___ ___6KEYPAD_BEAKL_L1_BP___, _X_, ___5KEYPAD_BEAKL_R1_BP___
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_2_BP___ ___6KEYPAD_BEAKL_L2_BP___, _X_, ___5_FUNCPADC_1___
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_3_BP___ ___6KEYPAD_BEAKL_L3_BP___, _X_, ___5_FUNCPADC_2___
|
|
#define ___12_KEYPAD_BKL_FUNCPAD_4_BP___ ___6KEYPAD_BEAKL_L4_BP___, _X_, ___5_FUNCPADC_3___
|
|
|
|
// Funcpad and keypad layer for Qwerty based layers.
|
|
#define ___12_FUNCPAD_KEYPAD_1___ ___, ___5FUNCPAD_T___, ___5KEYPAD_1___, ___
|
|
#define ___12_FUNCPAD_KEYPAD_2___ ___, ___5FUNCPAD_1___, ___5KEYPAD_2___, ___
|
|
#define ___12_FUNCPAD_KEYPAD_3___ ___, ___5FUNCPAD_2___, ___5KEYPAD_3___, KC_PENT
|
|
#define ___12_FUNCPAD_KEYPAD_4___ ___, ___5FUNCPAD_3___, ___5KEYPAD_4___, ___
|
|
|
|
// Funcpad and keypad layer for BEPO
|
|
#define ___12_FUNCPAD_KEYPAD_BP_1___ ___, ___5FUNCPAD_T_BP___, ___5KEYPAD_1_BP___, ___
|
|
#define ___12_FUNCPAD_KEYPAD_BP_2___ ___, ___5FUNCPAD_1_BP___, ___5KEYPAD_2_BP___, ___
|
|
#define ___12_FUNCPAD_KEYPAD_BP_3___ ___, ___5FUNCPAD_2_BP___, ___5KEYPAD_3_BP___, KC_PENT
|
|
#define ___12_FUNCPAD_KEYPAD_BP_4___ ___, ___5FUNCPAD_3_BP___, ___5KEYPAD_4_BP___, ___
|
|
|
|
/********************************************************************************/
|
|
/* COMPACT - KEYPAD and FUNCPAD. 3 Rows. */
|
|
/********************************************************************************/
|
|
// Compact versions of each. 3 rows.
|
|
//Compact keypad, 3 rows.
|
|
#define ___6KEYPADC_1___ ___, KC_7, KC_8, KC_9, KC_PSLS, ___
|
|
#define ___6KEYPADC_2___ KC_DOT, KC_4, KC_5, KC_6, KC_PAST, KC_PEQL
|
|
#define ___6KEYPADC_3___ KC_0, KC_1, KC_2, KC_3, KC_PMNS, KC_PPLS
|
|
// For Bepo
|
|
#define ___6KEYPADC_1_BP___ ___, DB_7, DB_8, DB_9, BP_SLSH
|
|
#define ___6KEYPADC_2_BP___ DB_DOT, DB_4, DB_5, DB_6, BP_ASTR, DB_EQL
|
|
#define ___6KEYPADC_3_BP___ DB_0, DB_1, DB_2, DB_3, DB_MINUS, DB_PLUS
|
|
|
|
// compact 1-12 funcpad for 3 row keyboards.
|
|
#define ___5_FUNCPADC_1___ KC_F9, KC_F10, KC_F11, KC_F12, ___
|
|
#define ___5_FUNCPADC_2___ KC_F5, KC_F6, KC_F7, KC_F8, ___
|
|
#define ___5_FUNCPADC_3___ KC_F1, KC_F2, KC_F3, KC_F4, ___
|
|
|
|
// Compact funcpads/keypad Layer
|
|
#define ___12_KP_1C___ ___, ___5_FUNCPADC_1___, ___5KEYPAD_1___, ___
|
|
#define ___12_KP_2C___ ___, ___5_FUNCPADC_2___, ___5KEYPAD_2___, ___
|
|
#define ___12_KP_3C___ ___, ___5_FUNCPADC_3___, ___5KEYPAD_3___, ___
|
|
// Reversed
|
|
#define ___12_KP_FP_1C___ ___, ___5KEYPAD_1___, ___5_FUNCPADC_1___, ___
|
|
#define ___12_KP_FP_2C___ ___, ___5KEYPAD_2___, ___5_FUNCPADC_2___, ___
|
|
#define ___12_KP_FP_3C___ ___, ___5KEYPAD_3___, ___5_FUNCPADC_3___, ___
|
|
|
|
//Bepo funcpad and keypad Layer
|
|
#define ___12_KP_1_BP___ ___, ___5_FUNCPADC_1___, ___5KEYPAD_1_BP___, ___
|
|
#define ___12_KP_2_BP___ ___, ___5_FUNCPADC_2___, ___5KEYPAD_2_BP___, ___
|
|
#define ___12_KP_3_BP___ ___, ___5_FUNCPADC_3___, ___5KEYPAD_3_BP___, ___
|
|
|
|
/********************************************************************************/
|
|
/* FUNCPAD and Keypad Layer chunks */
|
|
/********************************************************************************/
|
|
// Full size, 4x12
|
|
#define ___KEYPAD_BKL_FUNC_4x12___ \
|
|
___12_KEYPAD_BKL_FUNCPAD_1___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_2___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_3___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_4___
|
|
#define ___KEYPAD_BKL_FUNC_BP_4x12___ \
|
|
___12_KEYPAD_BKL_FUNCPAD_1_BP___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_2_BP___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_3_BP___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_4_BP___
|
|
#define ___FUNC_KEYPAD_4x12___ \
|
|
___12_FUNCPAD_KEYPAD_1___, \
|
|
___12_FUNCPAD_KEYPAD_2___, \
|
|
___12_FUNCPAD_KEYPAD_3___, \
|
|
___12_FUNCPAD_KEYPAD_4___
|
|
#define ___FUNC_KEYPAD_BP_4x12___ \
|
|
___12_FUNCPAD_KEYPAD_BP_1___, \
|
|
___12_FUNCPAD_KEYPAD_BP_2___, \
|
|
___12_FUNCPAD_KEYPAD_BP_3___, \
|
|
___12_FUNCPAD_KEYPAD_BP_4___
|
|
|
|
// Compact, 3x12
|
|
#define ___KP_C_BKL_FUNC_3x12___ \
|
|
___12_KEYPAD_BKL_FUNCPAD_2___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_3___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_4___
|
|
#define ___KP_C_BKL_FUNC_BP_3x12___ \
|
|
___12_KEYPAD_BKL_FUNCPAD_2_BP___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_3_BP___, \
|
|
___12_KEYPAD_BKL_FUNCPAD_4_BP___
|
|
|
|
#define ___KP_C_3x12___ ___12_KP_1C___, ___12_KP_2C___, ___12_KP_3C___
|
|
#define ___KP_FP_C_3x12___ ___12_KP_FP_1C___, ___12_KP_FP_2C___, ___12_KP_FP_3C___
|
|
#define ___KP_C_BP_3x12___ ___12_KP_1_BP___, ___12_KP_2_BP___, ___12_KP_3_BP___
|
|
|
|
|
|
|
|
/********************************************************************************/
|
|
/* SYMBOLS. The BEAKL15 Symbol layer with or without additions. */
|
|
/* */
|
|
/* Symbol layers: */
|
|
/* */
|
|
/* BEAKL symbol layer */
|
|
/* <$> [_] */
|
|
/* - \(")# %{=}| ; */
|
|
/* :*+ &^~ */
|
|
/* */
|
|
/* BEAKL Extended symbol layer */
|
|
/* `<$>' ?[_] */
|
|
/* - \(")# %{=}| ; */
|
|
/* @:*+; !&^~/ */
|
|
/* */
|
|
/* This layer has replaced my former Symbol pad and Symbols */
|
|
/* layer. The Sympad was nice, But this incorporates the matching */
|
|
/* (){}[] that I had and at the same time provides an easily */
|
|
/* Learnable layer that makes sense. It was also easy to */
|
|
/* Supplement with new keys that other layouts might need. */
|
|
/* */
|
|
/* The first Layer defined is the "Official" version. */
|
|
/* The second Layer defined only adds to the original by */
|
|
/* Placing 8 keys in the pinky and index corners */
|
|
/* at the edges of the, 3x3, BEAKL home Region. */
|
|
/* */
|
|
/* Namely these: !?@`'/-; */
|
|
/* */
|
|
/* Beakl has these keys in it's base layer which isn't the case */
|
|
/* for other layouts like dvorak, colemak, etc. */
|
|
/* */
|
|
/******************************************************************/
|
|
|
|
/******************************************************************/
|
|
/* Official BEAKL15 Symbol layer. */
|
|
/* BEAKL 15 (punctuation layer): */
|
|
/* */
|
|
/* <$> [_] */
|
|
/* - \(")# %{=}| ; */
|
|
/* :*+ &^~ */
|
|
/******************************************************************/
|
|
/********************************************************************************/
|
|
/* The expanded Beakl Symbol Layer */
|
|
/* */
|
|
/* Expanded with: !?@`'/-; */
|
|
/* */
|
|
/* This insures access to all common symbols, regardless of availabilily on */
|
|
/* other layers. All the extra characters are added to the pinky and index */
|
|
/* corners which are empty in the BEAKL symbol layer. */
|
|
/* */
|
|
/* Both ; and ' could find 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. */
|
|
/* */
|
|
/* A: */
|
|
/* `<$>' ?[_] */
|
|
/* - \(")# %{=}| ; */
|
|
/* @:*+; !&^~/ */
|
|
/* */
|
|
/* B: */
|
|
/* With vi bindings /:? and a leader key for vi/emacs.*/
|
|
/* ; is popular, I use , it's easy in dvorak.: */
|
|
/* */
|
|
/* `<$>' ?[_]- */
|
|
/* - \(")# !{:}/ ; */
|
|
/* @=*+; %&^~| */
|
|
/********************************************************************************/
|
|
// Left
|
|
#define ___SB_L1___ KC_OCLTGT, KC_DLR, KC_GT
|
|
#define ___SB_L2___ KC_BACKSLASH, KC_OCPRN, KC_OCDQUO, KC_RPRN, KC_HASH
|
|
#define ___SB_L3___ KC_COLON, KC_ASTR, KC_PLUS
|
|
#define ___SB_L3b___ KC_EQL, KC_ASTR, KC_PLUS
|
|
|
|
// Bepo
|
|
#define ___SB_L1_BP___ BP_OCLTGT, BP_DLR, DB_GRTR
|
|
#define ___SB_L2_BP___ DB_BACKSLASH, DB_LPRN, BP_OCDQUO, DB_RPRN, DB_HASH
|
|
#define ___SB_L3_BP___ KC_COLON, BP_ASTR, BP_PLUS
|
|
#define ___SB_L3b_BP___ BP_EQL, BP_ASTR, BP_PLUS
|
|
|
|
// Right
|
|
#define ___SB_R1___ KC_OCBRC, KC_UNDS, KC_RBRC
|
|
#define ___SB_R2___ KC_PERC, KC_OCCBR, KC_EQL, KC_RCBR, KC_PIPE
|
|
#define ___SB_R3___ KC_AMPR, KC_CIRC, KC_TILD
|
|
|
|
#define ___SB_R2a___ KC_PERC, KC_OCCBR, KC_EXLM, KC_RCBR, KC_PIPE
|
|
#define ___SB_R2b___ KC_EXLM, KC_OCCBR, KC_COLN, KC_RCBR, KC_SLASH
|
|
|
|
// Bepo
|
|
#define ___SB_R1_BP___ BP_OCBRC, BP_UNDS, DB_RBRC
|
|
#define ___SB_R2_BP___ BP_PERC, BP_OCCBR, BP_EQL, DB_RCBR, DB_PIPE
|
|
#define ___SB_R3_BP___ BP_AMPR, DB_CIRC, DB_TILD
|
|
|
|
#define ___SB_R2a_BP___ BP_PERC, BP_OCCBR, BP_EXLM, DB_RCBR, DB_PIPE
|
|
#define ___SB_R2b_BP___ BP_EXLM, BP_OCCBR, KC_COLON, DB_RCBR, DB_SLASH
|
|
|
|
// ---------------------------
|
|
// ---------------------------
|
|
|
|
// Square it to 6, Add in the - and ;.
|
|
#define ___6SYMBOLS_BEAKL_L1___ ___, ___, ___SB_L1___, ___
|
|
#define ___6SYMBOLS_BEAKL_L2___ KC_MINS, ___SB_L2___
|
|
#define ___6SYMBOLS_BEAKL_L3___ ___, ___, ___SB_L3___, ___
|
|
|
|
#define ___6SYMBOLS_BEAKL_R1___ ___, ___SB_R1___, ___, ___
|
|
#define ___6SYMBOLS_BEAKL_R2___ ___SB_R2___, KC_SCLN
|
|
#define ___6SYMBOLS_BEAKL_R3___ ___, ___SB_R3___, ___, ___
|
|
// ---------------------------
|
|
#define ___6SYMBOLS_BEAKL_L1a___ ___, KC_OCGRV, ___SB_L1___, KC_OCQUOT
|
|
#define ___6SYMBOLS_BEAKL_L2a___ ___6SYMBOLS_BEAKL_L2___
|
|
#define ___6SYMBOLS_BEAKL_L3a___ ___, KC_AT, ___SB_L3___, KC_SCLN
|
|
|
|
#define ___6SYMBOLS_BEAKL_R1a___ LSFT(KC_SLASH), ___SB_R1___, KC_MINS, ___
|
|
#define ___6SYMBOLS_BEAKL_R2a___ ___SB_R2a___, KC_SCLN
|
|
#define ___6SYMBOLS_BEAKL_R3a___ KC_EXLM, ___SB_R3___, KC_SLASH, ___
|
|
// ---------------------------
|
|
#define ___6SYMBOLS_BEAKL_L1b___ ___, KC_OCGRV, ___SB_L1___, KC_OCQUOT
|
|
#define ___6SYMBOLS_BEAKL_L2b___ ___6SYMBOLS_BEAKL_L2___
|
|
#define ___6SYMBOLS_BEAKL_L3b___ ___, KC_AT, ___SB_L3b___, KC_SCLN
|
|
|
|
#define ___6SYMBOLS_BEAKL_R1b___ ___6SYMBOLS_BEAKL_R1a___
|
|
#define ___6SYMBOLS_BEAKL_R2b___ ___SB_R2b___, KC_SCLN
|
|
#define ___6SYMBOLS_BEAKL_R3b___ KC_PERC, ___SB_R3___, KC_PIPE, ___
|
|
|
|
// ---------------------------
|
|
// ---------------------------
|
|
// Bepo
|
|
#define ___6SYMBOLS_BEAKL_L1_BP___ ___, ___, ___SB_L1_BP___, ___
|
|
#define ___6SYMBOLS_BEAKL_L2_BP___ BP_MINS, ___SB_L2_BP___
|
|
#define ___6SYMBOLS_BEAKL_L3_BP___ ___, ___, ___SB_L3_BP___, ___
|
|
|
|
#define ___6SYMBOLS_BEAKL_R1_BP___ ___, ___SB_R1_BP___, ___, ___
|
|
#define ___6SYMBOLS_BEAKL_R2_BP___ ___SB_R2_BP___, BP_SCLN
|
|
#define ___6SYMBOLS_BEAKL_R3_BP___ ___, ___SB_R3_BP___, ___, ___
|
|
// ---------------------------
|
|
#define ___6SYMBOLS_BEAKL_L1a_BP___ ___, BP_GRV, ___SB_L1_BP___, BP_AT
|
|
#define ___6SYMBOLS_BEAKL_L2a_BP___ ___6SYMBOLS_BEAKL_L2_BP___
|
|
#define ___6SYMBOLS_BEAKL_L3a_BP___ ___, BP_AT, ___SB_L3_BP___, BP_SCLN
|
|
|
|
#define ___6SYMBOLS_BEAKL_R1a_BP___ BP_QUES, ___SB_R1_BP___, BP_MINS, ___
|
|
#define ___6SYMBOLS_BEAKL_R2a_BP___ ___SB_R2a_BP___, BP_SCLN
|
|
#define ___6SYMBOLS_BEAKL_R3a_BP___ BP_EXLM, ___SB_R3_BP___, BP_SLSH, ___
|
|
// ---------------------------
|
|
#define ___6SYMBOLS_BEAKL_L1b_BP___ ___, BP_GRV, ___SB_L1___, BP_OCQUOT
|
|
#define ___6SYMBOLS_BEAKL_L2b_BP___ ___6SYMBOLS_BEAKL_L2_BP___
|
|
#define ___6SYMBOLS_BEAKL_L3b_BP___ ___, BP_AT, ___SB_L3b_BP___, BP_SCLN
|
|
|
|
#define ___6SYMBOLS_BEAKL_R1b_BP___ ___, ___SB_R1_BP___, BP_MINS, ___
|
|
#define ___6SYMBOLS_BEAKL_R2b_BP___ ___SB_R2b_BP___, BP_SCLN
|
|
#define ___6SYMBOLS_BEAKL_R3b_BP___ BP_PERC, ___SB_R3_BP___, BP_PIPE, ___
|
|
// ---------------------------
|
|
|
|
// Some 12 column rows.
|
|
#define ___12_SYM_BKL_1_BP___ ___6SYMBOLS_BEAKL_L1_BP___, ___6SYMBOLS_BEAKL_R1_BP___
|
|
#define ___12_SYM_BKL_2_BP___ ___6SYMBOLS_BEAKL_L2_BP___, ___6SYMBOLS_BEAKL_R2_BP___
|
|
#define ___12_SYM_BKL_3_BP___ ___6SYMBOLS_BEAKL_L3_BP___, ___6SYMBOLS_BEAKL_R3_BP___
|
|
|
|
#define ___12_SYM_BKL_1___ ___6SYMBOLS_BEAKL_L1___, ___6SYMBOLS_BEAKL_R1___
|
|
#define ___12_SYM_BKL_2___ ___6SYMBOLS_BEAKL_L2___, ___6SYMBOLS_BEAKL_R2___
|
|
#define ___12_SYM_BKL_3___ ___6SYMBOLS_BEAKL_L3___, ___6SYMBOLS_BEAKL_R3___
|
|
|
|
// Some 12 column rows.
|
|
#define ___12_SYM_BKL_A1_BP___ ___6SYMBOLS_BEAKL_L1a_BP___, ___6SYMBOLS_BEAKL_R1a_BP___
|
|
#define ___12_SYM_BKL_A2_BP___ ___6SYMBOLS_BEAKL_L2a_BP___, ___6SYMBOLS_BEAKL_R2a_BP___
|
|
#define ___12_SYM_BKL_A3_BP___ ___6SYMBOLS_BEAKL_L3a_BP___, ___6SYMBOLS_BEAKL_R3a_BP___
|
|
|
|
#define ___12_SYM_BKL_A1___ ___6SYMBOLS_BEAKL_L1a___, ___6SYMBOLS_BEAKL_R1a___
|
|
#define ___12_SYM_BKL_A2___ ___6SYMBOLS_BEAKL_L2a___, ___6SYMBOLS_BEAKL_R2a___
|
|
#define ___12_SYM_BKL_A3___ ___6SYMBOLS_BEAKL_L3a___, ___6SYMBOLS_BEAKL_R3a___
|
|
|
|
#define ___12_SYM_BKL_B1_BP___ ___6SYMBOLS_BEAKL_L1b_BP___, ___6SYMBOLS_BEAKL_R1b_BP___
|
|
#define ___12_SYM_BKL_B2_BP___ ___6SYMBOLS_BEAKL_L2b_BP___, ___6SYMBOLS_BEAKL_R2b_BP___
|
|
#define ___12_SYM_BKL_B3_BP___ ___6SYMBOLS_BEAKL_L3b_BP___, ___6SYMBOLS_BEAKL_R3b_BP___
|
|
|
|
#define ___12_SYM_BKL_B1___ ___6SYMBOLS_BEAKL_L1b___, ___6SYMBOLS_BEAKL_R1b___
|
|
#define ___12_SYM_BKL_B2___ ___6SYMBOLS_BEAKL_L2b___, ___6SYMBOLS_BEAKL_R2b___
|
|
#define ___12_SYM_BKL_B3___ ___6SYMBOLS_BEAKL_L3b___, ___6SYMBOLS_BEAKL_R3b___
|
|
|
|
/********************************************************************************/
|
|
/* The BEAKL and BEAKL-A SYMBOL LAYER Chunks */
|
|
/********************************************************************************/
|
|
// The Official beakl symbol layer as a chunk, Bepo and Qwerty
|
|
#define ___SYMB_BEAKL_BP_3x12___ ___12_SYM_BKL_1_BP___, \
|
|
___12_SYM_BKL_2_BP___, \
|
|
___12_SYM_BKL_3_BP___
|
|
|
|
#define ___SYMB_BEAKL_3x12___ ___12_SYM_BKL_1___, \
|
|
___12_SYM_BKL_2___, \
|
|
___12_SYM_BKL_3___
|
|
|
|
// Alternate Beakle symbol layer with additional corner symbols.
|
|
#define ___SYMB_BEAKLA_BP_3x12___ ___12_SYM_BKL_A1_BP___, \
|
|
___12_SYM_BKL_A2_BP___, \
|
|
___12_SYM_BKL_A3_BP___
|
|
|
|
#define ___SYMB_BEAKLA_3x12___ ___12_SYM_BKL_A1___, \
|
|
___12_SYM_BKL_A2___, \
|
|
___12_SYM_BKL_A3___
|
|
|
|
#define ___SYMB_BEAKLB_BP_3x12___ ___12_SYM_BKL_B1_BP___, \
|
|
___12_SYM_BKL_B2_BP___, \
|
|
___12_SYM_BKL_B3_BP___
|
|
|
|
#define ___SYMB_BEAKLB_3x12___ ___12_SYM_BKL_B1___, \
|
|
___12_SYM_BKL_B2___, \
|
|
___12_SYM_BKL_B3___
|
|
|
|
/********************************************************************************/
|
|
/* NAVIGATION - MOUSE, Scroll, Buttons, Arrows, Tab, Home, page up/down, End */
|
|
/* Navigation layers: */
|
|
/* 3 row Layer */
|
|
/* 4 Row Layer with repeated and swapped VI arrows, and Scroll wheel. */
|
|
/********************************************************************************/
|
|
/* */
|
|
/* Navigation layer with optional 4th Row.... */
|
|
/* */
|
|
/* M = Mouse */
|
|
/* B = Button */
|
|
/* W = Wheel */
|
|
/* AC = Acceleration */
|
|
/* CCCV = Tap -> Ctrl-C, hold for double tap duration -> Ctrl-V */
|
|
/* CTCN = Tap -> Ctrl-T, hold for double tap duration -> Ctrl-N */
|
|
/* CWCQ = Tap -> Ctrl-W, hold for double tap duration -> Ctrl-Q */
|
|
/* TAB = Tap -> Tab, Double-tap -> Back Tab */
|
|
/* HOME = Tap -> Home, Double-tap -> End */
|
|
/* */
|
|
/* MB5 MB4 MB3 MB2 MB1 MAC0 | CTCN MB1 MB2 MB3 MB4 MB5 */
|
|
/* TAB MLeft MDown MUp MRight MAC1 | CCCV Left Down UP Right TAB */
|
|
/* WLeft WDown WUp WRight MAC2 | CWCQ HOME PGDN PGUP END */
|
|
/* */
|
|
/* Left Down Up Right CCCV | CCCV MLeft MDown MUp MRight */
|
|
/* */
|
|
/********************************************************************************/
|
|
|
|
#define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
|
|
#define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
|
|
// really BTN 1, 2, 3, 8, 9 - according to xev.
|
|
#define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN5
|
|
// really BTN 9, 8, 3, 2, 1 - according to xev
|
|
#define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1
|
|
#define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2
|
|
#define ___MACCL___ ___MOUSE_ACCL_012___
|
|
|
|
|
|
#define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
|
|
#define ___HOME_PGDN_PGUP_END___ KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
|
|
|
#define ___6NAV_L_1___ ___MOUSE_BTNS_L___, KC_ACL0
|
|
#define ___6NAV_L_2___ TAB_BKTAB, ___MOUSE_LDUR___, KC_ACL1
|
|
#define ___6NAV_L_3___ ___, ___MWHEEL_LDUR___, KC_ACL2
|
|
#define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV
|
|
|
|
#define ___6NAV_R_1___ KC_CTCN, ___MOUSE_BTNS_R___
|
|
#define ___6NAV_R_2___ KC_CCCV, ___VI_ARROWS___, TAB_BKTAB
|
|
#define ___6NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___, ___
|
|
#define ___6NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___, ___
|
|
|
|
// compact. Initially for corne. So 3x12 per layer.
|
|
#define ___12_NAV_1___ ___6NAV_L_1___, ___6NAV_R_1___
|
|
#define ___12_NAV_2___ ___6NAV_L_2___, ___6NAV_R_2___
|
|
#define ___12_NAV_3___ ___6NAV_L_3___, ___6NAV_R_3___
|
|
|
|
#define ___12_NAV_4___ ___6NAV_L_4___, ___6NAV_R_4___
|
|
|
|
/********************************************************************************/
|
|
/* The Navigation LAYER Chunks */
|
|
/********************************************************************************/
|
|
// A Navigation Layer
|
|
#define ___NAV_3x12___ ___12_NAV_1___, ___12_NAV_2___, ___12_NAV_3___
|
|
#define ___NAV_4x12___ ___NAV_3x12___, ___12_NAV_4___
|
|
|
|
|
|
/********************************************************************************/
|
|
/* MEDIA - Mute, Vol, play, pause, stop, next, prev, etc. */
|
|
/********************************************************************************/
|
|
#define ___PRV_PLAY_NXT_STOP___ KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
|
|
#define ___VDN_MUTE_VUP___ KC_VOLD, KC_MUTE, KC_VOLU
|
|
|
|
#define ___MUTE_PRV_PLAY_NXT_STOP___ KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
|
|
#define ___MUTE_PLAY_STOP___ KC_MUTE, KC_MPLY, KC_MSTP
|
|
|
|
|
|
/********************************************************************************/
|
|
/* RGB - Control those lights. */
|
|
|
|
/* ___, HUE SAT_INT MOD (UP), | */
|
|
/* ___, HUE SAT INT MOD (DOWN), RGB_TOG | P_B_R_SW_SN___, ___ */
|
|
/* ___6___, | ___, ___RGB_KXGT___, ___ */
|
|
/********************************************************************************/
|
|
// RGB FUNCTION Keysets
|
|
// RGB row for the _FN layer from the redo of the default keymap.c
|
|
#define ___RGB_HUE_SAT_INT_UP___ RGB_HUI, RGB_SAI, RGB_VAI, RGB_RMOD
|
|
#define ___RGB_HUE_SAT_INT_DN___ RGB_HUD, RGB_SAD, RGB_VAD, RGB_MOD
|
|
#define ___RGB_MODE_PRV_NXT___ RGB_RMOD, RGB_MOD
|
|
#define ___RGB_TOGGLE___ RGB_TOG
|
|
#define ___RGB_P_B_R_SW_SN___ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN
|
|
#define ___RGB_KXGT___ RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T
|
|
|
|
/// An RGB Layer
|
|
#define ___12_RGB_1___ ___, ___RGB_HUE_SAT_INT_UP___, ___, ___6___
|
|
#define ___12_RGB_2___ ___, ___RGB_HUE_SAT_INT_DN___, RGB_TOG, ___RGB_P_B_R_SW_SN___, ___
|
|
#define ___12_RGB_3___ ___6___, ___, ___RGB_KXGT___, ___
|
|
|
|
/********************************************************************************/
|
|
/* The RGB LAYER Chunk */
|
|
/********************************************************************************/
|
|
#define ___RGB_3x12___ ___12_RGB_1___, ___12_RGB_2___, ___12_RGB_3___
|
|
|
|
|
|
/********************************************************************************/
|
|
/* ADJUST - Miscellaneous Melange. */
|
|
/********************************************************************************/
|
|
// For an Adjust layer. Like RBB with audio, flash, etc.
|
|
#define ___6_ADJUST_L1___ KC_MAKE, ___RGB_HUE_SAT_INT_UP___, RGB_TOG
|
|
#define ___6_ADJUST_L2___ VRSN, MU_TOG, CK_TOGG, AU_ON, AU_OFF, CG_NORM
|
|
#define ___6_ADJUST_L3___ MG_NKRO, ___RGB_HUE_SAT_INT_DN___, KC_RGB_T
|
|
|
|
#define ___6_ADJUST_R1___ ___5___, KC_RESET
|
|
#define ___6_ADJUST_R2___ ___, ___PRV_PLAY_NXT_STOP___, EEP_RST
|
|
#define ___6_ADJUST_R3___ MG_NKRO, ___VDN_MUTE_VUP___, ___, RGB_IDL
|
|
|
|
/********************************************************************************/
|
|
/* The Adjust LAYER Chunks */
|
|
/********************************************************************************/
|
|
#define ___ADJUST_3x12___ ___6_ADJUST_L1___, ___6_ADJUST_R1___, \
|
|
___6_ADJUST_L2___, ___6_ADJUST_R2___, \
|
|
___6_ADJUST_L3___, ___6_ADJUST_R3___
|
|
|
|
|
|
/********************************************************************************/
|
|
/* LAYERS - Define a base layer, switch to any layer. Get around. Experiment. */
|
|
/* */
|
|
/* Base Layers on the left hand, */
|
|
/* transient layers on the right. Centered on the home region. */
|
|
/* A good place to attach an experimental layer. */
|
|
/* */
|
|
/********************************************************************************/
|
|
// Base Layers
|
|
#define ___5_LAYERS_B1___ ___, KC_BEPO, KC_DVORAK_BP, KC_BEAKL_BP, ___
|
|
#define ___5_LAYERS_B2___ KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_BEAKL, ___
|
|
|
|
#define ___5_LAYERS_B3___ ___, KC_QWERTY, KC_NORMAN, KC_WORKMAN, ___
|
|
#define ___5_LAYERS_B4___ ___, DF(_MALTRON), DF(_EUCALYN), DF(_CARPLAX), ___
|
|
|
|
#define ___5_LAYERS_B1b___ DF(_NORMAN), DF(_MALTRON), DF(_CARPLAX), DF(_COLEMAK), ___
|
|
#define ___5_LAYERS_B2b___ DF(_EUCALYN), DF(_WORKMAN), DF(_QWERTY), DF(_DVORAK), ___
|
|
#define ___5_LAYERS_B3b___ ___, DF(_BEAKL), DF(_BEPO), DF(_DVORAK_BP), ___
|
|
|
|
// transient layers.
|
|
#define ___5_LAYERS_T___ ___, MO(_NAV), MO(_SYMB), MO(_KEYPAD), MO(_TOPROWS)
|
|
#define ___5_LAYERS_T_BP___ ___, MO(_NAV), MO(_SYMB_BP), MO(_KEYPAD_BP), MO(_TOPROWS_BP)
|
|
#define ___5_LAYERS_T_CTL___ ___, MO(_RGB), ___, ___, MO(_ADJUST)
|
|
|
|
|
|
/// A Layers Layer
|
|
#define ___12_LAYERS_1___ ___, ___5_LAYERS_B1___, ___5_LAYERS_T_BP___, ___
|
|
#define ___12_LAYERS_2___ ___, ___5_LAYERS_B2___, ___5_LAYERS_T___, ___
|
|
#define ___12_LAYERS_3___ KC_SPACETEST, ___5___, ___5_LAYERS_T_CTL___, ___
|
|
|
|
/********************************************************************************/
|
|
/* The LAYERS LAYER Chunk */
|
|
/********************************************************************************/
|
|
#define ___LAYERS_3x12___ ___12_LAYERS_1___, ___12_LAYERS_2___, ___12_LAYERS_3___
|