The Ordinary Layout is the most natural and powerful layout for the Ergodox EZ. Come check it out.

This commit is contained in:
Nicholas Keene 2016-05-04 22:17:47 -05:00
parent 4b74eca2a5
commit 5daf24b1a5
9 changed files with 68 additions and 50 deletions

View File

@ -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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -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"],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

@ -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"],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

@ -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"],

View File

@ -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.