summaryrefslogtreecommitdiffstats
path: root/keyboard/ergodox_ez
diff options
context:
space:
mode:
authorNicholas Keene <git@nicholaskeene.com>2016-05-05 22:55:55 -0500
committerNicholas Keene <git@nicholaskeene.com>2016-05-05 23:10:51 -0500
commit90a65347294e93ee23c1f24c6ae342a42e6c2b29 (patch)
treeae71f001909733a3cde3cd782a5c730b77062e5d /keyboard/ergodox_ez
parent5daf24b1a5e2d6b07c90b87d9225db4d28aa2aa2 (diff)
The Ordinary Layout is extraordinarily familiar and powerful
Diffstat (limited to 'keyboard/ergodox_ez')
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/keymap.c197
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.pngbin100472 -> 99605 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt10
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.pngbin124173 -> 124144 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt8
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.pngbin0 -> 63065 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt27
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.pngbin103677 -> 103735 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt4
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex2415
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/readme.md37
11 files changed, 1373 insertions, 1325 deletions
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
index 6905cbc7a6..6af3720fdc 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
@@ -7,26 +7,29 @@
#define BASE 0 // default layer
#define SYMB 1 // symbols layer
#define MDIA 2 // media layer
-#define LOCK 3 // shift-lock layer
+#define SPEC 3 // special layer
#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 LSpec 13 // left special-shift key
+#define RCaps 14 // right caps-shift key
+#define RSymb 15 // right symbol-shift key
+#define RMdia 16 // right media-shift key
+#define RSpec 17 // right special-shift key
-#define MUL 30 // mouse up left
-#define MUR 31 // mouse up right
-#define MDL 32 // mouse down left
-#define MDR 33 // mouse down right
+#define MUL 20 // mouse up left
+#define MUR 21 // mouse up right
+#define MDL 22 // mouse down left
+#define MDR 23 // mouse down right
/*
- * The Ordinary Layout for the Ergodox EZ keyboard, v3.141
+ * The Ordinary Layout for the Ergodox EZ keyboard, v4
*
* Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
+ *
+ * No rights reserved. This software is in the public domain.
+ * Credit me if you are friendly but if you're a jerk don't bother.
*
* Details: readme.md
* https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary
@@ -36,37 +39,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/******* Base Layer ********************************************************************************************************
*
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | Lock `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Lock |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol |
- * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------|
- * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | LShift |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl |
- * `-----------------------------------' `-----------------------------------'
- * ,-------------. ,-------------.
- * | Home | End | | Left | Right|
- * ,------|------|------| |------+------+------.
- * | | | PgUp | | Up | | |
- * |Backsp| Del |------| |------| Enter| Space|
- * | | | PgDn | | Down | | |Aa
- * `--------------------' `--------------------'
+ * ,------------------------------------------------------. ,------------------------------------------------------.
+ * | Special `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Special |
+ * |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------|
+ * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media |
+ * |------------+------+------+------+------+------| | | |------+------+------+------+------+------------|
+ * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol |
+ * |------------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+------------|
+ * | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals |
+ * `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------'
+ * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl |
+ * `-----------------------------------' `-----------------------------------'
+ * ,-------------. ,-------------.
+ * | Home | End | | Left | Right|
+ * ,------|------|------| |------+------+------.
+ * | | | PgUp | | Up | | |
+ * |Backsp| Del |------| |------| Enter| Space|
+ * | | | PgDn | | Down | | |
+ * `--------------------' `--------------------'
*/
[BASE] = KEYMAP(
// left hand
- F(LLock) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC
+ F(LSpec),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
-,M(LCaps) ,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
,KC_BSPC,KC_DEL ,KC_PGDN
// right hand
- ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RLock)
+ ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec)
,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 ,M(RCaps)
@@ -127,7 +130,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 | RShift | |
+ * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | |
* `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------'
* |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl|
* `---------------------------------------------' `---------------------------------------------'
@@ -153,14 +156,14 @@ 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_RSFT ,KC_TRNS
+ ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS
,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL
,KC_MPRV ,KC_MNXT
,KC_VOLU
,KC_VOLD ,KC_MSTP ,KC_MPLY
),
-/******* Lock Layer ********************************************************************************************************
+/******* Special Layer *****************************************************************************************************
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | | Esc | | | | | | | | | | | | Bspc | |
@@ -169,7 +172,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | | | | | | |------| |------| | | | | | |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK |
+ * | | | | | | | | | | | | | | | RShift |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
@@ -181,12 +184,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | |
* `--------------------' `--------------------'
*/
-[LOCK] = KEYMAP(
+[SPEC] = KEYMAP(
// left hand
KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
,KC_TRNS ,KC_TRNS
@@ -196,7 +199,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_RSFT
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
,KC_TRNS ,KC_TRNS
@@ -206,65 +209,77 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
const uint16_t PROGMEM fn_actions[] = {
- // the six faux shift keys are implemented as macro taps
- [LSymb] = ACTION_MACRO_TAP(LSymb)
+ // the faux shift keys are implemented as macro taps
+ [LCaps] = ACTION_MACRO_TAP(LCaps)
+ ,[LSymb] = ACTION_MACRO_TAP(LSymb)
,[LMdia] = ACTION_MACRO_TAP(LMdia)
- ,[LLock] = ACTION_MACRO_TAP(LLock)
+ ,[LSpec] = ACTION_MACRO_TAP(LSpec)
+ ,[RCaps] = ACTION_MACRO_TAP(RCaps)
,[RSymb] = ACTION_MACRO_TAP(RSymb)
,[RMdia] = ACTION_MACRO_TAP(RMdia)
- ,[RLock] = ACTION_MACRO_TAP(RLock)
+ ,[RSpec] = ACTION_MACRO_TAP(RSpec)
};
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.
+uint16_t symb_shift = 0;
+uint16_t mdia_shift = 0;
-bool symb_lock = false; // when shift-lock is used in conjunction with a shift
-bool mdia_lock = false; // key the lock flag is toggled
+bool symb_lock = false;
+bool mdia_lock = false;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
- // shift and lock between layers?L?
+ // There are two shift keys for each layer so we increment a layer_shift var when one
+ // is pressed and decrement when one is released. If both are pressed at the same time
+ // then the layer is locked (or unlocked). The shift counts are bound between 0 and 2
+ // only because sometimes rapid pressing led to irregular events; this way the states
+ // are self healing during use.
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) {
+ if(caps_shift == 2) {
register_code(KC_CAPS);
unregister_code(KC_CAPS);
+ } else if(caps_shift == 1) {
+ register_code(KC_LSFT);
}
- register_code(KC_LSFT);
} else {
if(--caps_shift < 0) caps_shift = 0;
- if(!caps_shift) unregister_code(KC_LSFT);
+ if(caps_shift == 0) unregister_code(KC_LSFT);
}
break;
case LSymb:
if (record->event.pressed) {
if(++symb_shift > 2) symb_shift = 2;
- if(shift_lock) symb_lock = !symb_lock;
- layer_on(SYMB);
+ if(symb_shift == 2) {
+ symb_lock = !symb_lock;
+ } else if(symb_shift == 1) {
+ layer_on(SYMB);
+ }
} else {
if(--symb_shift < 0) symb_shift = 0;
- if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
+ if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB);
}
break;
case LMdia:
if (record->event.pressed) {
- if (record->tap.count && !shift_lock) {
+ if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
register_code(KC_TAB);
} else {
if(++mdia_shift > 2) mdia_shift = 2;
- if(shift_lock) mdia_lock = !mdia_lock;
- layer_on(MDIA);
+ if(mdia_shift == 2) {
+ mdia_lock = !mdia_lock;
+ } else if(mdia_shift == 1) {
+ layer_on(MDIA);
+ }
}
} else {
- if(record->tap.count && !shift_lock) {
+ if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
unregister_code(KC_TAB);
} else {
if(--mdia_shift < 0) mdia_shift = 0;
@@ -273,37 +288,36 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
break;
- case LLock:
+ case LSpec:
if (record->event.pressed) {
- 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) {
+ if (record->tap.count && !record->tap.interrupted) {
register_code(KC_GRV);
+ } else {
+ layer_on(SPEC);
+ }
+ } else {
+ if(record->tap.count && !record->tap.interrupted) {
unregister_code(KC_GRV);
+ } else {
+ layer_off(SPEC);
}
- if(--shift_lock < 0) shift_lock = 0;
- if(!shift_lock) layer_off(LOCK);
}
break;
case RSymb:
if (record->event.pressed) {
- if (record->tap.count && !shift_lock) {
+ if (record->tap.count && (!symb_shift) && (!symb_lock)) {
register_code(KC_QUOT);
} else {
if(++symb_shift > 2) symb_shift = 2;
- if(shift_lock) symb_lock = !symb_lock;
- layer_on(SYMB);
+ if(symb_shift == 2) {
+ symb_lock = !symb_lock;
+ } else if(symb_shift == 1) {
+ layer_on(SYMB);
+ }
}
} else {
- if(record->tap.count && !shift_lock) {
+ if(record->tap.count && symb_shift == 0) {
unregister_code(KC_QUOT);
} else {
if(--symb_shift < 0) symb_shift = 0;
@@ -314,15 +328,18 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case RMdia:
if (record->event.pressed) {
- if (record->tap.count && !shift_lock) {
+ if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
register_code(KC_BSLS);
} else {
if(++mdia_shift > 2) mdia_shift = 2;
- if(shift_lock) mdia_lock = !mdia_lock;
- layer_on(MDIA);
+ if(mdia_shift == 2) {
+ mdia_lock = !mdia_lock;
+ } else if(mdia_shift == 1) {
+ layer_on(MDIA);
+ }
}
} else {
- if(record->tap.count && !shift_lock) {
+ if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
unregister_code(KC_BSLS);
} else {
if(--mdia_shift < 0) mdia_shift = 0;
@@ -331,23 +348,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
break;
- case RLock:
+ case RSpec:
if (record->event.pressed) {
- if(++shift_lock > 2) shift_lock = 2;
- if(caps_shift) {
- register_code(KC_CAPS);
- unregister_code(KC_CAPS);
+ if (record->tap.count && !record->tap.interrupted) {
+ register_code(KC_EQL);
+ } else {
+ layer_on(SPEC);
}
- 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_EQL);
+ if(record->tap.count && !record->tap.interrupted) {
unregister_code(KC_EQL);
+ } else {
+ layer_off(SPEC);
}
- 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 2864031b1b..9c561a10aa 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
index 66cd05503e..25731ea2e6 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
@@ -1,7 +1,7 @@
[{x:3.5},"#\n3",{x:10.5},"*\n8"],
[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"],
[{y:-0.875,x:5.5},"%\n5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc"},"_\n\n\n\n\n\n-","^\n6"],
-[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n~\n\n\n\nLock\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#2277ff",w:1.5},"+\n\nShift\n\n\n\n=\nLock"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n~\n\n\n\nShift\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#2277ff",w:1.5},"+\n\nSpecial\n\n\n\n=\nShift"],
[{y:-0.375,x:3.5,c:"#cccccc"},"E",{x:10.5},"I"],
[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"],
[{y:-0.875,x:5.5},"T",{h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]","Y"],
@@ -15,11 +15,11 @@
[{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",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"],
+[{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"],
[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"],
-[{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"],
+[{h:2},"< Del\n\n\nBackspace",{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 85b08cc092..99e5ed80b1 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
index 815e2f5baf..4eccc9f350 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
@@ -1,7 +1,7 @@
[{x:3.5,c:"#99de2a"},"F13",{x:10.5},"F18"],
[{y:-0.875,x:2.5},"F12",{x:1},"F14",{x:8.5},"F17",{x:1},"F19"],
-[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F16"],
-[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"],
+[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#737373",a:7},"",{c:"#99de2a",a:4},"F16"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
[{y:-0.375,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"],
[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#ffb063"},"Home",{x:1},"Page\n\n\n\n\n\nUp"],
[{y:-0.875,x:5.5,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#e6e067"},"Print\n\n\n\n\n\nScreen"],
@@ -13,8 +13,8 @@
[{y:-0.625,x:6.5,c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"],
[{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,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.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#737373",a:7},""],
+[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#737373",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,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"],
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png
new file mode 100644
index 0000000000..6eecf447ee
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt
new file mode 100644
index 0000000000..a08827c6de
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt
@@ -0,0 +1,27 @@
+[{x:3.5,a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
+[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"],
+[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"",{h:2},"",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"",{h:2},""],
+[{x:-3},""]
+
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
index 2cf2cb2b10..e4de64a96f 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
index 4b6a6cb95e..e199f5c59f 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
@@ -1,7 +1,7 @@
[{x:3.5,c:"#99de2a"},"F3",{x:10.5},"F8"],
[{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"],
[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#bbddbb"},"_\n\n\n\n\n\n-",{c:"#99de2a"},"F6"],
-[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
[{y:-0.375,x:3.5,c:"#bbddbb"},"{",{x:10.5,c:"#89b087"},"8"],
[{y:-0.875,x:2.5,c:"#bbddbb"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"],
[{y:-0.875,x:5.5,c:"#bbddbb"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"],
@@ -22,6 +22,6 @@
[{h:2},"Space",{h:2},"Enter","Up"],
[{x:2},"Down"],
[{r:-30,rx:13,y:-1,x:-3},"Home","End"],
-[{x:-3},"Page\n\n\n\n\n\nUp",{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete"],
+[{x:-3},"Page\n\n\n\n\n\nUp",{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete"],
[{x:-3},"Page\n\n\n\n\n\nDown"]
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
index 25fdc51714..347b494643 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
@@ -1,1215 +1,1202 @@
-:100000000C94E7020C942B030C942B030C942B03FD
-:100010000C942B030C942B030C942B030C942B03A8
-:100020000C942B030C942B030C94B10E0C94830FA3
-:100030000C942B030C942B030C942B030C942B0388
-:100040000C942B030C9402240C942B030C942B0380
-:100050000C942B030C94A61D0C942B030C942B03D3
-:100060000C942B030C942B030C942B030C942B0358
-:100070000C942B030C942B030C942B030C942B0348
-:100080000C942B030C942B030C942B030C942B0338
-:100090000C942B030C942B030C942B030C942B0328
-:1000A0000C942B030C942B030C942B033B036A033B
-:1000B000A603DF03F804F804F804F804F804F804CD
-:1000C0003B038A03C3036704F804F804F804F80444
-:1000D000F804F804BB04C504CF04E104E80F0A10D7
-:1000E000F5100A10F5104C106F10F510C410D71051
-:1000F000D113D11312141214541490149016901694
-:10010000A81490169F159F156A16901690167E16C5
-:1001100000000000000000000000000000000000DF
-:100120000000000000000BC80CC80DC80000000053
-:100130000000000000000000000015C816C817C825
-:100140000D200C200B300A30E00000001E001400CF
-:1001500004001D0000074E001F001A0016001B00BF
-:10016000000F4C002000080007000600E2002A00F3
-:100170002100150009001900E3004B0022001700C0
-:100180000A00050000004A0029002F0000002B0291
-:1001900000004D002D00300000002B00000050003A
-:1001A00023001C000B00110000004F002400180069
-:1001B0000D001000E700520025000C000E00360074
-:1001C000E6002C00260012000F003700000F280068
-:1001D00027001300330038000007510017201620B5
-:1001E00015201430E40000000100010001000100AE
-:1001F000E00000003A001E02200222020007510027
-:100200003B001F0221022302000F28003C002F02A6
-:1002100026022F00E2002C003D00300227023000B1
-:10022000E30052003E002402350035020000500079
-:100230002900360200002B0000004F002D0037027D
-:1002400000002B0200004A003F003102380031005C
-:1002500000004D004000240021001E0027784B00C4
-:100260004100250022001F0037744C004200260088
-:10027000230020002E7F2A004300380025022D0095
-:100280002E774E00010001000100010028710000DE
-:100290000100010001000100E000000044006600D0
-:1002A000A60000000007B50045001E30F200203017
-:1002B000F60000006800F000F100F100F400B60064
-:1002C00069001F30F3002130F500B4006A00A90076
-:1002D000AA00A8000000B8002900F9000000FA00F8
-:1002E0000000B9000000F9000000FA000000AC00B6
-:1002F0006B004600530000000000AB006C004A0099
-:1003000050004D004978A9006D0052005100510085
-:100310004C74AE006E004B004F004E00000FAD005D
-:100320006F00B100B300E5000007AA000100010062
-:1003300001000100E400000001000100010039009B
-:10034000010000002900010001000100010001007E
-:100350000100010001000100010001000100010095
-:100360000100010001000100010001000100010085
-:100370000100010001000100010001000000010076
-:100380000100010000000100000001000100010067
-:100390000000010000000100010001000100010057
-:1003A0000000010001000100010001000100010046
-:1003B0000100010001000100010001000100010035
-:1003C00001000100010001002A00010001000100FC
-:1003D00001000100010001000100390001000000DE
-:1003E00016034500720067006F0044006F0078003C
-:1003F000200045005A000000160345007200670007
-:100400006F0044006F007800200045005A00000093
-:100410000403090409026D00040100A0FA090400A4
-:10042000000103010100092111010001223F000721
-:1004300005810308000A0904010001030102000903
-:100440002111010001224D000705820308000A095D
-:1004500004020001030000000921110100012236FD
-:10046000000705830308000A0904030001030000D4
-:100470000009211101000122390007058403100041
-:10048000011201100100000008EDFE071301000138
-:1004900002000105010906A101050719E029E71578
-:1004A00000250195087501810205081901290595A6
-:1004B0000575019102950175039101050719002940
-:1004C0007715002501957875018102C00501098025
-:1004D000A101850216010026B7001A01002AB70003
-:1004E000751095018100C0050C0901A10185031655
-:1004F0000100269C021A01002A9C027510950181B8
-:1005000000C005010902A1010901A10005091901A5
-:1005100029051500250195057501810295017503D1
-:1005200081010501093009311581257F9502750882
-:10053000810609381581257F950175088106050C0E
-:100540000A38021581257F950175088106C0C0050E
-:10055000010906A101050719E029E7150025019504
-:1005600008750181029501750881010508190129A5
-:10057000059505750191029501750391010507190E
-:100580000029FF150025FF950675088100C00000B1
-:10059000000000000000000000010204060A0F171E
-:1005A000202C3A4A5D71879DB3C7DAE9F5FCFFFC60
-:1005B000F5E9DAC7B39D87715D4A3A2C20170F0A17
-:1005C00006040201000000000000000000001124E9
-:1005D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FE
-:1005E0008091F8019091F901A091FA01B091FB017D
-:1005F0008730904BA740B04BB9F41092F80110929D
-:10060000F9011092FA011092FB0114BE84B7877FA2
-:1006100084BF88E10FB6F894809360001092600068
-:100620000FBEE0E0FFE3099511E0A0E0B1E0E2E9F0
-:10063000FBE402C005900D92A433B107D9F721E085
-:10064000A4E3B1E001C01D92A83FB207E1F70E9408
-:10065000F70B0C94C7250C940000DC01462F50E0EA
-:100660004A5051094831510508F0C2C14A5A5F4FFA
-:10067000FA010C94772512962C91129780913C01E7
-:1006800090913D012223E1F015962C91207FC1F439
-:1006900001968330910510F082E090E090933D0147
-:1006A00080933C018091360190913701892B31F084
-:1006B00089E30E94591289E30E94211381EEF9C057
-:1006C000019790933D0180933C01892B09F090C1E3
-:1006D00081EEFAC012962C9180913A0190913B01E3
-:1006E000222331F101968330910510F082E090E0F1
-:1006F00090933B0180933A018091360190913701AC
-:10070000892B31F08091350191E089278093350163
-:1007100081E078C012969C91129715968C91807FFB
-:1007200091119CC009F0B7C080913A0190913B01B2
-:10073000019790933B0180933A01892B09F058C1AE
-:1007400080913501811154C181E085C012969C9140
-:10075000129715968C91807F992359F0209136013C
-:10076000309137018823B9F121153105A1F58BE2CC
-:10077000A0C0882391F08091360190913701892B98
-:1007800061F48BE2A1C012969C91129715968C9100
-:10079000807F91111AC009F08FC08091380190912B
-:1007A000390101979093390180933801892B09F021
-:1007B0001FC18091340181111BC182E04CC012968F
-:1007C0008C911297882309F187C0209136013091CE
-:1007D0003701811169C080913801909139010196EA
-:1007E0008330910510F082E090E09093390180937E
-:1007F0003801232B31F08091340191E089278093D7
-:10080000340182E00E94241BF3C015968C91982F2E
-:10081000907FA1F080FD12C080913A0190913B0140
-:10082000892B61F48091380190913901892B31F441
-:1008300085E30E94591285E30E94211380913601BD
-:100840009091370101979093370180933601892B5E
-:1008500009F0CEC083E00E94451BCAC0209136013A
-:1008600030913701882329F02115310511F484E3F3
-:1008700020C080913A0190913B010196833091050F
-:1008800010F082E090E090933B0180933A01232B9B
-:1008900009F038CF3DCF8091360190913701892BF7
-:1008A00009F042CF84E310C02115310509F093CF40
-:1008B00081E30E9459129CC08091360190913701CA
-:1008C000892B09F06ACF81E30E94211391C012960F
-:1008D0008C9112978823A1F1809136019091370174
-:1008E00001968330910510F082E090E090933701FB
-:1008F0008093360180913C0190913D01892B31F02C
-:1009000089E30E94591289E30E94211380913A01E0
-:1009100090913B01892B31F08091350191E089273D
-:10092000809335018091380190913901892B31F004
-:100930008091340191E089278093340183E062CF74
-:1009400015968C91982F907F09F478CF80FD76CF03
-:1009500080913A0190913B01892B09F06FCF8091F2
-:10096000380190913901892B09F068CF8EE20E94FD
-:1009700059128EE261CF12968C91882319F080EF84
-:1009800090E013C080EF90E017C012968C918823FE
-:1009900019F080EF90E01BC080EF90E021C012962C
-:1009A0008C91882339F081EF90E00E941A2082EF29
-:1009B00090E011C081EF90E00E94822082EF90E0F1
-:1009C00013C012968C91882349F081EF90E00E9429
-:1009D0001A2083EF90E00E941A2008C081EF90E077
-:1009E0000E94822083EF90E00E9482200E940721D3
-:1009F00080E090E008950895E0910E01F0910F01DC
-:100A00008081827219F0259A2D9A06C00E943011B9
-:100A100081FDF9CF25982D988091BB0181FF03C0FE
-:100A2000269A2E9A02C026982E988091BB0182FFAA
-:100A300003C0279A2F9A089527982F9808950C9409
-:100A4000FC0456985E9825982D9826982E982798FD
-:100A50002F988FEF90E09093890080938800909377 <