]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Updated keymaps (#1853)
authordrashna <drashna@live.com>
Sun, 22 Oct 2017 04:27:54 +0000 (21:27 -0700)
committerJack Humbert <jack.humb@gmail.com>
Sun, 22 Oct 2017 04:27:54 +0000 (18:27 -1000)
* Add woodpad

* Cleanup

* Remove misc layouts for woodpad

* Move woodpad to handwired

* Updated RGB Underglow info

* Cleanup macros

* Fix odd merge issue

* Tweaked RGB lighting stuff

* Start to merge orthodox/ergodox keymaps (persistant layers)

* Add forced NKRO

* Added Colemak and Dvorak layers to default orthodox keymap

* Added default layer (qwerty/colemak/dvorak) detection to RGB Underglow

* Updated macros and added workman keymaps

* Fixed RGB lighting for Workman layout

* Add leader keys

* Remove force NKRO

* Add Viterbi one handed layout and minor tweaks to others

keyboards/ergodox_ez/keymaps/drashna-custom/config.h
keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk
keyboards/handwired/woodpad/keymaps/drashna/config.h
keyboards/handwired/woodpad/keymaps/drashna/keymap.c
keyboards/orthodox/keymaps/drashna/config.h
keyboards/orthodox/keymaps/drashna/keymap.c
keyboards/orthodox/keymaps/drashna/rules.mk
keyboards/viterbi/keymaps/drashna/config.h [new file with mode: 0644]
keyboards/viterbi/keymaps/drashna/keymap.c [new file with mode: 0644]
keyboards/viterbi/keymaps/drashna/rules.mk [new file with mode: 0644]

index f4775eeac12c371eb8056bf254c9288a18b7eaf9..5fef1e0d8cb576131f989038bedee3b16ca443d5 100644 (file)
 #endif // RGBLIGHT_ENABLE
 
 #define FORCE_NKRO
-#ifdef FORCE_NKRO
-#define NKRO_EPSIZE 32
-#endif
-
-#define PERMISSIVE_HOLD
 
 #endif
\ No newline at end of file
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
 };
 
index 6c78b556b714dad92cdfa2fc67ec26363a47cea2..5ab769c6882df83048b13aac6f7431e427706079 100644 (file)
@@ -3,8 +3,8 @@ SLEEP_LED_ENABLE  = yes  # Breathing sleep LED during USB suspend
 COMMAND_ENABLE    = no  # Commands for debug and configuration
 RGBLIGHT_ENABLE   = yes
 MIDI_ENABLE       = no
-CONSOLE_ENABLE    = yes
-
+CONSOLE_ENABLE    = no
+LEADER_KEYS       = no
 ifndef QUANTUM_DIR
        include ../../../../Makefile
 endif
index e25a10d0b4e9f0e29b054f23e41e5b6dd4914e41..2b151606da3ac0e72c626285432de78b80320ab8 100644 (file)
@@ -23,6 +23,7 @@
 #define TAPPING_TERM 200
 #endif // TAP_DANCE_ENABLE
 
+#define CATERINA_BOOTLOADER
 
 
 #ifdef RGBLIGHT_ENABLE
index f30f3623d8ebcf8ff14f9cf210fa282326c49d47..f6476ef66a8bb5521c29431509b789e94722ebe5 100644 (file)
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_SALT,  KC_MORESALT, KC_SALTHARD, KC_GLHF   \
 ),
 [_MEDIA] = KEYMAP( /* Base */
-    _______, KC_MUTE, KC_VOLD, KC_VOLU,\
+    RESET, KC_MUTE, KC_VOLD, KC_VOLU,\
     _______, _______, RGB_HUI, RGB_HUD,   \
     KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT,   \
     RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI,   \
index bcd14a22d13e136e1ebfaee6e10351f56a57a7f0..497f7c80d96bef9970aa8102fb2a73d4dc03a48c 100644 (file)
@@ -52,11 +52,5 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define RGBLIGHT_EFFECT_BREATHE_CENTER 1
 #endif // RGBLIGHT_ENABLE
 
-#define FORCE_NKRO
-#ifdef FORCE_NKRO
-#define NKRO_EPSIZE 32
-#endif
-
-#define PERMISSIVE_HOLD
 
 #endif
\ No newline at end of file
index f7612652795508e8b0f332198c7112f1b5b28727..a15fa6f753f0d2e7508f9b6e89082b1123b81b8e 100644 (file)
@@ -32,14 +32,16 @@ extern keymap_config_t keymap_config;
 #define _QWERTY 0
 #define _COLEMAK 1
 #define _DVORAK 2
-#define _LOWER 3
-#define _RAISE 4
+#define _WORKMAN 3
+#define _LOWER 8
+#define _RAISE 9
 #define _ADJUST 16
 
 enum custom_keycodes {
   QWERTY = SAFE_RANGE,
   COLEMAK,
   DVORAK,
+  WORKMAN,
   LOWER,
   RAISE,
   ADJUST,
@@ -58,6 +60,7 @@ enum custom_keycodes {
 #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
 bool has_layer_changed = true;
@@ -99,25 +102,30 @@ qk_tap_dance_action_t tap_dance_actions[] = {
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 [_QWERTY] = KEYMAP( \
-  KC_TAB,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                                                                   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
-  KC_ESC,     KC_A,    KC_S,    KC_D,    KC_F,    KC_G,      KC_UP, XXXXXXX,  KC_DOWN,        KC_LEFT, XXXXXXX, KC_RIGHT, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  KC_ESC,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                                                                   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+  KC_TAB,     KC_A,    KC_S,    KC_D,    KC_F,    KC_G,      KC_UP, XXXXXXX,  KC_DOWN,        KC_LEFT, XXXXXXX, KC_RIGHT, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
   KC_LSFT,    CTL_T(KC_Z), KC_X, KC_C,   KC_V,    KC_B,      LOWER, KC_SPACE, KC_BSPC,        KC_DEL,  KC_ENT,  RAISE,    KC_N,    KC_M,    KC_COMM, KC_DOT, CTL_T(KC_SLASH), KC_LGUI \
 ),
 
 [_COLEMAK] = KEYMAP(\
-  KC_TAB,   KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,                                                                   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
-  KC_ESC,   KC_A,    KC_R,    KC_S,    KC_T,    KC_D,      KC_UP, XXXXXXX,  KC_DOWN,        KC_LEFT, XXXXXXX, KC_RIGHT, KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
+  KC_ESC,   KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,                                                                   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
+  KC_TAB,   KC_A,    KC_R,    KC_S,    KC_T,    KC_D,      KC_UP, XXXXXXX,  KC_DOWN,        KC_LEFT, XXXXXXX, KC_RIGHT, KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
   KC_LSFT,  CTL_T(KC_Z), KC_X, KC_C,   KC_V,    KC_B,      LOWER, KC_SPACE, KC_BSPC,        KC_DEL,  KC_ENT,  RAISE,    KC_K,    KC_M,    KC_COMM, KC_DOT,  CTL_T(KC_SLASH), KC_LGUI \
 ),
 
 [_DVORAK] = KEYMAP(\
-  KC_TAB,   KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y,                                                                   KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
-  KC_ESC,   KC_A,    KC_O,    KC_E,   KC_U,     KC_I,      KC_UP, XXXXXXX,  KC_DOWN,        KC_LEFT, XXXXXXX, KC_RIGHT, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, \
-  KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K,    KC_X,      LOWER, KC_SPACE, KC_BSPC,        KC_DEL,  KC_ENT,  RAISE,    KC_B,    KC_M,    KC_W,    KC_V,    CTL_T(KC_Z), KC_LGUI \
+    KC_ESC,   KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y,                                                                   KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
+    KC_TAB,   KC_A,    KC_O,    KC_E,   KC_U,     KC_I,      KC_UP, XXXXXXX,  KC_DOWN,        KC_LEFT, XXXXXXX, KC_RIGHT, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, \
+    KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K,    KC_X,      LOWER, KC_SPACE, KC_BSPC,        KC_DEL,  KC_ENT,  RAISE,    KC_B,    KC_M,    KC_W,    KC_V,    CTL_T(KC_Z), KC_LGUI \
+),
+[_WORKMAN] = KEYMAP(\
+    KC_ESC,   KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y,                                                                   KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
+    KC_TAB,   KC_A,    KC_O,    KC_E,   KC_U,     KC_I,      KC_UP, XXXXXXX,  KC_DOWN,        KC_LEFT, XXXXXXX, KC_RIGHT, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, \
+    KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K,    KC_X,      LOWER, KC_SPACE, KC_BSPC,        KC_DEL,  KC_ENT,  RAISE,    KC_B,    KC_M,    KC_W,    KC_V,    CTL_T(KC_Z), KC_LGUI \
 ),
 
 [_LOWER] = KEYMAP( \
-  KC_TILD,    KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                                                                    KC_CIRC, KC_AMPR,    KC_ASTR,    KC_LPRN, KC_RPRN, KC_BSPC, \
+  KC_TILD,    KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                                                                KC_CIRC, KC_AMPR,    KC_ASTR,    KC_LPRN, KC_RPRN, KC_BSPC, \
   KC_DEL,     KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F11,   XXXXXXX, KC_F12,          _______, XXXXXXX, KC_RCTL, KC_F11,  KC_UNDS,    KC_PLUS,    KC_LCBR, KC_RCBR, KC_PIPE, \
   TD(TD_FLSH),KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______, _______, _______,          _______, _______, _______, KC_F12,  KC_HOME,    KC_COMM,    KC_DOT,  KC_END,  _______ \
 ),
@@ -130,8 +138,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 [_ADJUST] =  KEYMAP( \
   _______, RESET,   _______, _______, _______, _______,                                                                _______, _______, _______, _______, _______, KC_DEL,  \
-  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, _______, XXXXXXX, _______,          _______, XXXXXXX, _______, AG_SWAP, QWERTY , COLEMAK,  DVORAK,  _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY  \
+  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, _______, XXXXXXX, _______,          _______, XXXXXXX, _______, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  WORKMAN, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, MAGIC_TOGGLE_NKRO, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY  \
 )
 
 
@@ -169,14 +177,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       return false;
       break;
     case DVORAK:
-      if (record->event.pressed) {
+        if (record->event.pressed) {
         #ifdef AUDIO_ENABLE
-          PLAY_SONG(tone_dvorak);
+            PLAY_SONG(tone_dvorak);
         #endif
-        persistent_default_layer_set(1UL<<_DVORAK);
-      }
-      return false;
-      break;
+            persistent_default_layer_set(1UL << _DVORAK);
+        }
+        return false;
+        break;
+    case WORKMAN:
+        if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+            PLAY_SONG(tone_dvorak);
+        #endif
+            persistent_default_layer_set(1UL << _WORKMAN);
+        }
+        return false;
+        break;
     case LOWER:
       if (record->event.pressed) {
         layer_on(_LOWER);
@@ -225,48 +242,45 @@ 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 _QWERTY:
-            if (l_colemak) {
+            case _QWERTY:
+                if (default_layer & (1UL << _COLEMAK)) {
+                    rgblight_set_magenta;
+                }
+                else if (default_layer & (1UL << _DVORAK)) {
+                    rgblight_set_green;
+                }
+                else if (default_layer & (1UL << _WORKMAN)) {
+                    rgblight_set_purple;
+                }
+                else {
+                    rgblight_set_teal;
+                }
+                rgblight_mode(1);
+                break;
+            case _COLEMAK:
                 rgblight_set_magenta;
-            }
-            else if (l_dvorak) {
+                rgblight_mode(1);
+                break;
+            case _DVORAK:
                 rgblight_set_green;
-            }
-            else {
-                rgblight_set_teal;
-            }
-            rgblight_mode(1);
-            break;
-        case _COLEMAK:
-            rgblight_set_magenta;
-            rgblight_mode(1);
-            break;
-        case _DVORAK:
-            rgblight_set_green;
-            rgblight_mode(1);
-            break;
-        case _RAISE:
-            rgblight_set_blue;
-            rgblight_mode(2);
-            break;
-        case _LOWER:
-            rgblight_set_orange;
-            rgblight_mode(3);
-            break;
-        case _ADJUST:
-            rgblight_set_red;
-            rgblight_mode(17);
-            break;
-        case 6:
-            rgblight_set_urine;
-            break;
+                rgblight_mode(1);
+                break;
+            case _RAISE:
+                rgblight_set_blue;
+                rgblight_mode(2);
+                break;
+            case _LOWER:
+                rgblight_set_orange;
+                rgblight_mode(3);
+                break;
+            case _ADJUST:
+                rgblight_set_red;
+                rgblight_mode(17);
+                break;
+            case 6:
+                rgblight_set_urine;
+                break;
         }
         has_layer_changed = false;
     }
index 2090afe9a5e191db4e1356fd65fd2a5c84e3a7ad..4980c0315a83cae2ac7bc5e0c12df3a1ea9cd5a9 100644 (file)
@@ -1,2 +1,9 @@
-CONSOLE_ENABLE    = yes
-TAP_DANCE_ENABLE  = yes
\ No newline at end of file
+CONSOLE_ENABLE    = no
+TAP_DANCE_ENABLE  = yes
+RGBLIGHT_ENABLE   = no
+MOUSEKEY_ENABLE   = no
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/viterbi/keymaps/drashna/config.h b/keyboards/viterbi/keymaps/drashna/config.h
new file mode 100644 (file)
index 0000000..6d409cd
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+Copyright 2017 Danny Nguyen <danny@hexwire.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define _MASTER_RIGHT
+// #define EE_HANDS
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 12
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+#endif
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c
new file mode 100644 (file)
index 0000000..e227b47
--- /dev/null
@@ -0,0 +1,413 @@
+#include "viterbi.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _NUMNAV   0
+#define _DIABLO   1
+#define _MACROS   2
+#define _GAMEPAD  3
+#define _MEDIA    4
+
+
+enum custom_keycodes {
+    KC_DIABLO_CLEAR = SAFE_RANGE,
+    KC_P00,
+    KC_OVERWATCH,
+    KC_SALT,
+    KC_MORESALT,
+    KC_SALTHARD,
+    KC_GOODGAME,
+    KC_SYMM,
+    KC_DOOMFIST,
+    KC_JUSTGAME,
+    KC_GLHF,
+    KC_TORB
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+#define MACROS  TG(_MACROS)
+#define DIABLO  TG(_DIABLO)
+#define GAMEPAD TG(_GAMEPAD)
+#define MEDIA   TG(_MEDIA)
+
+
+bool is_overwatch = false;
+
+//This is both for underglow, and Diablo 3 macros
+static uint8_t current_layer = 0;
+bool has_layer_changed = true;
+
+
+#define rgblight_set_blue     rgblight_sethsv (0xFF, 0xFF, 0xFF);
+#define rgblight_set_red      rgblight_sethsv(0x00, 0xFF, 0xFF);
+#define rgblight_set_green    rgblight_sethsv (0x78, 0xFF, 0xFF);
+#define rgblight_set_orange   rgblight_sethsv (0x1E, 0xFF, 0xFF);
+#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);
+
+#ifdef TAP_DANCE_ENABLE
+//define diablo macro timer variables
+static uint16_t diablo_timer[4];
+static uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
+static uint8_t diablo_key_time[4];
+
+
+bool check_dtimer(uint8_t dtimer) {
+    // has the correct number of seconds elapsed (as defined by diablo_times)
+    return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true;
+};
+
+
+enum {
+    TD_DIABLO_1 = 0,
+    TD_DIABLO_2,
+    TD_DIABLO_3,
+    TD_DIABLO_4
+};
+
+
+// Cycle through the times for the macro, starting at 0, for disabled.
+// Max of six values, so don't exceed
+void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) {
+    if (state->count >= 7) {
+        diablo_key_time[diablo_key] = diablo_times[0];
+        reset_tap_dance(state);
+    }
+    else {
+        diablo_key_time[diablo_key] = diablo_times[state->count - 1];
+    }
+}
+
+
+// Would rather have one function for all of this, but no idea how to do that...
+void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master(state, user_data, 0);
+}
+
+void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master(state, user_data, 1);
+}
+
+void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master(state, user_data, 2);
+}
+
+void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master(state, user_data, 3);
+}
+
+
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+    // 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),
+    [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
+    [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
+
+};
+#endif
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ * ,------------------------------------------------.      ,------------------------------------------------.
+ * |  Ins |   `  |   1  |   2  |   3  |   4  |   5  |      |   6  |   7  |   8  |   9  |   0  | Bksp | Del  |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * |   -  | Tab  |   Q  |   W  |   E  |   R  |   T  |      |   Y  |   U  |   I  |   O  |   P  |   [  |   ]  |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * |   =  | Esc  |   A  |   S  |   D  |   F  |   G  |      |   H  |   J  |   K  |   L  |   ;  |   "  |Enter |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * | Pg Up| Shift|   Z  |   X  |   C  |   V  |   B  |      |   N  |   M  |   ,  |   .  |   /  | Home | End  |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * | Pg Dn|Adjust| Ctrl | Alt  | GUI  |Lower |Space |      |Space |Raise | Left | Down |  Up  | Right|   \  |
+ * `------------------------------------------------'      `------------------------------------------------'
+ */
+  [_NUMNAV] = KEYMAP(
+      MACROS,  DIABLO,  GAMEPAD, KC_NLCK, KC_SCLK, KC_PTSC, KC_PSLS,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      MEDIA,   XXXXXXX, XXXXXXX, KC_P7,   KC_P8,   KC_P9,   KC_PAST,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_HOME, KC_DEL,  KC_PGUP, KC_P4,   KC_P5,   KC_P6,   KC_PMNS,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_END,  KC_UP,   KC_PGDN, KC_P1,   KC_P2,   KC_P3,   KC_PPLS,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_P00,  KC_PDOT, KC_PENT,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+  ),
+
+/* Lower
+ * ,------------------------------------------------.      ,------------------------------------------------.
+ * |      |   ~  |  F1  |  F3  |  F3  |  F4  |  F5  |      |  F6  |  F7  |  F8  |  F9  | F10  | F11  | F12  |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * |   _  |      |   !  |   @  |   #  |   $  |   %  |      |   ^  |   &  |   *  |   (  |   )  |   {  |   }  |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * |   +  |      |  F1  |  F2  |  F3  |  F4  |  F5  |      |  F6  |   _  |   +  |   {  |   }  |      |      |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * |      |      |  F7  |  F8  |  F9  |  F10 |  F11 |      |  F12 |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------|      |------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |      |
+ * `------------------------------------------------'      `------------------------------------------------'
+ */
+  [_DIABLO] = KEYMAP(
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+  ),
+
+  [_MACROS] = KEYMAP(
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+  ),
+
+  [_MEDIA] = KEYMAP(
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      _______, _______, _______, _______, _______, _______, _______,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+  )
+
+};
+
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    uint16_t kc;
+    if (is_overwatch) {
+        kc = KC_BSPC;
+    }
+    else {
+        kc = KC_ENTER;
+    }
+    switch (keycode) {
+#ifdef TAP_DANCE_ENABLE
+    case KC_DIABLO_CLEAR:  // reset all Diable timers, disabling them
+        if (record->event.pressed) {
+            uint8_t dtime;
+
+            for (dtime = 0; dtime < 4; dtime++) {
+                diablo_key_time[dtime] = diablo_times[0];
+            }
+        }
+        return false;
+        break;
+#endif
+    case KC_P00:
+        if (!record->event.pressed) {
+            register_code(KC_P0);
+            unregister_code(KC_P0);
+            register_code(KC_P0);
+            unregister_code(KC_P0);
+        }
+        return false;
+        break;
+    case KC_OVERWATCH:  // reset all Diable timers, disabling them
+        if (record->event.pressed) {
+            is_overwatch = !is_overwatch;
+            has_layer_changed = true;
+        }
+        return false;
+        break;
+    case KC_SALT:
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("Salt, salt, salt...");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_MORESALT:
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("Please sir, can I have some more salt?!");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_SALTHARD:
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_GOODGAME:
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("Good game, everyone!");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_GLHF:
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("Good luck, have fun!!!");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_SYMM:
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("Left click to win!");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_DOOMFIST:
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("Hey, look at me.  I'm Doomfist, and I'm overpowered!  All I do is spam punches all day!   I'm DPS, tank and defense, rolled into one! All I need is team healing to be complete!");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_JUSTGAME:
+
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+    case KC_TORB:
+
+        if (!record->event.pressed) {
+            register_code(kc);
+            unregister_code(kc);
+            _delay_ms(50);
+            SEND_STRING("That was positively riveting!");
+            register_code(KC_ENTER);
+            unregister_code(KC_ENTER);
+        }
+        return false;
+        break;
+
+    }
+    return true;
+}
+
+#ifdef TAP_DANCE_ENABLE
+
+// Sends the key press to system, but only if on the Diablo layer
+void send_diablo_keystroke(uint8_t diablo_key) {
+    if (current_layer == _DIABLO) {
+        switch (diablo_key) {
+        case 0:
+            SEND_STRING("1");
+            break;
+        case 1:
+            SEND_STRING("2");
+            break;
+        case 2:
+            SEND_STRING("3");
+            break;
+        case 3:
+            SEND_STRING("4");
+            break;
+        }
+    }
+}
+
+// Checks each of the 4 timers/keys to see if enough time has elapsed
+// Runs the "send string" command if enough time has passed, and resets the timer.
+void run_diablo_macro_check(void) {
+    uint8_t dtime;
+
+    for (dtime = 0; dtime < 4; dtime++) {
+        if (check_dtimer(dtime) && diablo_key_time[dtime]) {
+            diablo_timer[dtime] = timer_read();
+            send_diablo_keystroke(dtime);
+        }
+    }
+
+}
+#endif
+
+
+void matrix_scan_user(void) {  // runs frequently to update info
+    uint8_t layer = biton32(layer_state);
+
+    if (layer != current_layer) {
+        has_layer_changed = true;
+        current_layer = layer;
+    }
+    // Check layer, and apply color if its changed since last check
+    if (has_layer_changed) {
+
+        switch (layer) {
+        case _NUMNAV:
+            rgblight_set_teal;
+            rgblight_mode(2);
+            break;
+        case _MACROS:
+            rgblight_set_orange;
+            if (is_overwatch) {
+                rgblight_mode(17); 
+            }
+            else {
+                rgblight_mode(18);
+            }
+            break;
+        case _DIABLO:
+            rgblight_set_red;
+            rgblight_mode(5);
+            break;
+        case _GAMEPAD:
+            rgblight_set_urine;
+            rgblight_mode(1);
+            break;
+        case _MEDIA:
+            rgblight_set_blue;
+            rgblight_mode(1);
+            break;
+        }
+        has_layer_changed = false;
+    }
+
+#ifdef TAP_DANCE_ENABLE
+    // Run Diablo 3 macro checking code.
+    run_diablo_macro_check();
+#endif
+};
\ No newline at end of file
diff --git a/keyboards/viterbi/keymaps/drashna/rules.mk b/keyboards/viterbi/keymaps/drashna/rules.mk
new file mode 100644 (file)
index 0000000..f1bb928
--- /dev/null
@@ -0,0 +1,8 @@
+CONSOLE_ENABLE    = no
+TAP_DANCE_ENABLE  = yes
+RGBLIGHT_ENABLE   = yes
+MOUSEKEY_ENABLE   = no
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif