From c122a67db94978e692a8b0b84a7c81e5448336ce Mon Sep 17 00:00:00 2001 From: Jason Trill Date: Tue, 11 Dec 2012 13:30:06 -0800 Subject: [PATCH] Added Colemak layout --- .../ergodox/layout/colemak-symbol-mod.c | 382 ++++++++++++++++++ .../ergodox/layout/colemak-symbol-mod.h | 30 ++ 2 files changed, 412 insertions(+) create mode 100755 src/keyboard/ergodox/layout/colemak-symbol-mod.c create mode 100755 src/keyboard/ergodox/layout/colemak-symbol-mod.h diff --git a/src/keyboard/ergodox/layout/colemak-symbol-mod.c b/src/keyboard/ergodox/layout/colemak-symbol-mod.c new file mode 100755 index 0000000..23b2f2c --- /dev/null +++ b/src/keyboard/ergodox/layout/colemak-symbol-mod.c @@ -0,0 +1,382 @@ +/* ---------------------------------------------------------------------------- + * ergoDOX layout : COLEMAK (modified from the Kinesis layout) + * TODO: rewrite for new kbfun's + * ---------------------------------------------------------------------------- + * Copyright (c) 2012 Ben Blazak + * Released under The MIT License (MIT) (see "license.md") + * Project located at + * ------------------------------------------------------------------------- */ + + +#include +#include +#include +#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] = { + // LAYOUT L0: COLEMAK + KB_MATRIX_LAYER( 0, + // left hand + _equal, _1, _2, _3, _4, _5, 2, + _tab, _Q, _W, _F, _P, _G, _esc, + _ctrlL, _A, _R, _S, _T, _D, + _shiftL, _Z, _X, _C, _V, _B, 2, + _guiL, _grave, _backslash, _altL, 1, + + _ctrlL, _altL, + 0, 0, _home, + _space, _enter, _end, + + // right hand + 3, _6, _7, _8, _9, _0, _dash, + _esc, _J, _L, _U, _Y, _semicolon, _backslash, + _H, _N, _E, _I, _O, _quote, + 3, _K, _M, _comma, _period, _slash, _shiftR, + 1, _arrowL, _arrowD, _arrowU, _arrowR, + + _altR, _ctrlR, + _pageU, 0, 0, + _pageD, _del, _bs ), + + + // LAYOUT L1: function and symbol keys + KB_MATRIX_LAYER( 0, + // left hand + 0, _F1, _F2, _F3, _F4, _F5, _F11, + 0, _bracketL, _bracketR, _bracketL, _bracketR, _semicolon, 0, + 0, _backslash, _slash, _9, _0, _semicolon, + 0, _1, _2, _3, _4, _5, 0, + 0, 0, 0, 0, 0, + + 0, 0, + 0, 0, 0, + 0, 0, 0, + // right hand + _F12, _F6, _F7, _F8, _F9, _F10, _power, + 0, 0, _equal, _equal, _dash, _dash, 0, + _arrowL, _arrowD, _arrowU, _arrowR, 0, 0, + 0, _6, _7, _8, _9, _0, _mute, + 0, 0, 0, 0, 0, + + 0, 0, + 0, 0, 0, + 0, 0, 0 ), + + + // LAYOUT L2: QWERTY alphanum + KB_MATRIX_LAYER( 0, + // left hand + 0, _1, _2, _3, _4, _5, 0, + 0, _Q, _W, _E, _R, _T, 0, + 0, _A, _S, _D, _F, _G, + 0, _Z, _X, _C, _V, _B, 0, + 0, 0, 0, 0, 0, + + 0, 0, + 0, 0, 0, + 0, 0, 0, + // right hand + 0, _6, _7, _8, _9, _0, 0, + 0, _Y, _U, _I, _O, _P, 0, + _H, _J, _K, _L, _semicolon, 0, + 0, _N, _M, _comma, _period, _slash, 0, + 0, 0, 0, 0, 0, + + 0, 0, + 0, 0, 0, + 0, 0, 0 ), + + + // LAYOUT L3: numpad + KB_MATRIX_LAYER( 0, + // 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, _insert, 0, 0, 0, + + 0, 0, + 0, 0, 0, + 0, 0, 0, + // right hand + 3, 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, _dec_kp, _enter_kp, 0, + + 0, 0, + 0, 0, 0, + 0, 0, _0_kp ), + +}; + +// ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- + +// aliases + +// basic +#define kprrel &kbfun_press_release +#define ktog &kbfun_toggle +#define ktrans &kbfun_transparent +// --- 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] = { + + // PRESS L0: COLEMAK + KB_MATRIX_LAYER( NULL, + // left hand + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpush2, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + s2kcap, kprrel, kprrel, kprrel, kprrel, kprrel, lpush2, + kprrel, kprrel, kprrel, kprrel, lpush1, + + kprrel, kprrel, + kprrel, NULL, NULL, + kprrel, kprrel, kprrel, + // right hand + slpunum, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + slpunum, kprrel, kprrel, kprrel, kprrel, kprrel, s2kcap, + lpush1, kprrel, kprrel, kprrel, kprrel, + + kprrel, kprrel, + kprrel, NULL, NULL, + kprrel, kprrel, kprrel ), + + + // PRESS L1: function and symbol keys + KB_MATRIX_LAYER( NULL, + // left hand + NULL, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, sshprre, sshprre, kprrel, kprrel, sshprre, ktrans, + ktrans, kprrel, kprrel, sshprre, sshprre, kprrel, + ktrans, sshprre, sshprre, sshprre, sshprre, sshprre, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans, + // right hand + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + ktrans, kprrel, kprrel, sshprre, kprrel, sshprre, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + ktrans, sshprre, sshprre, sshprre, sshprre, sshprre, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans ), + + + // PRESS L2: QWERTY + KB_MATRIX_LAYER( NULL, + // left hand + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, lpop2, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans, + // right hand + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans ), + + + // PRESS L3: numpad + KB_MATRIX_LAYER( NULL, + // 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, kprrel, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans ), + +}; + +// ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- + +const void_funptr_t PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { + + // RELEASE L0: COLEMAK + KB_MATRIX_LAYER( NULL, + // left hand + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, NULL, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + s2kcap, kprrel, kprrel, kprrel, kprrel, kprrel, lpop2, + kprrel, kprrel, kprrel, kprrel, lpop1, + + kprrel, kprrel, + kprrel, NULL, NULL, + kprrel, kprrel, kprrel, + // right hand + NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + slponum, kprrel, kprrel, kprrel, kprrel, kprrel, s2kcap, + lpop1, kprrel, kprrel, kprrel, kprrel, + + kprrel, kprrel, + kprrel, NULL, NULL, + kprrel, kprrel, kprrel ), + + + // RELEASE L1: function and symbol keys + KB_MATRIX_LAYER( NULL, + // left hand + NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + ktrans, sshprre, sshprre, kprrel, kprrel, sshprre, ktrans, + ktrans, kprrel, kprrel, sshprre, sshprre, kprrel, + ktrans, sshprre, sshprre, sshprre, sshprre, sshprre, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans, + // right hand + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + ktrans, kprrel, kprrel, sshprre, kprrel, sshprre, kprrel, + kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, + ktrans, sshprre, sshprre, sshprre, sshprre, sshprre, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans ), + + + // RELEASE L2: QWERTY + KB_MATRIX_LAYER( NULL, + // left hand + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, NULL, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans, + // right hand + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, kprrel, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, ktrans, ktrans, ktrans, ktrans, + + ktrans, ktrans, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans ), + + + // RELEASE L3: numpad + KB_MATRIX_LAYER( NULL, + // 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, + lpop3, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, + ktrans, ktrans, kprrel, kprrel, ktrans, + + ktrans, kprrel, + ktrans, ktrans, ktrans, + ktrans, ktrans, ktrans ), + + + // RELEASE L3: nothing (just making sure unused + // functions don't get compiled out) + KB_MATRIX_LAYER( NULL, + // 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 ) + +}; + diff --git a/src/keyboard/ergodox/layout/colemak-symbol-mod.h b/src/keyboard/ergodox/layout/colemak-symbol-mod.h new file mode 100755 index 0000000..4b7f858 --- /dev/null +++ b/src/keyboard/ergodox/layout/colemak-symbol-mod.h @@ -0,0 +1,30 @@ +/* ---------------------------------------------------------------------------- + * ergoDOX : layout : COLEMAK : exports + * ---------------------------------------------------------------------------- + * Copyright (c) 2012 Ben Blazak + * Released under The MIT License (MIT) (see "license.md") + * Project located at + * ------------------------------------------------------------------------- */ + + +#ifndef KEYBOARD__ERGODOX__LAYOUT__COLEMAK_h + #define KEYBOARD__ERGODOX__LAYOUT__COLEMAK_h + + #include "../controller.h" + + // -------------------------------------------------------------------- + + #define kb_led_num_on() _kb_led_1_on() + #define kb_led_num_off() _kb_led_1_off() + #define kb_led_caps_on() _kb_led_2_on() + #define kb_led_caps_off() _kb_led_2_off() + #define kb_led_scroll_on() _kb_led_3_on() + #define kb_led_scroll_off() _kb_led_3_off() + + // -------------------------------------------------------------------- + + #include "./default--led-control.h" + #include "./default--matrix-control.h" + +#endif +