]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
Updated keymaps (#1853)
[qmk_firmware.git] / keyboards / ergodox_ez / keymaps / drashna-custom / keymap.c
index 5f0504beb77f90f30ec5edce5b13b73a1f43e82e..5440c33460d9d97acd555f19106cf37783acabfc 100644 (file)
@@ -28,21 +28,22 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define QWERTY 0
 #define COLEMAK 1
 #define DVORAK 2
-#define SYMB 3
-#define OVERWATCH 4
-#define DIABLO 5
-#define MOUS 6
-
-
+#define WORKMAN 3
+#define SYMB 8
+#define OVERWATCH 9
+#define DIABLO 10
+#define MOUS 12
+
+//Leader Key stuff
+#ifdef LEADER_TIMEOUT
+#undef LEADER_TIMEOUT
+#endif
+#define LEADER_TIMEOUT 1500
 
 //define modifiers
 #define MODS_SHIFT_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 #define MODS_CTRL_MASK  (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
 #define MODS_ALT_MASK  (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
-
-//define macro keycodes
-#define M_VERSION M(0)
-#define M_MAKE M(1)
  
 //define layer change stuff for underglow indicator
 bool skip_leds = false;
@@ -54,6 +55,7 @@ bool skip_leds = false;
 #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF);
 #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF);
 #define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF);
+#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF);
 //This is both for underglow, and Diablo 3 macros
 
 static uint8_t current_layer = 0;
@@ -70,28 +72,30 @@ bool check_dtimer(uint8_t dtimer) {
 
 
 enum custom_keycodes {
-       PLACEHOLDER = SAFE_RANGE, // can always be here
-       EPRM,
-       VRSN,
-       RGB_SLD,
-       RGB_0000FF,
-       RGB_008000,
-       RGB_FF0000,
-       RGB_800080,
-       RGB_00FF90,
+    PLACEHOLDER = SAFE_RANGE, // can always be here
+    EPRM,
+    VRSN,
+    RGB_SLD,
+    RGB_0000FF,
+    RGB_008000,
+    RGB_FF0000,
+    RGB_800080,
+    RGB_00FF90,
     KC_DIABLO_CLEAR,
     KC_QWERTY,
     KC_COLEMAK,
-    KC_DVORAK
+    KC_DVORAK,
+    KC_WORKMAN,
+    KC_MAKEQMK
 };
 
 #ifdef TAP_DANCE_ENABLE
 enum {
-       TD_FLSH = 0,
-       TD_DIABLO_1,
-       TD_DIABLO_2,
-       TD_DIABLO_3,
-       TD_DIABLO_4
+    TD_FLSH = 0,
+    TD_DIABLO_1,
+    TD_DIABLO_2,
+    TD_DIABLO_3,
+    TD_DIABLO_4
 };
 
 
@@ -101,43 +105,43 @@ enum {
 // on the forth tap, turn them off from right to left
 
 void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) {
-       if (!skip_leds) {
-               ergodox_board_led_off();
-               ergodox_right_led_1_off();
-               ergodox_right_led_2_off();
-               ergodox_right_led_3_off();
-               skip_leds = true;
-       }
-       switch (state->count) {
-               case 1:
-                       ergodox_right_led_1_on();
+    if (!skip_leds) {
+        ergodox_board_led_off();
+        ergodox_right_led_1_off();
+        ergodox_right_led_2_off();
+        ergodox_right_led_3_off();
+        skip_leds = true;
+    }
+    switch (state->count) {
+        case 1:
+            ergodox_right_led_1_on();
             break;
         case 2:
-                       ergodox_right_led_2_on();
-                       break;
-               case 3:
-                       ergodox_right_led_3_on();
-                       break;
-               case 4:
-                       ergodox_right_led_1_off();
-                       _delay_ms(50);
-                       ergodox_right_led_2_off();
-                       _delay_ms(50);
-                       ergodox_right_led_3_off();
-
-       }
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+            ergodox_right_led_3_on();
+            break;
+        case 4:
+            ergodox_right_led_1_off();
+            _delay_ms(50);
+            ergodox_right_led_2_off();
+            _delay_ms(50);
+            ergodox_right_led_3_off();
+
+    }
 }
 
 // on the fourth tap, set the keyboard on flash state
 // and set the underglow to red, because red == bad
 void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
-       if (state->count >= 4) {
+    if (state->count >= 4) {
         rgblight_enable();
         rgblight_mode(1);
         rgblight_setrgb(0xff,0x00,0x00);
-               reset_keyboard();
-               reset_tap_dance(state);
-       }
+        reset_keyboard();
+        reset_tap_dance(state);
+    }
 }
 
 // Cycle through the times for the macro, starting at 0, for disabled.
@@ -172,20 +176,20 @@ void diablo_tapdance4 (qk_tap_dance_state_t *state, void *user_data) {
 
 // if the flash state didnt happen, then turn off leds, left to right
 void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) {
-       _delay_ms(200);
-       ergodox_right_led_3_off();
-       _delay_ms(200);
-       ergodox_right_led_2_off();
-       _delay_ms(200);
-       ergodox_right_led_1_off();
-       _delay_ms(500);
-       skip_leds = false;
+    _delay_ms(200);
+    ergodox_right_led_3_off();
+    _delay_ms(200);
+    ergodox_right_led_2_off();
+    _delay_ms(200);
+    ergodox_right_led_1_off();
+    _delay_ms(500);
+    skip_leds = false;
 }
 
 //Tap Dance Definitions
 qk_tap_dance_action_t tap_dance_actions[] = {
-       //Once for Blue, Twice for Green, Thrice for Red, and four to flash
-       [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED (dance_flsh_each, dance_flsh_finished, dance_flsh_reset),
+    //Once for Blue, Twice for Green, Thrice for Red, and four to flash
+    [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED (dance_flsh_each, dance_flsh_finished, dance_flsh_reset),
     // tap once to disable, and more to enable timed micros
     [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
     [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
@@ -219,26 +223,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *                                 `---------------------'       `---------------------'
  */
   [QWERTY] = KEYMAP(
-                               KC_EQUAL,       KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       TG(MOUS),
-                               KC_TAB,         KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       TG(DIABLO),
-                               KC_BSPACE,      KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
-                KC_LSHIFT,      CTL_T(KC_Z),KC_X,       KC_C,       KC_V,       KC_B,       TG(OVERWATCH),
-                               LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI,    KC_LBRACKET,KC_RBRACKET,
+                KC_EQUAL,       KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       TG(MOUS),
+                KC_TAB,         KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       TG(DIABLO),
+                KC_BSPACE,      KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
+                KC_LSHIFT,      LCTL_T(KC_Z),KC_X,       KC_C,       KC_V,       KC_B,       TG(OVERWATCH),
+                LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI,    KC_LBRACKET,KC_RBRACKET,
                 
-                                                                       ALT_T(KC_APPLICATION),  KC_LGUI,
+                                    ALT_T(KC_APPLICATION),  KC_LEAD,
                                                             KC_HOME,
-                                                                       KC_SPACE,   KC_BSPACE,  KC_END,
-                                                                       
-                               TG(SYMB),       KC_6,       KC_7,       KC_8,       KC_9,       KC_0,           KC_MINUS,
-                               TG(DVORAK),     KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,           KC_BSLASH,
+                                    KC_SPACE,   KC_BSPACE,  KC_END,
+                                    
+                TG(MOUS),       KC_6,       KC_7,       KC_8,       KC_9,       KC_0,           KC_MINUS,
+                TG(DIABLO),     KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,           KC_BSLASH,
                                 KC_H,       KC_J,       KC_K,       KC_L,       KC_SCOLON,      GUI_T(KC_QUOTE),
-                               TG(COLEMAK),    KC_N,       KC_M,       KC_COMMA,   KC_DOT,     CTL_T(KC_SLASH),KC_RSHIFT,
+                TG(OVERWATCH),  KC_N,       KC_M,       KC_COMMA,   KC_DOT,     RCTL_T(KC_SLASH),KC_RSHIFT,
                                             KC_LEFT,    KC_DOWN,    KC_UP,      KC_RIGHT,       KC_FN1,
-                               KC_LALT,    CTL_T(KC_ESCAPE),
-                               KC_PGUP,
-                               KC_PGDOWN,  KC_DELETE,  KC_ENTER
-                       ),
-/* Keymap 1: Basic layer
+                KC_LALT,    CTL_T(KC_ESCAPE),
+                KC_PGUP,
+                KC_PGDOWN,  KC_DELETE,  KC_ENTER
+            ),
+/* Keymap 0: Basic layer
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
  * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
@@ -264,24 +268,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [COLEMAK] = KEYMAP(  
         // left hand
         KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(MOUS),
-        KC_DELT,        KC_Q,         KC_W,   KC_F,   KC_P,   KC_G,   TG(DIABLO),
+        KC_TAB,         KC_Q,         KC_W,   KC_F,   KC_P,   KC_G,   TG(DIABLO),
         KC_BSPC,        KC_A,         KC_R,   KC_S,   KC_T,   KC_D,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   TG(OVERWATCH),
+        KC_LSFT,        LCTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   TG(OVERWATCH),
         LT(SYMB,KC_GRV),KC_QUOT,      KC_LGUI,    KC_LBRACKET,KC_RBRACKET,
-                                              ALT_T(KC_APP),  KC_LGUI,
+                                              ALT_T(KC_APP),  KC_LEAD,
                                                               KC_HOME,
                                                KC_SPC,KC_BSPC,KC_END,
         // right hand
-             KC_TRNS,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(DVORAK),  KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
-                          KC_H,   KC_N,   KC_E,   KC_I,   LT(MOUS, KC_O),   KC_QUOTE,
-             TG(COLEMAK), KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLASH),KC_RSHIFT,
-                                                 KC_LEFT,    KC_DOWN,    KC_UP,      KC_RIGHT,       KC_FN1,
+             TG(MOUS),    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(DIABLO),  KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
+                          KC_H,   KC_N,   KC_E,   KC_I,   KC_O,             GUI_T(KC_QUOTE),
+             TG(OVERWATCH),KC_K,  KC_M,   KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT,
+                          KC_LEFT,    KC_DOWN,    KC_UP,      KC_RIGHT,       KC_FN1,
              KC_LALT,        CTL_T(KC_ESC),
              KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
+             KC_PGDN,KC_DELETE, KC_ENT
     ),
-/* Keymap 2: Basic layer
+/* Keymap 0: Basic layer
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
  * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
@@ -307,22 +311,65 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [DVORAK] = KEYMAP(  
         // left hand
         KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   TG(MOUS),
-        KC_DELT,        KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(DIABLO),
+        KC_TAB,        KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(DIABLO),
         KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
-        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   TG(OVERWATCH),
+        KC_LSFT,        LCTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   TG(OVERWATCH),
         LT(SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET, KC_RBRACKET,
-                                              ALT_T(KC_APP),  KC_LGUI,
+                                              ALT_T(KC_APP),  KC_LEAD,
                                                               KC_HOME,
                                                KC_SPC,KC_BSPC,KC_END,
         // right hand
-             KC_TRNS,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
-             TG(DVORAK),  KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
-                          KC_D,   KC_H,   KC_T,   KC_N,   LT(MOUS, KC_S),   KC_MINS,
-             TG(COLEMAK), KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSHIFT,
-                              KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1,
+             TG(MOUS),     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,        KC_BSLS,
+             TG(DIABLO),   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,        KC_SLSH,
+                           KC_D,   KC_H,   KC_T,   KC_N,   KC_S,        KC_MINS,
+             TG(OVERWATCH),KC_B,   KC_M,   KC_W,   KC_V,   RCTL_T(KC_Z), KC_RSHIFT,
+                                   KC_LEFT,KC_DOWN,KC_UP,  KC_RIGHT,    KC_FN1,
              KC_LALT,        CTL_T(KC_ESC),
              KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
+             KC_PGDN,KC_DELETE, KC_ENT
+    ),
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |O / L2|   '    |
+ * |--------+------+------+------+------+------| OVER |           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[WORKMAN] = KEYMAP(  
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(MOUS),
+        KC_TAB,         KC_Q,         KC_D,   KC_R,   KC_W,   KC_B,   TG(DIABLO),
+        KC_BSPC,        KC_A,         KC_S,   KC_H,   KC_T,   KC_G,
+        KC_LSFT,        LCTL_T(KC_Z),  KC_X,   KC_M,   KC_C,   KC_V,   TG(OVERWATCH),
+        LT(SYMB,KC_GRV),KC_QUOT,      KC_LGUI,    KC_LBRACKET,KC_RBRACKET,
+                                              ALT_T(KC_APP),  KC_LEAD,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             TG(MOUS),    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(DIABLO),  KC_J,   KC_F,   KC_U,   KC_P,   KC_SCLN,          KC_BSLS,
+                          KC_Y,   KC_N,   KC_E,   KC_O,   KC_I,             KC_QUOTE,
+             TG(OVERWATCH),KC_K,  KC_L,   KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT,
+                          KC_LEFT,    KC_DOWN,    KC_UP,      KC_RIGHT,       KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_DELETE, KC_ENT
     ),
 
     /* Keymap 3: Symbol Layer
@@ -347,24 +394,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 *                                 `--------------------'       `--------------------'
 */
   [SYMB] = KEYMAP(
-                               KC_ESCAPE,KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_TRNS,
-                               M_VERSION,      KC_EXLM,    KC_AT,      KC_LCBR,    KC_RCBR,    KC_PIPE,    KC_TRNS,
-                               M_MAKE,         KC_HASH,    KC_DLR,     KC_LPRN,    KC_RPRN,    KC_GRAVE,
-                               TD(TD_FLSH),    KC_PERC,    KC_CIRC,    KC_LBRACKET,KC_RBRACKET,KC_TILD,    KC_TRNS,
-                               KC_NO,          KC_AMPR,    KC_ASTR,    KC_COLN,    KC_SCOLON,
-                                                                     KC_TRNS, KC_TRNS,
-                                                                     KC_TRNS,
-                                                                     KC_TRNS, KC_TRNS, KC_TRNS,
-                               
-                               KC_QWERTY, KC_F6,      KC_F7,      KC_F8,      KC_F9,      KC_F10,         KC_F11,
-                               KC_DVORAK, KC_KP_PLUS, KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_KP_ASTERISK, KC_F12,
-                               KC_KP_MINUS,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_KP_SLASH,KC_PSCREEN,
-                               KC_COLEMAK, KC_NUMLOCK, KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_EQUAL,       KC_PAUSE,
-                                        KC_KP_0,    KC_KP_0,    KC_KP_DOT,  KC_KP_ENTER,    KC_TRNS,
-                               RGB_TOG,    RGB_SLD,
-                               KC_NO,
-                               KC_KP_DOT, KC_KP_0, KC_KP_ENTER
-                       ),
+                KC_ESCAPE,      KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_WORKMAN,
+                VRSN,           KC_EXLM,    KC_AT,      KC_LCBR,    KC_RCBR,    KC_PIPE,    KC_DVORAK,
+                KC_MAKEQMK,     KC_HASH,    KC_DLR,     KC_LPRN,    KC_RPRN,    KC_GRAVE,
+                TD(TD_FLSH),    KC_PERC,    KC_CIRC,    KC_LBRACKET,KC_RBRACKET,KC_TILD,    KC_COLEMAK,
+                KC_NO,          KC_AMPR,    KC_ASTR,    KC_COLN,    KC_SCOLON,
+                                                                  KC_TRNS, KC_TRNS,
+                                                                  KC_TRNS,
+                                                                  KC_TRNS, KC_TRNS, KC_TRNS,
+                
+                KC_QWERTY,   KC_F6,      KC_F7,      KC_F8,      KC_F9,      KC_F10,         KC_F11,
+                KC_DVORAK,   KC_KP_PLUS, KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_KP_ASTERISK, KC_F12,
+                             KC_KP_MINUS,KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_KP_SLASH,    KC_PSCREEN,
+                KC_COLEMAK,  KC_NUMLOCK, KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_EQUAL,       KC_PAUSE,
+                                         KC_KP_0,    KC_KP_0,    KC_KP_DOT,  KC_KP_ENTER,    KC_TRNS,
+                RGB_TOG,    RGB_SLD,
+                KC_NO,
+                KC_KP_DOT, KC_KP_0, KC_KP_ENTER
+            ),
 
 /* Keymap 4: Customized Overwatch Layout
  *
@@ -388,24 +435,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *                                 `--------------------'       `--------------------'
  */
   [OVERWATCH] = KEYMAP(
-                               KC_ESCAPE,      KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-                               KC_F1,          KC_K,       KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,
-                               KC_TAB,         KC_G,       KC_A,       KC_S,       KC_D,       KC_F,
-                               KC_LCTL,        KC_LSHIFT,  KC_Z,       KC_X,       KC_C,       KC_V,       KC_TRNS,
-                               KC_G,           KC_U,       KC_I,       KC_Y,       KC_T,
+                KC_ESCAPE,      KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+                KC_F1,          KC_K,       KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,
+                KC_TAB,         KC_G,       KC_A,       KC_S,       KC_D,       KC_F,
+                KC_LCTL,        KC_LSHIFT,  KC_Z,       KC_X,       KC_C,       KC_V,       KC_TRNS,
+                KC_G,           KC_U,       KC_I,       KC_Y,       KC_T,
                                             KC_O,   KC_P,
                                                     KC_LGUI,
                                 KC_V,   KC_SPACE,   KC_H,
-                                                                       
-                               KC_NO,          KC_F9,      KC_F10,     KC_F11,     KC_F12,     KC_NO,      KC_NO,
-                               KC_NO,          KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                               KC_NO,          KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                               KC_NO,          KC_N,       KC_M,       KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                                    
+                KC_TRNS,        KC_F9,      KC_F10,     KC_F11,     KC_F12,     KC_NO,      KC_NO,
+                KC_NO,          KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                                KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                TG(OVERWATCH),  KC_N,       KC_M,       KC_NO,      KC_NO,      KC_NO,      KC_NO,
                                             KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                               KC_NO,          KC_NO,
-                               KC_NO,
+                KC_NO,          KC_NO,
+                KC_NO,
                 KC_PGDOWN,      KC_DELETE, KC_ENTER
-                       ),
+            ),
 
 /* Keymap 3:
  *
@@ -429,25 +476,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *                                 `--------------------'       `--------------------'
  */
   [DIABLO] = KEYMAP(
-                               KC_ESCAPE,  KC_V,       KC_D,       KC_LALT,    KC_NO,      KC_NO,      KC_NO,
-                               KC_TAB,     KC_S,       KC_F,       KC_I,       KC_M,       KC_T,       KC_TRNS,
-                               KC_Q,       KC_1,       KC_2,       KC_3,       KC_4,       KC_G,
-                               KC_LCTL, TD(TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), KC_Z,       KC_NO,
-                               KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+                KC_ESCAPE,  KC_V,       KC_D,       KC_LALT,    KC_NO,      KC_NO,      KC_NO,
+                KC_TAB,     KC_S,       KC_F,       KC_I,       KC_M,       KC_T,       KC_TRNS,
+                KC_Q,       KC_1,       KC_2,       KC_3,       KC_4,       KC_G,
+                KC_LCTL, TD(TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), KC_Z,       KC_NO,
+                KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
                                                 KC_L,   KC_J,
                                                         KC_F,
                     SFT_T(KC_SPACE),    ALT_T(KC_Q),    KC_DIABLO_CLEAR,
-                                                                       
-                                                                       
-                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO,  KC_NO,
-                               KC_NO,
-                               KC_NO,  KC_NO,  KC_NO
-                       ),
+                                    
+                                    
+                                    
+                KC_TRNS,        KC_F9,      KC_F10,     KC_F11,     KC_F12,     KC_NO,      KC_NO,
+                KC_TRNS,        KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                                KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                KC_NO,          KC_N,       KC_M,       KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                                            KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                KC_NO,          KC_NO,
+                KC_NO,
+                KC_PGDOWN,      KC_DELETE, KC_ENTER
+            ),
 
 /* Keymap 4: Media and mouse keys
  *
@@ -458,37 +506,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * |        |MsLeft|MsDown|MsRght|      |      |------|           |------|      |      | Acc0 | Acc1 | Acc2 |        |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Acc0 | Acc1 | Acc2 |      |      |      |           |      | Play | Stop | Mute |VolDn |VolUp |        |
+ * |        | Acc0 | Acc1 | Acc2 |      |      |      |           |      |      | Mute |VolDn |VolUp |      |        |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   |      |      |      |      |      |                                       | Play | Stop |      |      |      |
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
  *                                        |      |      |       |      |      |
  *                                 ,------|------|------|       |------+------+------.
  *                                 |      |      | MWUp |       |      |      |      |
- *                                 | Lclk | Rclk |------|       |------| MBn4 | MBn4 |
+ *                                 | Lclk | Rclk |------|       |------| MBn4 | MBn5 |
  *                                 |      |      | MWDn |       | Mclk |      |      |
  *                                 `--------------------'       `--------------------'
  */
   [MOUS] = KEYMAP(
-                               KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_TRNS,
-                               KC_NO,      KC_NO,      KC_MS_UP,   KC_NO,      KC_NO,      KC_NO,      KC_TRNS,
-                               KC_NO,      KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT,KC_NO,      KC_NO,
-                               KC_NO,      KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO,   KC_NO,      KC_TRNS,
+                KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_TRNS,
+                KC_NO,      KC_NO,      KC_MS_U,    KC_NO,      KC_NO,      KC_NO,      KC_TRNS,
+                KC_NO,      KC_MS_L,    KC_MS_D,    KC_MS_R,    KC_NO,      KC_NO,
+                KC_NO,      KC_ACL0,    KC_ACL1,    KC_ACL2,    KC_NO,      KC_NO,      KC_TRNS,
                 KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                                                                       KC_NO,KC_NO,
-                                                                       KC_MS_WH_UP,
-                                                                       KC_MS_BTN1,KC_MS_BTN2,KC_MS_WH_DOWN,
-                               
-                               KC_TRNS,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
-                               KC_TRNS,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
-                               KC_NO,KC_NO,KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO,KC_NO,
-                               KC_TRNS,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_STOP,KC_AUDIO_MUTE,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_NO,
-                               KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
-                               KC_NO,KC_NO,
-                               KC_NO,
-                               KC_MS_BTN3,KC_MS_BTN4,KC_MS_BTN5
-                       ),
+                                                                            KC_NO,      KC_NO,
+                                                                                        KC_WH_U,
+                                                                KC_BTN1,    KC_BTN2,    KC_WH_D,
+                
+                KC_TRNS,    KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                KC_TRNS,    KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                            KC_NO,      KC_ACL0,    KC_ACL1,    KC_ACL2,    KC_NO,      KC_NO,
+                KC_TRNS,    KC_NO,      KC_MUTE,    KC_VOLD,    KC_VOLU,    KC_NO,      KC_NO,
+                                        KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                KC_NO,KC_NO,
+                KC_NO,
+                KC_MS_BTN3,KC_MS_BTN4,KC_MS_BTN5
+            ),
 
 };
 
@@ -502,23 +550,6 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
    
 }
 
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch(id) {
-        case 0:
-            if (record->event.pressed) {
-                // Output Keyboard Firmware info
-                SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-                return false;
-            }
-        case 1:
-            if (record->event.pressed) {
-                // make ergodox-ez-drashna-custom-teensy
-                return MACRO(I(5), T(M), T(A), T(K), T(E), T(SPACE), T(E), T(R), T(G), T(O), T(D), T(O), T(X), D(LSFT), T(MINUS), U(LSFT), T(E), T(Z), T(MINUS), T(D), T(R), T(A), T(S), T(H), T(N), T(A), T(MINUS), T(C), T(U), T(S), T(T), T(O), T(M), T(MINUS), T(T), T(E), T(E), T(N), T(S), T(Y), T(ENTER), END);
-            }                          
-    }
-    return MACRO_NONE;
-};
 
 void persistent_default_layer_set(uint16_t default_layer) {
     eeconfig_update_default_layer(default_layer);
@@ -527,81 +558,81 @@ void persistent_default_layer_set(uint16_t default_layer) {
 
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-       switch (keycode) {
-               // dynamically generate these.
-               case EPRM:
-                       if (record->event.pressed) {
+    switch (keycode) {
+        // dynamically generate these.
+        case EPRM:
+            if (record->event.pressed) {
                 eeconfig_init();
-                       }
-                       return false;
-                       break;
-               case VRSN:
-                       if (record->event.pressed) {
-                               SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-                       }
-                       return false;
-                       break;
-               case RGB_SLD:
-                       if (record->event.pressed) {
-                               rgblight_mode(1);
-                       }
-                       return false;
-                       break;
-
-               case RGB_0000FF:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x00,0x00,0xff);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_008000:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x00,0x80,0x00);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_FF0000:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0xff,0x00,0x00);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_800080:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x80,0x00,0x80);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_00FF90:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x00,0xff,0x90);
-                               #endif
-                       }
-                       return false;
-                       break;
+            }
+            return false;
+            break;
+        case VRSN:
+            if (record->event.pressed) {
+                SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+            }
+            return false;
+            break;
+        case RGB_SLD:
+            if (record->event.pressed) {
+                rgblight_mode(1);
+            }
+            return false;
+            break;
+
+        case RGB_0000FF:
+            if (record->event.pressed) {
+                #ifdef RGBLIGHT_ENABLE
+                rgblight_enable();
+                rgblight_mode(1);
+                rgblight_setrgb(0x00,0x00,0xff);
+                #endif
+            }
+            return false;
+            break;
+
+        case RGB_008000:
+            if (record->event.pressed) {
+                #ifdef RGBLIGHT_ENABLE
+                rgblight_enable();
+                rgblight_mode(1);
+                rgblight_setrgb(0x00,0x80,0x00);
+                #endif
+            }
+            return false;
+            break;
+
+        case RGB_FF0000:
+            if (record->event.pressed) {
+                #ifdef RGBLIGHT_ENABLE
+                rgblight_enable();
+                rgblight_mode(1);
+                rgblight_setrgb(0xff,0x00,0x00);
+                #endif
+            }
+            return false;
+            break;
+
+        case RGB_800080:
+            if (record->event.pressed) {
+                #ifdef RGBLIGHT_ENABLE
+                rgblight_enable();
+                rgblight_mode(1);
+                rgblight_setrgb(0x80,0x00,0x80);
+                #endif
+            }
+            return false;
+            break;
+
+        case RGB_00FF90:
+            if (record->event.pressed) {
+                #ifdef RGBLIGHT_ENABLE
+                rgblight_enable();
+                rgblight_mode(1);
+                rgblight_setrgb(0x00,0xff,0x90);
+                #endif
+            }
+            return false;
+            break;
         case KC_DIABLO_CLEAR:  // reset all Diable timers, disabling them
             if (record->event.pressed) {
                 uint8_t dtime;
@@ -630,9 +661,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             }
             return false;
             break;
+        case KC_WORKMAN:
+            if (record->event.pressed) {
+                persistent_default_layer_set(1UL << WORKMAN);
+            }
+            return false;
+            break;
+        case KC_MAKEQMK:
+            if (record->event.pressed) {
+                SEND_STRING("make ergodox_ez:drashna-custom:teensy"SS_TAP(X_ENTER));
+            }
+            return false;
+            break;
 
-       }
-       return true;
+    }
+    return true;
 }
 
 
@@ -674,33 +717,30 @@ void matrix_init_user(void) { // Runs boot tasks for keyboard
 
 };
 
-
+LEADER_EXTERNS();
 
 void matrix_scan_user(void) {  // runs frequently to update info
     uint8_t modifiders = get_mods();
     uint8_t layer = biton32(layer_state);
-    bool l_dvorak = false;
-    bool l_colemak = false;
-       static bool has_layer_changed = true;
-
+    static bool has_layer_changed = true;
 
-       if (!skip_leds) {
-               ergodox_board_led_off();
-               ergodox_right_led_1_off();
-               ergodox_right_led_2_off();
-               ergodox_right_led_3_off();
+    if (!skip_leds) {
+        ergodox_board_led_off();
+        ergodox_right_led_1_off();
+        ergodox_right_led_2_off();
+        ergodox_right_led_3_off();
         
-               // Since we're not using the LEDs here for layer indication anymore,
-               // then lets use them for modifier indicators.  Shame we don't have 4...
-               // Also, no "else", since we want to know each, independantly. 
+        // Since we're not using the LEDs here for layer indication anymore,
+        // then lets use them for modifier indicators.  Shame we don't have 4...
+        // Also, no "else", since we want to know each, independantly. 
         if ( modifiders & MODS_SHIFT_MASK) {
-                ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
         }
         if ( modifiders & MODS_CTRL_MASK) {
-                ergodox_right_led_2_on();
+            ergodox_right_led_1_on();
         }
         if ( modifiders & MODS_ALT_MASK) {
-                ergodox_right_led_3_on();
+            ergodox_right_led_3_on();
         }
         
     }
@@ -713,12 +753,6 @@ void matrix_scan_user(void) {  // runs frequently to update info
         uint8_t default_layer = 0;
         default_layer = eeconfig_read_default_layer();
 
-        if (default_layer & (1UL << DVORAK)) {
-            l_dvorak = true;
-        }
-        else if (default_layer & (1UL << COLEMAK)) {
-            l_colemak = true;
-        }
         switch (layer) {
             case SYMB:
                 rgblight_set_blue;
@@ -734,22 +768,21 @@ void matrix_scan_user(void) {  // runs frequently to update info
                 break;
             case MOUS:
                 rgblight_set_urine;
-                break;
-            case COLEMAK:
-                rgblight_set_magenta;
-                break;
-            case DVORAK:
-                rgblight_set_green;
+                rgblight_mode(1);
                 break;
             case 7:
                 rgblight_sethsv (255,255,255);
+                rgblight_mode(1);
                 break;
             default:
-                if (l_colemak) {
+                if (default_layer & (1UL << COLEMAK)) {
+                    rgblight_set_green;
+                }
+                else if (default_layer & (1UL << DVORAK)) {
                     rgblight_set_magenta;
                 }
-                else if (l_dvorak) {
-                    rgblight_set_green;
+                else if (default_layer & (1UL << WORKMAN)) {
+                    rgblight_set_purple;
                 }
                 else {
                     rgblight_set_teal;
@@ -760,7 +793,28 @@ void matrix_scan_user(void) {  // runs frequently to update info
         has_layer_changed = false;
     }
 
-       // Run Diablo 3 macro checking code.
+    // Run Diablo 3 macro checking code.
     run_diablo_macro_check();
+#ifdef LEADER_KEYS
+    LEADER_DICTIONARY() {
+        leading = false;
+        leader_end();
+        SEQ_ONE_KEY(KC_C) {
+            SEND_STRING("Covecube");
+        }
+        SEQ_TWO_KEYS(KC_S, KC_D) {
+            SEND_STRING("StableBit DrivePool");
+        }
+        SEQ_TWO_KEYS(KC_C, KC_D) {
+            SEND_STRING("StableBit CloudDrive");
+        }
+        SEQ_TWO_KEYS(KC_S, KC_C) {
+            SEND_STRING("StableBit Scanner");
+        }
+        SEQ_TWO_KEYS(KC_S, KC_T) {
+            SEND_STRING("StableBit Troubleshooter");
+        }
+    }
+#endif
 };