All pastes #2858123 Raw Edit

ergodox layout

public unlisted c v1 · immutable
#2858123 ·published 2014-10-11 16:06 UTC
rendered paste body
/* * Based on: *//* ---------------------------------------------------------------------------- * ergoDOX layout : QWERTY (modified from the Kinesis layout) * ---------------------------------------------------------------------------- * Copyright (c) 2012 Ben Blazak <benblazak.dev@gmail.com> * Released under The MIT License (MIT) (see "license.md") * Project located at <https://github.com/benblazak/ergodox-firmware> * ------------------------------------------------------------------------- *//* * This layout should emulate the behavior of the ridculusly expensive "Half-Keyboards" by Mattinas, but It's not there yet. *//* * The following does not work:  *  - Pressing Left Space enters Layer 1, Releasing it does not leave it. Why? *  - In Layer 1 Right Space is still space and not Backspace *  - In Layer 0 The outermost Keys Behave as Shift Keys. This is Intended. However I would expect them to be Caps lock, given they are mapped to s2kcap. */#include <stdint.h>#include <stddef.h>#include <avr/pgmspace.h>#include "../../../lib/data-types/misc.h"#include "../../../lib/usb/usage-page/keyboard--short-names.h"#include "../../../lib/key-functions/public.h"#include "../matrix.h"#include "../layout.h"// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------const uint8_t PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {	KB_MATRIX_LAYER(  // layout: layer 0: default// unused0,// left hand    _equal,     _1,         _2,      _3,      _4,    _5, _backslash,      _esc,     _Q,         _W,      _E,      _R,    _T,    1,      _tab,     _A,         _S,      _D,      _F,    _G,   _shiftL,     _Z,         _X,      _C,      _V,    _B,    1,     _guiL,_grave,_pound_nonUS, _arrowL, _ctrlL,                                                 _altL , _altL,                                              0,      0, _home,                                            _bs,      1,  _end,// right hand        3, _6,      _7,      _8,      _9,         _0, _bracketR,_bracketL, _Y,      _U,      _I,      _O,         _P,     _dash,           _H,      _J,      _K,      _L, _semicolon,    _quote,        1, _N,      _M,  _comma, _period,     _slash,   _shiftR,                  _ctrlR, _arrowL, _arrowD,  _arrowU,   _arrowR, _altR, _altL,KEY_ScrollLock ,      0,      0,       // Compose_guiL, _enter, _space ),	KB_MATRIX_LAYER(  // layout: layer 1: function and symbol keys// unused0,// left hand  0,        _F1,        _F2,       _F3,       _F4,       _F5, _F11,  0,         _P,         _O,        _I,        _U,        _Z,    1,  0, _semicolon,         _L,        _K,        _J,        _H,  0,     _slash,    _period,    _comma,        _M,        _N,    2,  0,          0,          0,         0,         0,                                                             0,  0,                                                         0,  0,  0,                                                         0,  0,  0,// right hand_F12,       _F6,    _F7,       _F8,       _F9,         _F10,   _power,   0,         0,  _dash,    _comma,   _period,_currencyUnit, _volumeU,             _0,     _bs,      _bs,       _0,       _equal, _volumeD,   2,        _8,     _2,        _3,        _4,        _5_kp,    _mute,                     _del,      _bs,        0,            0,        0,  0,  0,  0,  0,  0, _bs,_bs,_bs),	KB_MATRIX_LAYER(  // layout: layer 2: keyboard functions// unused0,// left hand  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,		          0,  0,		      0,  0,  0,		      0,  0,  0,// right hand      0,  0,  0,  0,  0,  0,  0,      0,  0,  0,  0,  0,  0,  0,	  0,  0,  0,  0,  0,  0,      0,  0,  0,  0,  0,  0,  0,	      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 ),	KB_MATRIX_LAYER(  // layout: layer 3: numpad// unused0,// left hand0,       0, 0, 0, 0, 0, 0,0,       0, 0, 0, 0, 0, 0,0,       0, 0, 0, 0, 0,0,       0, 0, 0, 0, 0, 0,0, _insert, 0, 0, 0,                     0, 0,                  0, 0, 0,                  0, 0, 0,// right hand3, 0,     3, _equal_kp, _div_kp,   _mul_kp, 0,0, 0, _7_kp,     _8_kp,   _9_kp,   _sub_kp, 0,   0, _4_kp,     _5_kp,   _6_kp,   _add_kp, 0,0, 0, _1_kp,     _2_kp,   _3_kp, _enter_kp, 0,          0,         0, _period, _enter_kp, 0,0, 0,0, 0,     0,0, 0, _0_kp ),};// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------// aliases// basic#define  kprrel  &kbfun_press_release#define  ktog    &kbfun_toggle// I do not see what this function could be usefull for and I do not want it.//define  ktrans  &kbfun_transparent#define ktrans &kbfun_press_release// --- layer push/pop functions#define  lpush1   &kbfun_layer_push_1#define  lpush2   &kbfun_layer_push_2#define  lpush3   &kbfun_layer_push_3#define  lpush4   &kbfun_layer_push_4#define  lpush5   &kbfun_layer_push_5#define  lpush6   &kbfun_layer_push_6#define  lpush7   &kbfun_layer_push_7#define  lpush8   &kbfun_layer_push_8#define  lpush9   &kbfun_layer_push_9#define  lpush10  &kbfun_layer_push_10#define  lpop1    &kbfun_layer_pop_1#define  lpop2    &kbfun_layer_pop_2#define  lpop3    &kbfun_layer_pop_3#define  lpop4    &kbfun_layer_pop_4#define  lpop5    &kbfun_layer_pop_5#define  lpop6    &kbfun_layer_pop_6#define  lpop7    &kbfun_layer_pop_7#define  lpop8    &kbfun_layer_pop_8#define  lpop9    &kbfun_layer_pop_9#define  lpop10   &kbfun_layer_pop_10// ---// device#define  dbtldr  &kbfun_jump_to_bootloader// special#define  sshprre  &kbfun_shift_press_release#define  s2kcap   &kbfun_2_keys_capslock_press_release#define  slpunum  &kbfun_layer_push_numpad#define  slponum  &kbfun_layer_pop_numpad// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------const void_funptr_t PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {	KB_MATRIX_LAYER(  // press: layer 0: default// unusedNULL,// left hand kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpush1, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, s2kcap, kprrel, kprrel, kprrel, kprrel, kprrel, lpush1, kprrel, kprrel, kprrel, kprrel, kprrel,                                                 kprrel, kprrel,                                           NULL,   NULL, kprrel,                                         kprrel, lpush1, kprrel,// right hand        slpunum, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,         kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,                 kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,         lpush1, kprrel, kprrel, kprrel, kprrel, kprrel, s2kcap,                         kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,   NULL,   NULL, kprrel, kprrel, kprrel ),	KB_MATRIX_LAYER(  // press: layer 1: function and symbol keys// unusedNULL,// left hand   NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans,sshprre,sshprre, kprrel, kprrel,   NULL,  lpop1, ktrans, kprrel, kprrel, kprrel, kprrel,sshprre, ktrans, kprrel, kprrel, kprrel, kprrel,sshprre, lpush2, ktrans, ktrans, ktrans, ktrans, ktrans,                                                 ktrans, ktrans,                                         ktrans, ktrans, ktrans,                                         ktrans, lpop1, ktrans,// right hand        kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,        ktrans,   NULL, kprrel,sshprre,sshprre, kprrel, kprrel,                kprrel, kprrel,sshprre,sshprre,sshprre, kprrel,        lpush2,sshprre, kprrel, kprrel, kprrel, kprrel, kprrel,                        kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel ),	KB_MATRIX_LAYER(  // press: layer 2: keyboard functions// unusedNULL,// left hand dbtldr,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,                                                   NULL,   NULL,                                           NULL,   NULL,   NULL,                                           NULL,   NULL,   NULL,// right hand          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,                  NULL,   NULL,   NULL,   NULL,   NULL,   NULL,          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,                          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL ),	KB_MATRIX_LAYER(  // press: layer 3: numpad// unusedNULL,// left hand ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, kprrel, ktrans, ktrans, ktrans,                                                 ktrans, ktrans,                                         ktrans, ktrans, ktrans,                                         ktrans, ktrans, ktrans,// right hand       slponum, ktrans,slponum, kprrel, kprrel, kprrel, ktrans,        ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,                ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,        ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,                        ktrans, ktrans, kprrel, kprrel, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, kprrel ),};// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------const void_funptr_t PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {	KB_MATRIX_LAYER(  // release: layer 0: default// unusedNULL,// left hand kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,   NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, s2kcap, kprrel, kprrel, kprrel, kprrel, kprrel,  lpop1, kprrel, kprrel, kprrel, kprrel, kprrel,                                                 kprrel, kprrel,                                           NULL,   NULL, kprrel,                                         kprrel,  lpop1, kprrel,// right hand          NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,        kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,                kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,         lpop1, kprrel, kprrel, kprrel, kprrel, kprrel, s2kcap,                        kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,   NULL,   NULL, kprrel, kprrel, kprrel ),	KB_MATRIX_LAYER(  // release: layer 1: function and symbol keys// unusedNULL,// left hand   NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans,sshprre,sshprre, kprrel, kprrel,   NULL,   NULL, ktrans, kprrel, kprrel, kprrel, kprrel,sshprre, ktrans, kprrel, kprrel, kprrel, kprrel,sshprre,  lpop2, ktrans, ktrans, ktrans, ktrans, ktrans,                                                 ktrans, ktrans,                                         ktrans, ktrans, ktrans,                                         ktrans,  lpop1, ktrans,// right hand        kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,        ktrans,   NULL, kprrel,sshprre,sshprre, kprrel, kprrel,                kprrel, kprrel,sshprre,sshprre,sshprre, kprrel,         lpop2,sshprre, kprrel, kprrel, kprrel, kprrel, kprrel,                        kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel ),                	KB_MATRIX_LAYER(  // release: layer 2: keyboard functions// unusedNULL,// left hand   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,                                                   NULL,   NULL,                                           NULL,   NULL,   NULL,                                           NULL,   NULL,   NULL,// right hand          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,                  NULL,   NULL,   NULL,   NULL,   NULL,   NULL,          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,                          NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL ),	KB_MATRIX_LAYER(  // release: layer 3: numpad// unusedNULL,// left hand ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, kprrel, ktrans, ktrans, ktrans,                                                 ktrans, ktrans,                                         ktrans, ktrans, ktrans,                                         ktrans, ktrans, ktrans,// right hand          NULL, ktrans,   NULL, kprrel, kprrel, kprrel, ktrans,        ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,                ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,        ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,                        ktrans, ktrans, kprrel, kprrel, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, kprrel ),	KB_MATRIX_LAYER(  // release: layer 3: nothing (just making sure unused			  // functions don't get compiled out)// unusedNULL,// other kprrel, lpush8,  lpop8,   NULL,   NULL,   NULL,   NULL,   NULL,   ktog, lpush9,  lpop9,   NULL,   NULL,   NULL,   NULL,   NULL, ktrans,lpush10, lpop10,   NULL,   NULL,   NULL,   NULL,   NULL, lpush1,  lpop1,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL, lpush2,  lpop2, dbtldr,   NULL,   NULL,   NULL,   NULL,   NULL, lpush3,  lpop3,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL, lpush4,  lpop4, s2kcap,   NULL,   NULL,   NULL,   NULL,   NULL, lpush5,  lpop5,slpunum,   NULL,   NULL,   NULL,   NULL,   NULL, lpush6,  lpop6,slponum,   NULL,   NULL,   NULL,   NULL,   NULL, lpush7,  lpop7,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL )};