]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/viterbi/keymaps/drashna/keymap.c
Updated personal keymaps (#1945)
[qmk_firmware.git] / keyboards / viterbi / keymaps / drashna / keymap.c
index e227b472f8c8411c39c4542883143574f341eb19..acddcb741871a982c96f5623d5e720e10bbd90c2 100644 (file)
@@ -10,14 +10,16 @@ extern keymap_config_t keymap_config;
 // entirely and just use numbers.
 #define _NUMNAV   0
 #define _DIABLO   1
-#define _MACROS   2
-#define _GAMEPAD  3
+#define _GAMEPAD  2
+#define _MACROS   3
 #define _MEDIA    4
+#define _COVECUBE 5
 
 
 enum custom_keycodes {
     KC_DIABLO_CLEAR = SAFE_RANGE,
     KC_P00,
+    KC_MAKE,
     KC_OVERWATCH,
     KC_SALT,
     KC_MORESALT,
@@ -27,33 +29,33 @@ enum custom_keycodes {
     KC_DOOMFIST,
     KC_JUSTGAME,
     KC_GLHF,
-    KC_TORB
+    KC_TORB,
+    KC_AIM
 };
 
 // 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)
+#define MACROS   TG(_MACROS)
+#define DIABLO   TG(_DIABLO)
+#define GAMEPAD  TG(_GAMEPAD)
+#define MEDIA    TG(_MEDIA)
+#define COVECUBE TG(_COVECUBE)
 
 
 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 RGBLIGHT_ENABLE
+#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_yellow      rgblight_sethsv (0x3C,  0xFF, 0xFF);
+#define rgblight_set_purple      rgblight_sethsv (0x10E, 0xFF, 0xFF);
+#endif
 
 #ifdef TAP_DANCE_ENABLE
 //define diablo macro timer variables
@@ -122,77 +124,71 @@ qk_tap_dance_action_t tap_dance_actions[] = {
 
 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, \
+      MACROS,  DIABLO,  GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      MEDIA,   KC_CALC, COVECUBE,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 \
+      KC_ESC,  DIABLO,  KC_V,    KC_D,    XXXXXXX, XXXXXXX, KC_L,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_TAB,  KC_S,    KC_F,    KC_I,    KC_M,    KC_T,    KC_J,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_Q,    KC_1,    KC_2,    KC_3,    KC_4,    KC_G,    KC_F,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_LCTL, (TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), KC_Z, KC_DIABLO_CLEAR,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_LALT, KC_F4,   KC_F5,   KC_F8,   KC_F9,   KC_F10,  SFT_T(KC_SPACE),          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
   ),
-
  
+  [_GAMEPAD] = KEYMAP(  // Game pad layout designed primarily for Overwatch
+      MACROS,  KC_ESC,  GAMEPAD, KC_1,    KC_2,    KC_3,    KC_4,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      MEDIA,   KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_Z,    KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_Y,    KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_F1,   KC_U,    KC_I,    KC_Y,    KC_V,    KC_SPC,  KC_V,          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 \
+      MACROS,      XXXXXXX,     GAMEPAD,     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, \
+      KC_SYMM,     KC_TORB,     KC_DOOMFIST, XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_GLHF,     KC_GOODGAME, XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_SALT,     KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM,      XXXXXXX,     XXXXXXX,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+  ),
+
+  [_COVECUBE] = KEYMAP(
+      COVECUBE,    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, 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 \
+      RESET,   KC_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      MEDIA,   XXXXXXX, RGB_SAI, RGB_VAI, RGB_M_P, RGB_M_B, RGB_M_R,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      RGB_TOG, RGB_MOD, RGB_SAD, RGB_VAD, RGB_M_SW,RGB_M_SN,RGB_M_K,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, RGB_M_K, RGB_M_X, RGB_M_G,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+      KC_MUTE, KC_VOLD, KC_VOLU, 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;
+    if (is_overwatch) { 
+        kc = KC_BSPC;  
     }
     else {
         kc = KC_ENTER;
     }
+    // Once a delay command is added to "SEND_STRING", 
+    // replace these with X_BSPC and X_ENTER instead. 
+    // and add "SS_TAP(kc) SS_DELAY(50)" to all of the
+    // SEND_STRING commands, to compress things. 
     switch (keycode) {
 #ifdef TAP_DANCE_ENABLE
     case KC_DIABLO_CLEAR:  // reset all Diable timers, disabling them
@@ -215,11 +211,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         return false;
         break;
+    case KC_MAKE:
+        if (!record->event.pressed) {
+            SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER));
+        }
+        return false;
+        break;
     case KC_OVERWATCH:  // reset all Diable timers, disabling them
         if (record->event.pressed) {
             is_overwatch = !is_overwatch;
-            has_layer_changed = true;
         }
+#ifdef RGBLIGHT_ENABLE
+        is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
+#endif
         return false;
         break;
     case KC_SALT:
@@ -227,9 +231,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             register_code(kc);
             unregister_code(kc);
             _delay_ms(50);
-            SEND_STRING("Salt, salt, salt...");
-            register_code(KC_ENTER);
-            unregister_code(KC_ENTER);
+            SEND_STRING("Salt, salt, salt..." SS_TAP(X_ENTER));
         }
         return false;
         break;
@@ -238,9 +240,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             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);
+            SEND_STRING("Please sir, can I have some more salt?!" SS_TAP(X_ENTER));
         }
         return false;
         break;
@@ -249,9 +249,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             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);
+            SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!" SS_TAP(X_ENTER));
         }
         return false;
         break;
@@ -260,9 +258,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             register_code(kc);
             unregister_code(kc);
             _delay_ms(50);
-            SEND_STRING("Good game, everyone!");
-            register_code(KC_ENTER);
-            unregister_code(KC_ENTER);
+            SEND_STRING("Good game, everyone!" SS_TAP(X_ENTER));
         }
         return false;
         break;
@@ -271,9 +267,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             register_code(kc);
             unregister_code(kc);
             _delay_ms(50);
-            SEND_STRING("Good luck, have fun!!!");
-            register_code(KC_ENTER);
-            unregister_code(KC_ENTER);
+            SEND_STRING("Good luck, have fun!!!" SS_TAP(X_ENTER));
         }
         return false;
         break;
@@ -282,48 +276,44 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             register_code(kc);
             unregister_code(kc);
             _delay_ms(50);
-            SEND_STRING("Left click to win!");
-            register_code(KC_ENTER);
-            unregister_code(KC_ENTER);
+            SEND_STRING("Left click to win!" SS_TAP(X_ENTER));
         }
         return false;
         break;
-    case KC_DOOMFIST:
+    case KC_JUSTGAME:
+
         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);
+            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." SS_TAP(X_ENTER));
         }
         return false;
         break;
-    case KC_JUSTGAME:
+    case KC_TORB:
 
         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);
+            SEND_STRING("That was positively riveting! SS_TAP(X_ENTER)");
         }
         return false;
         break;
-    case KC_TORB:
+    case KC_AIM:
 
         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);
+            SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER));
+            _delay_ms(50);
+            SEND_STRING("Wait! That aim is TOO good!  You're clearly using an aim hack! CHEATER!" SS_TAP(X_ENTER));
         }
         return false;
         break;
 
+
     }
     return true;
 }
@@ -332,7 +322,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 // 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) {
+    if (biton32(layer_state) == _DIABLO) {
         switch (diablo_key) {
         case 0:
             SEND_STRING("1");
@@ -366,48 +356,51 @@ void run_diablo_macro_check(void) {
 #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) {
+void matrix_init_user(void) { // Runs boot tasks for keyboard
+#ifdef RGBLIGHT_ENABLE
+    rgblight_enable();
+    rgblight_set_teal;
+    rgblight_mode(1);
+#endif
+};
 
-        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;
-    }
 
+void matrix_scan_user(void) {  // runs frequently to update info
 #ifdef TAP_DANCE_ENABLE
     // Run Diablo 3 macro checking code.
     run_diablo_macro_check();
 #endif
-};
\ No newline at end of file
+};
+
+
+uint32_t layer_state_set_kb(uint32_t state) {
+#ifdef RGBLIGHT_ENABLE
+    rgblight_enable();
+    switch (biton32(state)) {
+    case _NUMNAV:
+        rgblight_set_teal;
+        rgblight_mode(2);
+        break;
+    case _MACROS:
+        rgblight_set_orange;
+        is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
+        break;
+    case _DIABLO:
+        rgblight_set_red;
+        rgblight_mode(5);
+        break;
+    case _GAMEPAD:
+        rgblight_set_yellow;
+        rgblight_mode(1);
+        break;
+    case _MEDIA:
+        rgblight_set_blue;
+        rgblight_mode(1);
+        break;
+    case _COVECUBE:
+        rgblight_set_green;
+        rgblight_mode(2);
+    }
+#endif
+    return state;
+}