diff --git a/src/keyboard/ergodox/layout/qwerty.c b/src/keyboard/ergodox/layout/qwerty.c index 65ce0d4..51d04e1 100644 --- a/src/keyboard/ergodox/layout/qwerty.c +++ b/src/keyboard/ergodox/layout/qwerty.c @@ -19,13 +19,21 @@ #include "../layout.h" +// aliases +#define f_press &kbfun_press +#define f_relea &kbfun_release +#define f_l_inc &kbfun_layer_inc +#define f_l_dec &kbfun_layer_dec + + // error check: everything below assumes these dimensions -#if KB_LAYERS != 1 || KB_ROWS != 12 || KB_COLUMNS != 7 +#if KB_LAYERS != 2 || KB_ROWS != 12 || KB_COLUMNS != 7 #error "Expecting different keyboard dimensions" #endif uint8_t PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { +// ---------------------------------------------------------------------------- LAYER( // layer 0: default // unused 0, @@ -33,7 +41,7 @@ uint8_t PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { _grave, _1, _2, _3, _4, _5, _equal, _tab, _Q, _W, _E, _R, _T, _esc, _capsLock, _A, _S, _D, _F, _G, -_shiftL, _Z, _X, _C, _V, _B, _ctrlL, +_shiftL, _Z, _X, _C, _V, _B, 0/*inc*/, _guiL, _arrowL, _arrowU, _arrowD, _arrowR, _bs, _del, _ctrlL, @@ -42,20 +50,131 @@ _guiL, _arrowL, _arrowU, _arrowD, _arrowR, _backslash, _6, _7, _8, _9, _0, _dash, _bracketL, _Y, _U, _I, _O, _P, _bracketR, _H, _J, _K, _L, _semicolon, _quote, - _ctrlR, _N, _M, _comma, _period, _slash, _shiftR, + 0/*inc*/, _N, _M, _comma, _period, _slash, _shiftR, _arrowL, _arrowD, _arrowU, _arrowR, _guiR, _space, _ctrlR, _enter, +_altR, _pageU, _pageD ), +// ---------------------------------------------------------------------------- + LAYER( // layer 1: function and symbol keys +// unused +0, +// left hand +0, _F1, _F2, _F3, _F4, _F5, _F11, +0, _braceL_kp, _braceR_kp, _bracketL, _bracketR, 0, _esc, +0, _semicolon, _slash, _dash, 0, _colon_kp, +0, 0, 0, 0, 0, 0, 0/*dec*/, +0, _arrowL, _arrowU, _arrowD, _arrowR, + _bs, + _del, _ctrlL, + _end, _home, _altL, +// right hand + _F12, _F6, _F7, _F8, _F9, _F10, 0, + 0, 0, _dash, _lt_kp, _gt_kp, _currencyUnit, 0, + _backslash, 0, _parenL_kp, _parenR_kp, _equal, 0, + 0/*dec*/, _mul_kp, 0, 0, 0, 0, 0, + _arrowL, _arrowD, _arrowU, _arrowR, 0, + _space, +_ctrlR, _enter, _altR, _pageU, _pageD ) +// ---------------------------------------------------------------------------- }; kbfun_funptr_t PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { - LAYER_SET_ALL(NULL, &kbfun_press) // layer 0: default +// ---------------------------------------------------------------------------- + LAYER( // layer 0: default +// unused +NULL, +// left hand +f_press,f_press,f_press,f_press,f_press,f_press,f_press, +f_press,f_press,f_press,f_press,f_press,f_press,f_press, +f_press,f_press,f_press,f_press,f_press,f_press, +f_press,f_press,f_press,f_press,f_press,f_press,f_l_inc, +f_press,f_press,f_press,f_press,f_press, + f_press, + f_press, f_press, + f_press,f_press,f_press, +// right hand + f_press,f_press,f_press,f_press,f_press,f_press,f_press, + f_press,f_press,f_press,f_press,f_press,f_press,f_press, + f_press,f_press,f_press,f_press,f_press,f_press, + f_l_inc,f_press,f_press,f_press,f_press,f_press,f_press, + f_press,f_press,f_press,f_press,f_press, + f_press, +f_press, f_press, +f_press,f_press,f_press ), +// ---------------------------------------------------------------------------- + LAYER( // layer 1: function and symbol keys +// unused +NULL, +// left hand +f_press,f_press,f_press,f_press,f_press,f_press,f_press, +f_press,f_press,f_press,f_press,f_press,f_press,f_press, +f_press,f_press,f_press,f_press,f_press,f_press, +f_press,f_press,f_press,f_press,f_press,f_press, NULL, +f_press,f_press,f_press,f_press,f_press, + f_press, + f_press, f_press, + f_press,f_press,f_press, +// right hand + f_press,f_press,f_press,f_press,f_press,f_press,f_press, + f_press,f_press,f_press,f_press,f_press,f_press,f_press, + f_press,f_press,f_press,f_press,f_press,f_press, + NULL,f_press,f_press,f_press,f_press,f_press,f_press, + f_press,f_press,f_press,f_press,f_press, + f_press, +f_press, f_press, +f_press,f_press,f_press ) +// ---------------------------------------------------------------------------- }; kbfun_funptr_t PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { - LAYER_SET_ALL(NULL, &kbfun_release) // layer 0: default +// ---------------------------------------------------------------------------- + LAYER( // layer 0: default +// unused +NULL, +// left hand +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, NULL, +f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea, + f_relea, f_relea, + f_relea,f_relea,f_relea, +// right hand + f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + NULL,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea, +f_relea, f_relea, +f_relea,f_relea,f_relea ), +// ---------------------------------------------------------------------------- + LAYER( // layer 1: function and symbol keys +// unused +NULL, +// left hand +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, +f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_l_dec, +f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea, + f_relea, f_relea, + f_relea,f_relea,f_relea, +// right hand + f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + f_l_dec,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea,f_relea,f_relea,f_relea,f_relea, + f_relea, +f_relea, f_relea, +f_relea,f_relea,f_relea ) +// ---------------------------------------------------------------------------- }; diff --git a/src/keyboard/ergodox/layout/qwerty.h b/src/keyboard/ergodox/layout/qwerty.h index a94f2c5..097927a 100644 --- a/src/keyboard/ergodox/layout/qwerty.h +++ b/src/keyboard/ergodox/layout/qwerty.h @@ -13,7 +13,7 @@ #include "../led.h" - #define KB_LAYERS 1 // must match what's defined in "qwerty.c" + #define KB_LAYERS 2 // must match what's defined in "qwerty.c" #define kb_led_num_on() _led_1_on() #define kb_led_num_off() _led_1_off() diff --git a/src/lib/key-functions.c b/src/lib/key-functions.c index de037ef..38119d6 100644 --- a/src/lib/key-functions.c +++ b/src/lib/key-functions.c @@ -19,31 +19,6 @@ #include "key-functions.h" -// ---------------------------------------------------------------------------- - -#if 0 // not being used right now -static uint8_t _inc_current_layer(uint8_t * current_layer) { - if (*current_layer < (KB_LAYERS-1)) - (*current_layer)++; - else - return 1; // error: can't increase - - return 0; // success -} - -static uint8_t _dec_current_layer(uint8_t * current_layer) { - if (*current_layer > 0) - (*current_layer)--; - else - return 1; // error: can't decrease - - return 0; // success -} -#endif - - -// ---------------------------------------------------------------------------- - void kbfun_press( uint8_t keycode, uint8_t * current_layer, uint8_t * row, uint8_t * col ) { @@ -116,3 +91,24 @@ void kbfun_release( } } +void kbfun_layer_inc( + uint8_t keycode, uint8_t * current_layer, + uint8_t * row, uint8_t * col ) { + + if (*current_layer < (KB_LAYERS-1)) + (*current_layer)++; + // else do nothing +} + +void kbfun_layer_dec( + uint8_t keycode, uint8_t * current_layer, + uint8_t * row, uint8_t * col ) { + + if (*current_layer > 0) + (*current_layer)--; + // else do nothing +} + + +// ---------------------------------------------------------------------------- + diff --git a/src/lib/key-functions.h b/src/lib/key-functions.h index 9437251..fa4a819 100644 --- a/src/lib/key-functions.h +++ b/src/lib/key-functions.h @@ -22,6 +22,12 @@ void kbfun_release( uint8_t keycode, uint8_t * current_layer, uint8_t * row, uint8_t * col ); + void kbfun_layer_inc( + uint8_t keycode, uint8_t * current_layer, + uint8_t * row, uint8_t * col ); + void kbfun_layer_dec( + uint8_t keycode, uint8_t * current_layer, + uint8_t * row, uint8_t * col ); #endif