Browse Source

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

Nicholas Keene 9 years ago
parent
commit
5daf24b1a5

+ 61 - 43
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 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 MUL   6 // mouse up left
-#define MUR   7 // mouse up right
-#define MDL   8 // mouse down left
-#define MDR   9 // mouse down right
+#define BASE   0 // default layer
+#define SYMB   1 // symbols layer
+#define MDIA   2 // media layer
+#define LOCK   3 // shift-lock 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 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;

BIN
keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png


+ 5 - 5
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"],

BIN
keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png


+ 2 - 2
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"],

BIN
keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png


+ 1 - 1
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"],

File diff suppressed because it is too large
+ 1214 - 1197
keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex


File diff suppressed because it is too large
+ 1 - 1
keyboard/ergodox_ez/keymaps/ordinary/readme.md