diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 871bda672c..6905cbc7a6 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -4,25 +4,27 @@ #include "action_layer.h" #include "action_util.h" -#define BASE 0 // default layer -#define SYMB 1 // symbols layer -#define MDIA 2 // media layer -#define LOCK 3 // shift-lock layer +#define BASE 0 // default layer +#define SYMB 1 // symbols layer +#define MDIA 2 // media layer +#define LOCK 3 // shift-lock layer -#define LSymb 0 // left symbol-shift key -#define LMdia 1 // left media-shift key -#define LLock 2 // left shift-lock key -#define RSymb 3 // right symbol-shift key -#define RMdia 4 // right media-shift key -#define RLock 5 // right shift-lock key +#define LCaps 10 // left caps-shift key +#define LSymb 11 // left symbol-shift key +#define LMdia 12 // left media-shift key +#define LLock 13 // left shift-lock key +#define RCaps 20 // right caps-shift key +#define RSymb 21 // right symbol-shift key +#define RMdia 22 // right media-shift key +#define RLock 23 // right shift-lock key -#define MUL 6 // mouse up left -#define MUR 7 // mouse up right -#define MDL 8 // mouse down left -#define MDR 9 // mouse down right +#define MUL 30 // mouse up left +#define MUR 31 // mouse up right +#define MDL 32 // mouse down left +#define MDR 33 // mouse down right /* - * The Ordinary Layout for the Ergodox EZ keyboard, v3.14 + * The Ordinary Layout for the Ergodox EZ keyboard, v3.141 * * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com * @@ -41,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------| - * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | + * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | LShift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | * `-----------------------------------' `-----------------------------------' @@ -50,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,------|------|------| |------+------+------. * | | | PgUp | | Up | | | * |Backsp| Del |------| |------| Enter| Space| - * | | | PgDn | | Down | | | + * | | | PgDn | | Down | | |Aa * `--------------------' `--------------------' */ [BASE] = KEYMAP( @@ -58,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { F(LLock) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC ,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G -,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) ,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT,KC_LGUI ,KC_HOME,KC_END ,KC_PGUP @@ -67,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RLock) ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) - ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps) ,KC_RGUI,KC_RALT,KC_HYPR ,KC_MEH ,KC_RCTL ,KC_LEFT ,KC_RGHT ,KC_UP @@ -125,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| - * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | + * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | RShift | | * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| * `---------------------------------------------' `---------------------------------------------' @@ -151,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS ,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_MAIL ,KC_TRNS ,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_TRNS - ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS + ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_RSFT ,KC_TRNS ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL ,KC_MPRV ,KC_MNXT ,KC_VOLU @@ -213,6 +215,7 @@ const uint16_t PROGMEM fn_actions[] = { ,[RLock] = ACTION_MACRO_TAP(RLock) }; +uint16_t caps_shift = 0; uint16_t symb_shift = 0; // there are two shift keys for each layer, and two lock uint16_t mdia_shift = 0; // keys; we increment a counter for each key pressed and uint16_t shift_lock = 0; // decrement when released. @@ -223,15 +226,30 @@ bool mdia_lock = false; // key the lock flag is toggled const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - // shift and lock between layers + // shift and lock between layers?L? + + case LCaps: // both caps-shift keys trigger Left Shift + case RCaps: // so they don't interfere with the magic combo + if (record->event.pressed && !record->tap.count) { + if(++caps_shift > 2) caps_shift = 2; + if(shift_lock) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } + register_code(KC_LSFT); + } else { + if(--caps_shift < 0) caps_shift = 0; + if(!caps_shift) unregister_code(KC_LSFT); + } + break; case LSymb: if (record->event.pressed) { - symb_shift++; + if(++symb_shift > 2) symb_shift = 2; if(shift_lock) symb_lock = !symb_lock; layer_on(SYMB); } else { - symb_shift--; + if(--symb_shift < 0) symb_shift = 0; if((!symb_shift) && (!symb_lock)) layer_off(SYMB); } break; @@ -241,7 +259,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_TAB); } else { - mdia_shift++; + if(++mdia_shift > 2) mdia_shift = 2; if(shift_lock) mdia_lock = !mdia_lock; layer_on(MDIA); } @@ -249,7 +267,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_TAB); } else { - mdia_shift--; + if(--mdia_shift < 0) mdia_shift = 0; if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); } } @@ -257,20 +275,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case LLock: if (record->event.pressed) { - shift_lock++; - if(symb_shift) symb_lock = !symb_lock; - if(mdia_shift) mdia_lock = !mdia_lock; - if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { + if(++shift_lock > 2) shift_lock = 2; + if(caps_shift) { register_code(KC_CAPS); unregister_code(KC_CAPS); } + if(symb_shift) symb_lock = !symb_lock; + if(mdia_shift) mdia_lock = !mdia_lock; layer_on(LOCK); } else { if(record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { register_code(KC_GRV); unregister_code(KC_GRV); } - shift_lock--; + if(--shift_lock < 0) shift_lock = 0; if(!shift_lock) layer_off(LOCK); } break; @@ -280,7 +298,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_QUOT); } else { - symb_shift++; + if(++symb_shift > 2) symb_shift = 2; if(shift_lock) symb_lock = !symb_lock; layer_on(SYMB); } @@ -288,7 +306,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_QUOT); } else { - symb_shift--; + if(--symb_shift < 0) symb_shift = 0; if((!symb_shift) && (!symb_lock)) layer_off(SYMB); } } @@ -299,7 +317,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_BSLS); } else { - mdia_shift++; + if(++mdia_shift > 2) mdia_shift = 2; if(shift_lock) mdia_lock = !mdia_lock; layer_on(MDIA); } @@ -307,7 +325,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_BSLS); } else { - mdia_shift--; + if(--mdia_shift < 0) mdia_shift = 0; if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); } } @@ -315,20 +333,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case RLock: if (record->event.pressed) { - shift_lock++; + if(++shift_lock > 2) shift_lock = 2; + if(caps_shift) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } if(symb_shift) symb_lock = !symb_lock; if(mdia_shift) mdia_lock = !mdia_lock; - if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); - } layer_on(LOCK); } else { if (record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { register_code(KC_EQL); unregister_code(KC_EQL); } - shift_lock--; + if(--shift_lock < 0) shift_lock = 0; if(!shift_lock) layer_off(LOCK); } break; diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png index 69af8df4e1..2864031b1b 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt index 04792f2dfc..66cd05503e 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt @@ -14,12 +14,12 @@ [{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"], [{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."], [{y:-0.875,x:5.5},"B",{x:6.5},"N"], -[{y:-0.875,c:"#2277ff",fa:[0,1,0,1,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5,f:3},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"], -[{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"], -[{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"], +[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#77aaff",f:3},"Option\n\n\nLAlt",{x:10.5,f:3},"Option\n\n\nRAlt"], +[{y:-0.875,x:2.5},"Hyper",{x:1,f:3},"Cmd\n\n\nSuper",{x:8.5,f:3},"Cmd\n\n\nSuper",{x:1},"Hyper"], +[{y:-0.75,x:0.5,f:3},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh",{f:3},"Ctrl\n\n\nRCtrl"], [{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"], -[{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], +[{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], [{x:2},"Page\n\n\n\n\n\nDown"], [{r:-30,rx:13,y:-1,x:-3},"Left","Right"], [{x:-3},"Up",{h:2},"Enter",{h:2},"Space"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index f3fed3cdbe..85b08cc092 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt index f1ecd5fdce..815e2f5baf 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt @@ -14,8 +14,8 @@ [{y:-0.75,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], [{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#ffb063"},"End",{x:1},"Page\n\n\n\n\n\nDown"], [{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#cccccc",a:7},""], -[{y:-0.875,c:"#2277ff",a:4,fa:[0,1,0,0,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063"},"Delete\n\n\nOption"], +[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5,c:"#77aaff",a:4},"RShift",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063",fa:[0,0,0,1]},"Delete\n\n\nOption"], [{y:-0.875,x:2.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Crtl\n\n\nRCtrl"], [{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ccbb00"},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png index 8a0cfd63f8..2cf2cb2b10 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt index 93f632e955..4b6a6cb95e 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt @@ -14,7 +14,7 @@ [{y:-0.75,x:3.5,c:"#bbddbb"},"[",{x:10.5,c:"#89b087"},"2"], [{y:-0.875,x:2.5,c:"#bbddbb"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"], [{y:-0.875,x:5.5,c:"#bbddbb"},"~",{x:6.5},"\\"], -[{y:-0.875,c:"#2277ff",f2:1,w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#bbddbb"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], +[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#bbddbb"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5,c:"#89b087"},".\n\n\nOption"], [{y:-0.875,x:2.5,c:"#77aaff"},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5,c:"#89b087"},"0\n\n\nCmd",{x:1},"=\n\n\nHyper"], [{y:-0.75,x:0.5,c:"#77aaff"},"Ctrl\n\n\nLCtrl","Meh",{x:14.5,c:"#89b087"},"+\n\n\nMeh","Enter\n\n\nCtrl"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 6a42b7098a..25fdc51714 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index f264dd48fb..163b5d9021 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -67,7 +67,7 @@ Alas, the yellow keys have at best spotty success with common software. Good luc ## Switching Between Layers ## -In addition to Symbols and Media the Ordinary Layout treats the Capitals as a logical layer. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. +In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. (Note: it is exactly the same as pressing the *left* shift key; the *right* shift key is only available on the Media layer because holding both shift keys is the 'magic' command combo for this keyboard so it is inconviently locate to minimize accidents.) Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock layers using the Shift key in conjunction with the Shift Lock key. For instance, the widely and rightly loathed Caps Lock is engaged by pressing the Shift Lock button then Capitals Shift. Or, hold down the Shift key and press the Shift Lock key; it works either way. All the Shift keys work this way.