diff options
Diffstat (limited to 'users/ericgebhart/layers/layers.h')
-rwxr-xr-x | users/ericgebhart/layers/layers.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/users/ericgebhart/layers/layers.h b/users/ericgebhart/layers/layers.h new file mode 100755 index 0000000000..0f09d0cfc3 --- /dev/null +++ b/users/ericgebhart/layers/layers.h @@ -0,0 +1,112 @@ +#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 + + 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" +/*********************************************************************/ +/* 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. */ +/* 3x10 are usual for these. I had 3x12's but I didn't need the edges really. */ +/* It was an attempt to accommodate Bepo which is 13 columns wide. */ +/* Even in a 3x12 Bepo is wonky. So I gave up on it. I also gave up on 4 row */ +/* layers, I really want my keys in that 3x5 space. Everything on the edges can */ +/* stay as it is. 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_3x10___ */ +/* ___TOPROWS_BP_3x10___ */ +/* */ +/* KEYPADS/FUNCPADS. */ +/* ___KP_C_3x10___ */ +/* ___KP_C_BP_3x10___ */ +/* ___KP_C_BKL_FUNC_3x10___ -- BEAKL key/func pads. */ +/* ___KP_C_BKL_FUNC_BP_3x10___ */ +/* */ +/* SYMBOLS -Beakl or Beakl extended */ +/* ___SYMB_BEAKL_3x10___ */ +/* ___SYMB_BEAKL_BP_3x10___ */ +/* */ +/* Beakl extended symbol layer with additional corner symbols. */ +/* For use with non-beakl base layers. */ +/* ___SYMB_BEAKLA_3x10___ */ +/* ___SYMB_BEAKLA_BP_3x10___ */ +/* For use with vi bindings optimized */ +/* ___SYMB_BEAKLB_3x10___ */ +/* ___SYMB_BEAKLB_BP_3x10___ */ +/* */ +/* NAVIGATION */ +/* ___NAV_3x10___ */ +/* */ +/* CONTROLS */ +/* ___RGB_3x10___ */ +/* ___ADJUST_3x10___ */ + /* ___LAYERS_3x10___ */ + /********************************************************************************/ + /*********************************************************************/ + /* 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. */ +/*********************************************************************/ + +// these are needed so that groups of defined keys will unravel +// into their values. The Base layers don't need them becuse the +// keys are explicit in their passing. Here, chunks are made for +// convenience and reuse. They don't unravel unless we wrap these +// in var args. +#define CHUNK_LANG_MAP(...) LANG_MAP(__VA_ARGS__) +#define CHUNK_LANG_ROW(...) LANG_ROW(__VA_ARGS__) + +// 5 wide, with the two shot control. +#define ___OS_MODS_L___ OS_LGUI, OS_LALT, OS_LCTL, OS_LSFT, TS_LCTL +#define ___OS_MODS_R___ TS_RCTL, OS_RSFT, OS_RCTL, OS_RALT, OS_RGUI +// 4 wide. +#define ___SML_MODS_L___ SMLM_LGUI, SMLM_LALT, SMLM_LCTL, SMLM_LSFT +#define ___SML_MODS_R___ SMLM_RSFT, SMLM_RCTL, SMLM_RALT, SMLM_RGUI + +#include "keypads.h" +#include "nav.h" +#include "symbols.h" +#include "toprows.h" +#include "utility.h" |