summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2019-11-20 12:37:24 -0800
committerGitHub <noreply@github.com>2019-11-20 12:37:24 -0800
commiteb91c962886b1bb52c2d457a574cba09e2a8b0f0 (patch)
tree20f3d49671b6d42ca1edf285431e3e4120551228 /users
parent8e8986b2506ca4cdd2339a441314a0838e3a4329 (diff)
[Keymap] All about (ARM) RGB and OLEDs (drashna keymaps) (#7354)
* Add Kyria Keymap

* Enable all RGBLIGHT Animations for ARM and high capacity AVR

* Reduce GNUC version for __has_include

* Cleanup Ortho 4x12 Community layout

* Update Collide 39 keymap

* Cleanup Keymaps

* Enable full 30 LEDs for Ergodox

* Change EEPROM Load timing

* Use RGB Matrix on Planck Rev6

* Use correct keymap swap

* Enable everything for ARM

* Only enable rgb sleep on avr until crash is fixed

* Add additional Kyria keymap config

* Overhaul Kyria OLED display

* Improve kyria keymap based on usage

* Minor tweaks to rules

* Update OLED code to truncate properly

* Fix RGB Light layer indication

* Switch all of biton32 to get_highest_layer function

* Fix OLED Keylogger display

* Run qmk cformat over all of my user files

* Slight tweak to kyria based on usage

* Move around LALT_T config

* Add comments about base wrappers to keymaps

* Another cformat pass

* Temp fix for VUSB boards and NKRO

* Convert tabs to spaces in rules.mk files

* Only enable RGBLight if it's enabled

* Add Encoder Flip setting

* Update OLED font file
Diffstat (limited to 'users')
-rw-r--r--users/drashna/config.h14
-rw-r--r--users/drashna/drashna.c60
-rw-r--r--users/drashna/drashna.h5
-rw-r--r--users/drashna/font_gmk_bad.h241
-rw-r--r--users/drashna/hue_manitee_font.h241
-rw-r--r--users/drashna/process_records.c8
-rw-r--r--users/drashna/rgb_stuff.c194
-rw-r--r--users/drashna/rgb_stuff.h6
-rw-r--r--users/drashna/rgblight_breathe_table.h8
-rw-r--r--users/drashna/rules.mk23
-rw-r--r--users/drashna/template.c130
-rw-r--r--users/drashna/template.h15
12 files changed, 695 insertions, 250 deletions
diff --git a/users/drashna/config.h b/users/drashna/config.h
index a0f92d8f38..6fafff8604 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -7,7 +7,7 @@
 #define USB_POLLING_INTERVAL_MS 1
 
 #ifdef AUDIO_ENABLE
-#    if __GNUC__ > 7
+#    if __GNUC__ > 5
 #        if __has_include("drashna_song_list.h")
 #            include "drashna_song_list.h"
 #        endif  // if file exists
@@ -29,11 +29,15 @@
 #endif  // !AUDIO_ENABLE
 
 #ifdef RGBLIGHT_ENABLE
-#    define RGBLIGHT_SLEEP
 #    undef RGBLIGHT_ANIMATIONS
-#    define RGBLIGHT_EFFECT_BREATHING
-#    define RGBLIGHT_EFFECT_SNAKE
-#    define RGBLIGHT_EFFECT_KNIGHT
+#    if defined(__AVR__) && !defined(__AVR_AT90USB1286__)
+#        define RGBLIGHT_SLEEP
+#        define RGBLIGHT_EFFECT_BREATHING
+#        define RGBLIGHT_EFFECT_SNAKE
+#        define RGBLIGHT_EFFECT_KNIGHT
+#    else
+#        define RGBLIGHT_ANIMATIONS
+#    endif
 #endif  // RGBLIGHT_ENABLE
 
 #ifdef RGB_MATRIX_ENABLE
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index b48d837d00..71779a6215 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -25,8 +25,6 @@ userspace_config_t userspace_config;
 #    define DRASHNA_UNICODE_MODE 2
 #endif
 
-
-
 bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
     static uint16_t this_timer;
     if (pressed) {
@@ -73,19 +71,22 @@ void bootmagic_lite(void) {
     }
 }
 
+__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
+
+void keyboard_pre_init_user(void) {
+    userspace_config.raw = eeconfig_read_user();
+    keyboard_pre_init_keymap();
+}
 // Add reconfigurable functions here, for keymap customization
 // This allows for a global, userspace functions, and continued
 // customization of the keymap.  Use _keymap instead of _user
 // functions in the keymaps
-__attribute__((weak))
-void matrix_init_keymap(void) {}
+__attribute__((weak)) void matrix_init_keymap(void) {}
 
 // Call user matrix init, set default RGB colors and then
 // call the keymap's init function
 void matrix_init_user(void) {
-    userspace_config.raw = eeconfig_read_user();
-
-#ifdef BOOTLOADER_CATERINA
+#if defined(BOOTLOADER_CATERINA) && defined(__AVR__)
     DDRD &= ~(1 << 5);
     PORTD &= ~(1 << 5);
 
@@ -100,8 +101,7 @@ void matrix_init_user(void) {
     matrix_init_keymap();
 }
 
-__attribute__((weak))
-void keyboard_post_init_keymap(void) {}
+__attribute__((weak)) void keyboard_post_init_keymap(void) {}
 
 void keyboard_post_init_user(void) {
 #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
@@ -110,10 +110,9 @@ void keyboard_post_init_user(void) {
     keyboard_post_init_keymap();
 }
 
-__attribute__((weak))
-void shutdown_keymap(void) {}
+__attribute__((weak)) void shutdown_keymap(void) {}
 
- void rgb_matrix_update_pwm_buffers(void);
+void rgb_matrix_update_pwm_buffers(void);
 
 void shutdown_user(void) {
 #ifdef RGBLIGHT_ENABLE
@@ -122,29 +121,22 @@ void shutdown_user(void) {
     rgblight_setrgb_red();
 #endif  // RGBLIGHT_ENABLE
 #ifdef RGB_MATRIX_ENABLE
-    rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
+    rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
     rgb_matrix_update_pwm_buffers();
 
 #endif  // RGB_MATRIX_ENABLE
     shutdown_keymap();
 }
 
-__attribute__((weak))
-void suspend_power_down_keymap(void) {}
+__attribute__((weak)) void suspend_power_down_keymap(void) {}
 
-void suspend_power_down_user(void) {
-    suspend_power_down_keymap();
-}
+void suspend_power_down_user(void) { suspend_power_down_keymap(); }
 
-__attribute__((weak))
-void suspend_wakeup_init_keymap(void) {}
+__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
 
-void suspend_wakeup_init_user(void) {
-    suspend_wakeup_init_keymap();
-}
+void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); }
 
-__attribute__((weak))
-void matrix_scan_keymap(void) {}
+__attribute__((weak)) void matrix_scan_keymap(void) {}
 
 // No global matrix scan code, so just run keymap's matrix
 // scan function
@@ -166,8 +158,7 @@ void matrix_scan_user(void) {
     matrix_scan_keymap();
 }
 
-__attribute__((weak))
-layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
+__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
 
 // on layer change, no matter where the change was initiated
 // Then runs keymap's layer change check
@@ -179,32 +170,27 @@ layer_state_t layer_state_set_user(layer_state_t state) {
     return layer_state_set_keymap(state);
 }
 
-__attribute__((weak))
-layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
+__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
 
 // Runs state check and changes underglow color and animation
 layer_state_t default_layer_state_set_user(layer_state_t state) {
     state = default_layer_state_set_keymap(state);
 #if 0
-#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+#    if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
   state = default_layer_state_set_rgb(state);
 #    endif  // RGBLIGHT_ENABLE
 #endif
     return state;
 }
 
-__attribute__((weak))
-void led_set_keymap(uint8_t usb_led) {}
+__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
 
 // Any custom LED code goes here.
 // So far, I only have keyboard specific code,
 // So nothing goes here.
-void led_set_user(uint8_t usb_led) {
-    led_set_keymap(usb_led);
-}
+void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
 
-__attribute__((weak))
-void eeconfig_init_keymap(void) {}
+__attribute__((weak)) void eeconfig_init_keymap(void) {}
 
 void eeconfig_init_user(void) {
     userspace_config.raw              = 0;
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 0ccb7614fa..0ba1817604 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -16,7 +16,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #pragma once
-#include "quantum.h"
+#include QMK_KEYBOARD_H
+
 #include "version.h"
 #include "eeprom.h"
 #include "wrappers.h"
@@ -62,6 +63,7 @@ void          led_set_keymap(uint8_t usb_led);
 void          eeconfig_init_keymap(void);
 bool          hasAllBitsInMask(uint8_t value, uint8_t mask);
 
+// clang-format off
 typedef union {
     uint32_t raw;
     struct {
@@ -73,6 +75,7 @@ typedef union {
         bool    rgb_matrix_idle_anim :1;
     };
 } userspace_config_t;
+// clang-format on
 
 extern userspace_config_t userspace_config;
 
diff --git a/users/drashna/font_gmk_bad.h b/users/drashna/font_gmk_bad.h
new file mode 100644
index 0000000000..c1c5c390a9
--- /dev/null
+++ b/users/drashna/font_gmk_bad.h
@@ -0,0 +1,241 @@
+#pragma once
+
+#ifdef __AVR__
+#    include <avr/io.h>
+#    include <avr/pgmspace.h>
+#elif defined(ESP8266)
+#    include <pgmspace.h>
+#else
+#    define PROGMEM
+#endif
+
+// Corne 8x6 font with QMK Firmware Logo
+// Online editor: https://helixfonteditor.netlify.com/
+
+// clang-format off
+const unsigned char font[] PROGMEM = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+  0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+  0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+  0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+  0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+  0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+  0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+  0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+  0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+  0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+  0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+  0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+  0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+  0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+  0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+  0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+  0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+  0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+  0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+  0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+  0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+  0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+  0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+  0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+  0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+  0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+  0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+  0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+  0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+  0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+  0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+  0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+  0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+  0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+  0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+  0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+  0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+  0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+  0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+  0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+  0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+  0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+  0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+  0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+  0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+  0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+  0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+  0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+  0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+  0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+  0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+  0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+  0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+  0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+  0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+  0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+  0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+  0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+  0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+  0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+  0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+  0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+  0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+  0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+  0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+  0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+  0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+  0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+  0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+  0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+  0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+  0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+  0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+  0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+  0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+  0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+  0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+  0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+  0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+  0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+  0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+  0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+  0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+  0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+  0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+  0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+  0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+  0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+  0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+  0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+  0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+  0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+  0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+  0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+  0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+  0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+  0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+  0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+  0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+  0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+  0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+  0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+  0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+  0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+  0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+  0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+  0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+  0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+  0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+  0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+  0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+  0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+  0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+  0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+  0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+  0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+  0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+  0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00,
+  0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+  0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+  0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+  0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+  0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+  0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70,
+  0x38, 0x38, 0x38, 0x78, 0x70, 0xF0,
+  0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8,
+  0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00,
+  0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8,
+  0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00,
+  0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38,
+  0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38,
+  0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC,
+  0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+  0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+  0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+  0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
+  0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00,
+  0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9,
+  0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00,
+  0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F,
+  0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE,
+  0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF,
+  0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
+  0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F,
+  0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+  0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C,
+  0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00,
+  0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE,
+  0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF,
+  0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00,
+  0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F,
+  0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF,
+  0x3F, 0x00, 0x00, 0x00, 0x00, 0x80,
+  0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
+  0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+  0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+  0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+  0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x03, 0x03, 0x03, 0x07,
+  0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x06, 0x07, 0x07, 0x07, 0x01, 0x00,
+  0x00, 0x00, 0x07, 0x07, 0x07, 0x01,
+  0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
+  0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
+  0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
+  0x00, 0x03, 0x07, 0x07, 0x07, 0x06,
+  0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+  0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x03, 0x07,
+  0x07, 0x07, 0x07, 0x03, 0x07, 0x07,
+  0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x03, 0x07, 0x07, 0x07,
+  0x07, 0x03, 0x07, 0x07, 0x07, 0x07,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
+  0x07, 0x07, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/users/drashna/hue_manitee_font.h b/users/drashna/hue_manitee_font.h
new file mode 100644
index 0000000000..72d50f7a6a
--- /dev/null
+++ b/users/drashna/hue_manitee_font.h
@@ -0,0 +1,241 @@
+#pragma once
+
+#ifdef __AVR__
+#    include <avr/io.h>
+#    include <avr/pgmspace.h>
+#elif defined(ESP8266)
+#    include <pgmspace.h>
+#else
+#    define PROGMEM
+#endif
+
+// Corne 8x6 font with QMK Firmware Logo
+// Online editor: https://helixfonteditor.netlify.com/
+
+// clang-format off
+const unsigned char font[] PROGMEM = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+  0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+  0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+  0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+  0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+  0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+  0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+  0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+  0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+  0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+  0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+  0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+  0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+  0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+  0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+  0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+  0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+  0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+  0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+  0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+  0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+  0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+  0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+  0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+  0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+  0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+  0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+  0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+  0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+  0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+  0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+  0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+  0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+  0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+  0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+  0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+  0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+  0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+  0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+  0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+  0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+  0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+  0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+  0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+  0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+  0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+  0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+  0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+  0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+  0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+  0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+  0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+  0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+  0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+  0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+  0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+  0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+  0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+  0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+  0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+  0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+  0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+  0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+  0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+  0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+  0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+  0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+  0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+  0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+  0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+  0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+  0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+  0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+  0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+  0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+  0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+  0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+  0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+  0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+  0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+  0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+  0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+  0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+  0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+  0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+  0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+  0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+  0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+  0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+  0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+  0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+  0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+  0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+  0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+  0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+  0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+  0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+  0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+  0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+  0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+  0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+  0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+  0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+  0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+  0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+  0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+  0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+  0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+  0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+  0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+  0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+  0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+  0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+  0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+  0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+  0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+  0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+  0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00,
+  0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+  0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+  0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+  0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+  0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+  0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
+  0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
+  0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4,
+  0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C,
+  0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+  0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+  0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+  0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
+  0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
+  0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
+  0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
+  0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
+  0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
+  0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
+  0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
+  0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
+  0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
+  0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
+  0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC,
+  0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+  0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+  0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+  0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
+  0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
+  0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+  0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c
index 6eb21d2f27..2f79ad11cc 100644
--- a/users/drashna/process_records.c
+++ b/users/drashna/process_records.c
@@ -2,11 +2,9 @@
 
 uint16_t copy_paste_timer;
 
-__attribute__((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
+__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
 
-__attribute__((weak))
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
+__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
 
 // Defines actions tor my global custom keycodes. Defined in drashna.h file
 // Then runs the _keymap's record handier if not processed here
@@ -23,7 +21,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     switch (keycode) {
         case KC_QWERTY ... KC_WORKMAN:
             if (record->event.pressed) {
-                uint8_t mods = mod_config(get_mods()|get_oneshot_mods());
+                uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
                 if (!mods) {
                     set_single_persistent_default_layer(keycode - KC_QWERTY);
                 } else if (mods & MOD_MASK_SHIFT) {
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index a9af0566e3..52ec61c22d 100644
--- a/users/drashna/rgb_stuff.c
+++ b/users/drashna/rgb_stuff.c
@@ -12,9 +12,9 @@ void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight
 #if defined(RGB_MATRIX_ENABLE)
 static uint32_t hypno_timer;
 #    if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd)
-#       define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#        define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
 #    else
-#       define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
+#        define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
 #    endif
 #endif
 
@@ -23,68 +23,68 @@ static uint32_t hypno_timer;
  * This is especially useful for One Shot Mods, since it's not always obvious if they're still lit up.
  */
 #ifdef RGBLIGHT_ENABLE
-#ifdef INDICATOR_LIGHTS
+#    ifdef INDICATOR_LIGHTS
 void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
-    if (userspace_config.rgb_layer_change && biton32(layer_state) == 0) {
+    if (userspace_config.rgb_layer_change && get_highest_layer(layer_state) == 0) {
         if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
-#    ifdef SHFT_LED1
+#        ifdef SHFT_LED1
             rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
-#    endif  // SHFT_LED1
-#    ifdef SHFT_LED2
+#        endif  // SHFT_LED1
+#        ifdef SHFT_LED2
             rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
-#    endif  // SHFT_LED2
+#        endif  // SHFT_LED2
         } else {
-#    ifdef SHFT_LED1
+#        ifdef SHFT_LED1
             rgblight_sethsv_default_helper(SHFT_LED1);
-#    endif  // SHFT_LED1
-#    ifdef SHFT_LED2
+#        endif  // SHFT_LED1
+#        ifdef SHFT_LED2
             rgblight_sethsv_default_helper(SHFT_LED2);
-#    endif  // SHFT_LED2
+#        endif  // SHFT_LED2
         }
         if ((this_mod | this_osm) & MOD_MASK_CTRL) {
-#    ifdef CTRL_LED1
+#        ifdef CTRL_LED1
             rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
-#    endif  // CTRL_LED1
-#    ifdef CTRL_LED2
+#        endif  // CTRL_LED1
+#        ifdef CTRL_LED2
             rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
-#    endif  // CTRL_LED2
+#        endif  // CTRL_LED2
         } else {
-#    ifdef CTRL_LED1
+#        ifdef CTRL_LED1
             rgblight_sethsv_default_helper(CTRL_LED1);
-#    endif  // CTRL_LED1
-#    ifdef CTRL_LED2
+#        endif  // CTRL_LED1
+#        ifdef CTRL_LED2
             rgblight_sethsv_default_helper(CTRL_LED2);
-#    endif  // CTRL_LED2
+#        endif  // CTRL_LED2
         }
         if ((this_mod | this_osm) & MOD_MASK_GUI) {
-#    ifdef GUI_LED1
+#        ifdef GUI_LED1
             rgblight_sethsv_at(51, 255, 255, GUI_LED1);
-#    endif  // GUI_LED1
-#    ifdef GUI_LED2
+#        endif  // GUI_LED1
+#        ifdef GUI_LED2
             rgblight_sethsv_at(51, 255, 255, GUI_LED2);
-#    endif  // GUI_LED2
+#        endif  // GUI_LED2
         } else {
-#    ifdef GUI_LED1
+#        ifdef GUI_LED1
             rgblight_sethsv_default_helper(GUI_LED1);
-#    endif  // GUI_LED1
-#    ifdef GUI_LED2
+#        endif  // GUI_LED1
+#        ifdef GUI_LED2
             rgblight_sethsv_default_helper(GUI_LED2);
-#    endif  // GUI_LED2
+#        endif  // GUI_LED2
         }
         if ((this_mod | this_osm) & MOD_MASK_ALT) {
-#    ifdef ALT_LED1
+#        ifdef ALT_LED1
             rgblight_sethsv_at(240, 255, 255, ALT_LED1);
-#    endif  // ALT_LED1
-#    ifdef GUI_LED2
+#        endif  // ALT_LED1
+#        ifdef GUI_LED2
             rgblight_sethsv_at(240, 255, 255, ALT_LED2);
-#    endif  // GUI_LED2
+#        endif  // GUI_LED2
         } else {
-#    ifdef GUI_LED1
+#        ifdef GUI_LED1
             rgblight_sethsv_default_helper(ALT_LED1);
-#    endif  // GUI_LED1
-#    ifdef GUI_LED2
+#        endif  // GUI_LED1
+#        ifdef GUI_LED2
             rgblight_sethsv_default_helper(ALT_LED2);
-#    endif  // GUI_LED2
+#        endif  // GUI_LED2
         }
     }
 }
@@ -95,9 +95,9 @@ void matrix_scan_indicator(void) {
         set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
     }
 }
-#endif  // INDICATOR_LIGHTS
+#    endif  // INDICATOR_LIGHTS
 
-#ifdef RGBLIGHT_TWINKLE
+#    ifdef RGBLIGHT_TWINKLE
 static rgblight_fadeout lights[RGBLED_NUM];
 
 __attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; }
@@ -105,40 +105,40 @@ __attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) {
 /* This function checks for used LEDs.  This way, collisions don't occur and cause weird rendering */
 bool rgblight_twinkle_is_led_used(uint8_t index) {
     switch (index) {
-#    ifdef INDICATOR_LIGHTS
-#        ifdef SHFT_LED1
+#        ifdef INDICATOR_LIGHTS
+#            ifdef SHFT_LED1
         case SHFT_LED1:
             return true;
-#        endif  // SHFT_LED1
-#        ifdef SHFT_LED2
+#            endif  // SHFT_LED1
+#            ifdef SHFT_LED2
         case SHFT_LED2:
             return true;
-#        endif  // SHFT_LED2
-#        ifdef CTRL_LED1
+#            endif  // SHFT_LED2
+#            ifdef CTRL_LED1
         case CTRL_LED1:
             return true;
-#        endif  // CTRL_LED1
-#        ifdef CTRL_LED2
+#            endif  // CTRL_LED1
+#            ifdef CTRL_LED2
         case CTRL_LED2:
             return true;
-#        endif  // CTRL_LED2
-#        ifdef GUI_LED1
+#            endif  // CTRL_LED2
+#            ifdef GUI_LED1
         case GUI_LED1:
             return true;
-#        endif  // GUI_LED1
-#        ifdef GUI_LED2
+#            endif  // GUI_LED1
+#            ifdef GUI_LED2
         case GUI_LED2:
             return true;
-#        endif  // GUI_LED2
-#        ifdef ALT_LED1
+#            endif  // GUI_LED2
+#            ifdef ALT_LED1
         case ALT_LED1:
             return true;
-#        endif  // ALT_LED1
-#        ifdef ALT_LED2
+#            endif  // ALT_LED1
+#            ifdef ALT_LED2
         case ALT_LED2:
             return true;
-#        endif  // ALT_LED2
-#    endif      // INDICATOR_LIGHTS
+#            endif  // ALT_LED2
+#        endif      // INDICATOR_LIGHTS
         default:
             return rgblight_twinkle_is_led_used_keymap(index);
     }
@@ -154,19 +154,19 @@ void scan_rgblight_fadeout(void) {  // Don't effing change this function .... rg
 
             if (light->life) {
                 light->life -= 1;
-                if (biton32(layer_state) == 0) {
+                if (get_highest_layer(layer_state) == 0) {
                     sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
                 }
                 light->timer = timer_read();
             } else {
-                if (light->enabled && biton32(layer_state) == 0) {
+                if (light->enabled && get_highest_layer(layer_state) == 0) {
                     rgblight_sethsv_default_helper(light_index);
                 }
                 litup = light->enabled = false;
             }
         }
     }
-    if (litup && biton32(layer_state) == 0) {
+    if (litup && get_highest_layer(layer_state) == 0) {
         rgblight_set();
     }
 }
@@ -211,8 +211,8 @@ void start_rgb_light(void) {
 
     rgblight_sethsv_at(light->hue, 255, light->life, light_index);
 }
-#endif
-#endif // RGBLIGHT_ENABLE
+#    endif
+#endif  // RGBLIGHT_ENABLE
 
 bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
     uint16_t temp_keycode = keycode;
@@ -259,7 +259,9 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
                 userspace_config.rgb_matrix_idle_anim ^= 1;
                 dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
                 eeconfig_update_user(userspace_config.raw);
-                if (userspace_config.rgb_matrix_idle_anim) { rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); }
+                if (userspace_config.rgb_matrix_idle_anim) {
+                    rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
+                }
             }
 #endif
             break;
@@ -281,7 +283,9 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
                     is_eeprom_updated = true;
                 }
 #endif
-                if (is_eeprom_updated) { eeconfig_update_user(userspace_config.raw); }
+                if (is_eeprom_updated) {
+                    eeconfig_update_user(userspace_config.raw);
+                }
             }
             break;
     }
@@ -290,7 +294,7 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
 
 void keyboard_post_init_rgb(void) {
 #if defined(RGBLIGHT_ENABLE)
-#   if defined(RGBLIGHT_STARTUP_ANIMATION)
+#    if defined(RGBLIGHT_STARTUP_ANIMATION)
     bool is_enabled = rgblight_config.enable;
     if (userspace_config.rgb_layer_change) {
         rgblight_enable_noeeprom();
@@ -309,13 +313,13 @@ void keyboard_post_init_rgb(void) {
         rgblight_disable_noeeprom();
     }
 
-#   endif
+#    endif
     layer_state_set_user(layer_state);
 #endif
 #if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
-        if (userspace_config.rgb_matrix_idle_anim) {
-            rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
-        }
+    if (userspace_config.rgb_matrix_idle_anim) {
+        rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
+    }
 #endif
 }
 
@@ -337,67 +341,70 @@ void matrix_scan_rgb(void) {
 #endif
 }
 
+#ifdef RGBLIGHT_ENABLE
+void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
+    rgblight_sethsv_noeeprom(hue, sat, val);
+    wait_us(175);  // Add a slight delay between color and mode to ensure it's processed correctly
+    rgblight_mode_noeeprom(mode);
+}
+#endif
+
 layer_state_t layer_state_set_rgb(layer_state_t state) {
 #ifdef RGBLIGHT_ENABLE
     if (userspace_config.rgb_layer_change) {
-        switch (biton32(state)) {
+        switch (get_highest_layer(state)) {
             case _MACROS:
-                rgblight_sethsv_noeeprom_orange();
-                userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3);
+                rgblight_set_hsv_and_mode(HSV_ORANGE, userspace_config.is_overwatch ? RGBLIGHT_MODE_SNAKE + 2 : RGBLIGHT_MODE_SNAKE + 3);
                 break;
             case _MEDIA:
-                rgblight_sethsv_noeeprom_chartreuse();
-                rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 1);
+                rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1);
                 break;
             case _GAMEPAD:
-                rgblight_sethsv_noeeprom_orange();
-                rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2);
+                rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2);
                 break;
             case _DIABLO:
-                rgblight_sethsv_noeeprom_red();
-                rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+                rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3);
                 break;
             case _RAISE:
-                rgblight_sethsv_noeeprom_yellow();
-                rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+                rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3);
                 break;
             case _LOWER:
-                rgblight_sethsv_noeeprom_green();
-                rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+                rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3);
                 break;
             case _ADJUST:
-                rgblight_sethsv_noeeprom_red();
-                rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
+                rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2);
                 break;
             default:  //  for any other layers, or the default layer
-                switch (biton32(default_layer_state)) {
+            {
+                uint8_t mode = get_highest_layer(state) == _MODS ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT;
+                switch (get_highest_layer(default_layer_state)) {
                     case _COLEMAK:
-                        rgblight_sethsv_noeeprom_magenta();
+                        rgblight_set_hsv_and_mode(HSV_MAGENTA, mode);
                         break;
                     case _DVORAK:
-                        rgblight_sethsv_noeeprom_springgreen();
+                        rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, mode);
                         break;
                     case _WORKMAN:
-                        rgblight_sethsv_noeeprom_goldenrod();
+                        rgblight_set_hsv_and_mode(HSV_GOLDENROD, mode);
                         break;
                     case _NORMAN:
-                        rgblight_sethsv_noeeprom_coral();
+                        rgblight_set_hsv_and_mode(HSV_CORAL, mode);
                         break;
                     case _MALTRON:
-                        rgblight_sethsv_noeeprom_yellow();
+                        rgblight_set_hsv_and_mode(HSV_YELLOW, mode);
                         break;
                     case _EUCALYN:
-                        rgblight_sethsv_noeeprom_pink();
+                        rgblight_set_hsv_and_mode(HSV_PINK, mode);
                         break;
                     case _CARPLAX:
-                        rgblight_sethsv_noeeprom_blue();
+                        rgblight_set_hsv_and_mode(HSV_BLUE, mode);
                         break;
                     default:
-                        rgblight_sethsv_noeeprom_cyan();
+                        rgblight_set_hsv_and_mode(HSV_CYAN, mode);
                         break;
                 }
-                biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);  // if _MODS layer is on, then breath to denote it
                 break;
+            }
         }
     }
 #endif  // RGBLIGHT_ENABLE
@@ -408,6 +415,7 @@ layer_state_t layer_state_set_rgb(layer_state_t state) {
 #ifdef RGB_MATRIX_ENABLE
 #    include "lib/lib8tion/lib8tion.h"
 extern led_config_t g_led_config;
+
 void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) {
     HSV hsv = {hue, sat, val};
     if (hsv.v > rgb_matrix_config.hsv.v) {
diff --git a/users/drashna/rgb_stuff.h b/users/drashna/rgb_stuff.h
index 7e34c93c11..50b73c1c3c 100644
--- a/users/drashna/rgb_stuff.h
+++ b/users/drashna/rgb_stuff.h
@@ -20,13 +20,13 @@ layer_state_t layer_state_set_rgb(layer_state_t state);
 layer_state_t default_layer_state_set_rgb(layer_state_t state);
 
 #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_TWINKLE)
-void          scan_rgblight_fadeout(void);
+void scan_rgblight_fadeout(void);
 #endif
 #if defined(RGBLIGHT_ENABLE)
-void          rgblight_sethsv_default_helper(uint8_t index);
+void rgblight_sethsv_default_helper(uint8_t index);
 #endif
 
 #ifdef RGB_MATRIX_ENABLE
-void          rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
 void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
 #endif
diff --git a/users/drashna/rgblight_breathe_table.h b/users/drashna/rgblight_breathe_table.h
index 05d347fcd3..4c6ae38faa 100644
--- a/users/drashna/rgblight_breathe_table.h
+++ b/users/drashna/rgblight_breathe_table.h
@@ -1,9 +1,10 @@
 #ifndef RGBLIGHT_EFFECT_BREATHE_TABLE
 #define RGBLIGHT_EFFECT_BREATHE_TABLE
 
+// clang-format off
 const uint8_t rgblight_effect_breathe_table[] PROGMEM = {
-  /* #define RGBLIGHT_EFFECT_BREATHE_CENTER   0.00 */
-  /* #define RGBLIGHT_EFFECT_BREATHE_MAX      255 */
+/* #define RGBLIGHT_EFFECT_BREATHE_CENTER   0.00 */
+/* #define RGBLIGHT_EFFECT_BREATHE_MAX      255 */
 
  #if RGBLIGHT_BREATHE_TABLE_SIZE == 256
   0x44,  0x45,  0x47,  0x48,  0x4a,  0x4b,  0x4c,  0x4e,
@@ -110,7 +111,8 @@ const uint8_t rgblight_effect_breathe_table[] PROGMEM = {
   0x4e,  0x48
  #endif /* 64 bytes table */
 };
+// clang-format on
 
-static const int table_scale = 256/sizeof(rgblight_effect_breathe_table);
+static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table);
 
 #endif /* RGBLIGHT_EFFECT_BREATHE_TABLE */
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index 1b5a863850..882857fc86 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -1,16 +1,16 @@
 SRC += drashna.c \
        process_records.c
 
-LINK_TIME_OPTIMIZATION_ENABLE = yes
-SPACE_CADET_ENABLE            = no
+LTO_ENABLE            = yes
+SPACE_CADET_ENABLE    = no
 
 ifneq ($(strip $(NO_SECRETS)), yes)
-	ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
-    	SRC += secrets.c
-	endif
-	ifeq ($(strip $(NO_SECRETS)), lite)
-		OPT_DEFS += -DNO_SECRETS
-	endif
+    ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
+        SRC += secrets.c
+    endif
+    ifeq ($(strip $(NO_SECRETS)), lite)
+        OPT_DEFS += -DNO_SECRETS
+    endif
 endif
 
 ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
@@ -52,3 +52,10 @@ endif
 ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
     OPT_DEFS += -DMAKE_BOOTLOADER
 endif
+
+# At least until build.mk or the like drops, this is here to prevent
+# VUSB boards from enabling NKRO, as they do not support it. Ideally
+# this should be handled per keyboard, but until that happens ...
+ifeq ($(strip $(PROTOCOL)), VUSB)
+    NKRO_ENABLE       = no
+endif
\ No newline at end of file
diff --git a/users/drashna/template.c b/users/drashna/template.c
index d90e6bdecf..833447daac 100644
--- a/users/drashna/template.c
+++ b/users/drashna/template.c
@@ -1,124 +1,82 @@
 #include "template.h"
 
-
 // Add reconfigurable functions here, for keymap customization
 // This allows for a global, userspace functions, and continued
 // customization of the keymap.  Use _keymap instead of _user
 // functions in the keymaps
-__attribute__ ((weak))
-void matrix_init_keymap(void) {}
+__attribute__((weak)) void matrix_init_keymap(void) {}
 
 // Call user matrix init, then call the keymap's init function
-void matrix_init_user(void) {
-  matrix_init_keymap();
-}
+void matrix_init_user(void) { matrix_init_keymap(); }
 
-
-__attribute__ ((weak))
-void matrix_scan_keymap(void) {}
+__attribute__((weak)) void matrix_scan_keymap(void) {}
 
 // No global matrix scan code, so just run keymap's matix
 // scan function
-void matrix_scan_user(void) {
-  matrix_scan_keymap();
-}
+void matrix_scan_user(void) { matrix_scan_keymap(); }
 
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
+__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
 
 // Defines actions tor my global custom keycodes. Defined in drashna.h file
 // Then runs the _keymap's recod handier if not processed here,
 // And use "NEWPLACEHOLDER" for new safe range
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
-  switch (keycode) {
-  case KC_MAKE:
-    if (!record->event.pressed) {
-      SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
-#if  (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
-        ":dfu"
+    switch (keycode) {
+        case KC_MAKE:
+            if (!record->event.pressed) {
+                SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
+#if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
+                            ":dfu"
 #elif defined(BOOTLOADER_HALFKAY)
-        ":teensy"
+                            ":teensy"
 #elif defined(BOOTLOADER_CATERINA)
-        ":avrdude"
+                            ":avrdude"
 #endif
-        SS_TAP(X_ENTER));
+                            SS_TAP(X_ENTER));
+            }
+            return false;
+            break;
+
+        case VRSN:
+            if (record->event.pressed) {
+                SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+            }
+            return false;
+            break;
     }
-    return false;
-    break;
-
-  case VRSN:
-    if (record->event.pressed) {
-      SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-    }
-    return false;
-    break;
-  }
-  return process_record_keymap(keycode, record);
-}
-
-
-__attribute__ ((weak))
-layer_state_t layer_state_set_keymap (layer_state_t state) {
-  return state;
-}
-
-layer_state_t layer_state_set_user (layer_state_t state) {
-  return layer_state_set_keymap (state);
+    return process_record_keymap(keycode, record);
 }
 
+__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
 
+layer_state_t layer_state_set_user(layer_state_t state) { return layer_state_set_keymap(state); }
 
-__attribute__ ((weak))
-void led_set_keymap(uint8_t usb_led) {}
-
-void led_set_user(uint8_t usb_led) {
-   led_set_keymap(usb_led);
-}
-
+__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
 
+void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
 
-__attribute__ ((weak))
-void suspend_power_down_keymap(void) {}
-
-void suspend_power_down_user(void)
-{
-    suspend_power_down_keymap();
-}
-
+__attribute__((weak)) void suspend_power_down_keymap(void) {}
 
+void suspend_power_down_user(void) { suspend_power_down_keymap(); }
 
-__attribute__ ((weak))
-void suspend_wakeup_init_keymap(void) {}
+__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
 
-void suspend_wakeup_init_user(void)
-{
-  suspend_wakeup_init_keymap();
-  #ifdef KEYBOARD_ergodox_ez
-  wait_ms(10);
-  #endif
+void suspend_wakeup_init_user(void) {
+    suspend_wakeup_init_keymap();
+#ifdef KEYBOARD_ergodox_ez
+    wait_ms(10);
+#endif
 }
 
+__attribute__((weak)) void startup_keymap(void) {}
 
-
-__attribute__ ((weak))
-void startup_keymap(void) {}
-
-void startup_user (void) {
-  #ifdef RGBLIGHT_ENABLE
+void startup_user(void) {
+#ifdef RGBLIGHT_ENABLE
     matrix_init_rgb();
-  #endif //RGBLIGHT_ENABLE
-  startup_keymap();
+#endif  // RGBLIGHT_ENABLE
+    startup_keymap();
 }
 
+__attribute__((weak)) void shutdown_keymap(void) {}
 
-
-__attribute__ ((weak))
-void shutdown_keymap(void) {}
-
-void shutdown_user (void) {
-  shutdown_keymap();
-}
+void shutdown_user(void) { shutdown_keymap(); }
diff --git a/users/drashna/template.h b/users/drashna/template.h
index dd1c487604..178f96e220 100644
--- a/users/drashna/template.h
+++ b/users/drashna/template.h
@@ -1,7 +1,6 @@
-#ifndef USERSPACE
-#define USERSPACE
+#pragma once
 
-#include "quantum.h"
+#include QMK_KEYBOARD_H
 #include "version.h"
 #include "eeprom.h"
 
@@ -9,10 +8,8 @@
 #define BASE 0
 
 enum custom_keycodes {
-  VRSN = SAFE_RANGE, // can always be here
-  KC_MAKE,
-  KC_RESET,
-  NEWPLACEHOLDER  //use "NEWPLACEHOLDER for keymap specific codes
+    VRSN = SAFE_RANGE,  // can always be here
+    KC_MAKE,
+    KC_RESET,
+    NEWPLACEHOLDER  // use "NEWPLACEHOLDER for keymap specific codes
 };
-
-#endif