summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2021-08-29 08:20:25 +1000
committerNick Brassel <nick@tzarc.org>2021-08-29 08:20:25 +1000
commitf061ca497464fe85284906fb163a33eaee7a91ef (patch)
tree33ef1bfb529aed382e8526c607c4e18717f92571 /users
parentff65185dec6f97be1eb49f17cea526a0d0bbf3d6 (diff)
parent4bad375d7c09d949a9dcdd4feba147c9c7a67ec6 (diff)
Breaking changes develop merge to master, 2021Q3 edition. (#14196)
Diffstat (limited to 'users')
-rw-r--r--users/333fred/333fred.c2
-rw-r--r--users/bbaserdem/bbaserdem.c10
-rw-r--r--users/bbaserdem/rules.mk4
-rw-r--r--users/bcat/config.h2
-rw-r--r--users/bcat/rules.mk3
-rw-r--r--users/billypython/billypython.c2
-rw-r--r--users/curry/config.h2
-rw-r--r--users/curry/rules.mk2
-rw-r--r--users/cwebster2/rules.mk2
-rw-r--r--users/d4mation/rules.mk2
-rw-r--r--users/danielo515/process_records.h4
-rw-r--r--users/doogle999/rules.mk2
-rw-r--r--users/draevin/rules.mk2
-rw-r--r--users/drashna/config.h203
-rw-r--r--users/drashna/drashna.c107
-rw-r--r--users/drashna/drashna.h56
-rw-r--r--users/drashna/drashna_font.h164
-rw-r--r--users/drashna/drashna_transport.c603
-rw-r--r--users/drashna/oled_stuff.c174
-rw-r--r--users/drashna/oled_stuff.h180
-rw-r--r--users/drashna/pimoroni_trackball.c151
-rw-r--r--users/drashna/post_config.h40
-rw-r--r--users/drashna/process_records.c35
-rw-r--r--users/drashna/process_records.h102
-rw-r--r--users/drashna/rgb_matrix_stuff.c37
-rw-r--r--users/drashna/rgb_stuff.c169
-rw-r--r--users/drashna/rgb_stuff.h13
-rw-r--r--users/drashna/rules.mk40
-rw-r--r--users/drashna/tap_dances.h4
-rw-r--r--users/drashna/transport_sync.c192
-rw-r--r--users/drashna/transport_sync.h (renamed from users/drashna/pimoroni_trackball.h)19
-rw-r--r--users/drashna/wrappers.h194
-rw-r--r--users/dshields/rules.mk1
-rw-r--r--users/edvorakjp/edvorakjp.c2
-rw-r--r--users/edvorakjp/edvorakjp.h2
-rw-r--r--users/ericgebhart/base_layers.h2
-rw-r--r--users/ericgebhart/core_keys.h2
-rw-r--r--users/ericgebhart/core_keysets.h36
-rw-r--r--users/ericgebhart/ericgebhart.c22
-rwxr-xr-xusers/ericgebhart/rules.mk3
-rw-r--r--users/gordon/rules.mk1
-rw-r--r--users/issmirnov/rules.mk2
-rw-r--r--users/jdelkins/rules.mk2
-rw-r--r--users/jonavin/config.h2
-rw-r--r--users/konstantin/konstantin.c2
-rw-r--r--users/kuchosauronad0/kuchosauronad0.c4
-rw-r--r--users/losinggeneration/rules.mk1
-rw-r--r--users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk2
-rw-r--r--users/mtdjr/mtdjr.c2
-rw-r--r--users/ninjonas/oled.c20
-rw-r--r--users/ninjonas/process_records.c4
-rw-r--r--users/ninjonas/process_records.h2
-rw-r--r--users/ninjonas/rules.mk2
-rw-r--r--users/pvinis/pvinis.c2
-rw-r--r--users/riblee/riblee.c4
-rw-r--r--users/ridingqwerty/rules.mk2
-rw-r--r--users/romus/romus.c26
-rw-r--r--users/romus/rules.mk4
-rw-r--r--users/sethBarberee/sethBarberee.c2
-rw-r--r--users/sigul/sigul.c20
-rw-r--r--users/sigul/sigul.h8
-rw-r--r--users/snowe/oled_setup.c4
-rw-r--r--users/snowe/oled_setup.h4
-rw-r--r--users/snowe/readme_ocean_dream.md5
-rw-r--r--users/snowe/rules.mk2
-rw-r--r--users/snowe/snowe.h2
-rw-r--r--users/spacebarracecar/spacebarracecar.c12
-rw-r--r--users/spidey3/config.h4
-rw-r--r--users/spidey3/rules.mk2
-rw-r--r--users/spotpuff/rules.mk2
-rw-r--r--users/stanrc85/layer_rgb.c2
-rw-r--r--users/talljoe/rules.mk2
-rw-r--r--users/talljoe/talljoe.h1
-rw-r--r--users/tominabox1/config.h2
-rw-r--r--users/tominabox1/rules.mk5
-rw-r--r--users/tominabox1/tominabox1.c8
-rw-r--r--users/turbomech/backupturbomech.c2
-rw-r--r--users/xulkal/process_records.c2
-rw-r--r--users/xulkal/rules.mk2
-rw-r--r--users/yanfali/rules.mk2
80 files changed, 1099 insertions, 1672 deletions
diff --git a/users/333fred/333fred.c b/users/333fred/333fred.c
index 621b9e6649..99f4e01685 100644
--- a/users/333fred/333fred.c
+++ b/users/333fred/333fred.c
@@ -117,7 +117,7 @@ void tap_dance_process_keycode(uint16_t keycode) {
 __attribute__ ((weak))
 void layer_state_set_rgb(uint32_t state) {}
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
   layer_state_set_rgb(state);
   return state;
 }
diff --git a/users/bbaserdem/bbaserdem.c b/users/bbaserdem/bbaserdem.c
index ac7b1b62e6..cdacda12ee 100644
--- a/users/bbaserdem/bbaserdem.c
+++ b/users/bbaserdem/bbaserdem.c
@@ -87,7 +87,7 @@ void rgblight_saveBase(void) {
     base_sta = false;   // If saving, that means base layer is being left
 }
 
-// Load the base state back 
+// Load the base state back
 void rgblight_loadBase(void) {
     // Don't do anything if not enabled
     if ( !base_sta ) {
@@ -248,7 +248,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             }
             return false;
             break;
-#endif 
+#endif
 
         // If these keys are pressed, load base layer config, and mark saving
 #ifdef RGBLIGHT_ENABLE
@@ -261,7 +261,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         case RGB_HUI:
         case RGB_HUD:
             if ( !base_sta ) {
-                rgblight_loadBase(); 
+                rgblight_loadBase();
             }
             return true;
             break;
@@ -301,7 +301,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             }
             return false;
             break;
-            
+
         // Layer switches with sound
         case K_GAMES:
             if (record->event.pressed) {
@@ -622,7 +622,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 |*-----LAYER CHANGE-----*|
 \*----------------------*/
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
 
     state = layer_state_set_keymap (state);
 #ifdef RGBLIGHT_ENABLE
diff --git a/users/bbaserdem/rules.mk b/users/bbaserdem/rules.mk
index 94f01cdffc..9c7e78e2f8 100644
--- a/users/bbaserdem/rules.mk
+++ b/users/bbaserdem/rules.mk
@@ -10,14 +10,12 @@ ifndef BLUETOOTH_ENABLE
 	BLUETOOTH_ENABLE = no 	# No bluetooth
 endif
 COMMAND_ENABLE = no			# Some bootmagic thing i dont use
-BOOTMAGIC_ENABLE = no 		# Access to EEPROM settings, not needed
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 CONSOLE_ENABLE = no			# Allows console output with a command
 SLEEP_LED_ENABLE = no  		# Breathes LED's when computer is asleep. Untested.
 NKRO_ENABLE = no 			# Default is 6KRO which is plenty
 MIDI_ENABLE = no 			# Untested feature
 KEY_LOCK_ENABLE = no 		# Allows locking any key. Not used
-API_SYSEX_ENABLE = no 		# Allows OS to send signals.
-KEY_LOCK_ENABLE = no 		# Allows locking any key. Not used
 
 # Disabling this makes it compile, i dont know why
 # VARIABLE_TRACE = no 		# Allows debugging variables
diff --git a/users/bcat/config.h b/users/bcat/config.h
index 16188950e2..5bb93f3833 100644
--- a/users/bcat/config.h
+++ b/users/bcat/config.h
@@ -33,7 +33,7 @@
 
 #if defined(RGB_MATRIX_ENABLE)
 /* Turn off per-key RGB when the host goes to sleep. */
-#    define RGB_DISABLE_WHEN_USB_SUSPENDED true
+#    define RGB_DISABLE_WHEN_USB_SUSPENDED
 
 /* Keep per-key RGB increments consistent across keyboards. */
 #    undef RGB_MATRIX_HUE_STEP
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
index 3442a78ac2..6d748875a4 100644
--- a/users/bcat/rules.mk
+++ b/users/bcat/rules.mk
@@ -1,7 +1,7 @@
 SRC += bcat.c
 
 # Enable Bootmagic Lite to consistently reset to bootloader and clear EEPROM.
-BOOTMAGIC_ENABLE = lite
+BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
 
 # Enable media keys on all keyboards.
 EXTRAKEY_ENABLE = yes
@@ -27,7 +27,6 @@ MIDI_ENABLE = no
 SLEEP_LED_ENABLE = no
 
 # Disable other unused options on all keyboards.
-API_SYSEX_ENABLE = no
 AUTO_SHIFT_ENABLE = no
 COMBO_ENABLE = no
 KEYBOARD_LOCK_ENABLE = no
diff --git a/users/billypython/billypython.c b/users/billypython/billypython.c
index 7bdfe33a43..180b478d7a 100644
--- a/users/billypython/billypython.c
+++ b/users/billypython/billypython.c
@@ -27,6 +27,6 @@ uint32_t layer_state_set_keymap(uint32_t state) {
   return state;
 }
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
   return layer_state_set_keymap(state);
 }
diff --git a/users/curry/config.h b/users/curry/config.h
index b982dab038..e3c0a103ef 100644
--- a/users/curry/config.h
+++ b/users/curry/config.h
@@ -17,7 +17,7 @@
 #if defined(RGB_MATRIX_ENABLE)
 #    define RGB_MATRIX_KEYPRESSES
 #    define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#    define RGB_DISABLE_WHEN_USB_SUSPENDED true
+#    define RGB_DISABLE_WHEN_USB_SUSPENDED
 
 #    define DISABLE_RGB_MATRIX_ALPHAS_MODS
 #    define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
diff --git a/users/curry/rules.mk b/users/curry/rules.mk
index 87d3b38ead..724f97f5eb 100644
--- a/users/curry/rules.mk
+++ b/users/curry/rules.mk
@@ -24,7 +24,7 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
     SRC += tap_dances.c
 endif
 
-ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ifeq ($(strip $(OLED_ENABLE)), yes)
     SRC += oled.c
 endif
 
diff --git a/users/cwebster2/rules.mk b/users/cwebster2/rules.mk
index f39d4ebc96..3aa4d68f35 100644
--- a/users/cwebster2/rules.mk
+++ b/users/cwebster2/rules.mk
@@ -2,7 +2,7 @@ AUTO_SHIFT_ENABLE = no  # Enable autoshift
 MOUSEKEY_ENABLE = yes
 EXTRAKEY_ENABLE = yes
 CONSOLE_ENABLE = no
-BOOTMAGIC_ENABLE = no
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 GRAVE_ESC_ENABLE = no
 CONSOLE_ENABLE = no
 SPACE_CADET_ENABLE    = no
diff --git a/users/d4mation/rules.mk b/users/d4mation/rules.mk
index 3d65a2242b..f677721b42 100644
--- a/users/d4mation/rules.mk
+++ b/users/d4mation/rules.mk
@@ -2,7 +2,7 @@ SRC += d4mation.c \
   tap-hold.c \
   macros.c
 
-BOOTMAGIC_ENABLE = no
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 LTO_ENABLE = yes
 MOUSEKEY_ENABLE = no
 
diff --git a/users/danielo515/process_records.h b/users/danielo515/process_records.h
index 4906076865..caa85e6292 100644
--- a/users/danielo515/process_records.h
+++ b/users/danielo515/process_records.h
@@ -78,8 +78,8 @@ enum layers {
 #define KC_E_GT S(KC_NUBS)
 #define KC_E_TILD ES_TILD
 #define KC_E_MINS ES_MINS
-#define KC_E_OVRR ES_OVRR
-#define KC_E_APOS ES_APOS
+#define KC_E_OVRR ES_MORD
+#define KC_E_APOS ES_QUOT
 #define KC_E_IEXL ES_IEXL
 //==========  Short hand for complex key combinations
 #define WIN_LEFT_HALF LALT(LGUI(KC_LEFT))
diff --git a/users/doogle999/rules.mk b/users/doogle999/rules.mk
index 12698a27e5..aab01b2433 100644
--- a/users/doogle999/rules.mk
+++ b/users/doogle999/rules.mk
@@ -2,7 +2,7 @@ SRC += doogle999.c
 
 CFLAGS += -fstrict-aliasing -ftree-vrp
 
-BOOTMAGIC_ENABLE = no	# Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 MOUSEKEY_ENABLE = no	# Mouse keys(+4700)
 EXTRAKEY_ENABLE = yes	# Audio control and System control(+450)
 CONSOLE_ENABLE = no	# Console for debug(+400)
diff --git a/users/draevin/rules.mk b/users/draevin/rules.mk
index 7d67404930..1fc377e231 100644
--- a/users/draevin/rules.mk
+++ b/users/draevin/rules.mk
@@ -7,6 +7,6 @@ TAP_DANCE_ENABLE = yes
 
 AUDIO_ENABLE = no
 BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = no
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 CONSOLE_ENABLE = no
 SLEEP_LED_ENABLE = no
\ No newline at end of file
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 5f7c32ff35..75e1c11c6d 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -17,57 +17,71 @@
 #pragma once
 
 // Use custom magic number so that when switching branches, EEPROM always gets reset
-#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339
+#define EECONFIG_MAGIC_NUMBER   (uint16_t)0x1339
 
 /* Set Polling rate to 1000Hz */
 #define USB_POLLING_INTERVAL_MS 1
 
 #if defined(SPLIT_KEYBOARD)
+// #    define SPLIT_TRANSPORT_MIRROR
+#    define SPLIT_LAYER_STATE_ENABLE
+#    define SPLIT_LED_STATE_ENABLE
 #    define SPLIT_MODS_ENABLE
-#    define SPLIT_TRANSPORT_MIRROR
-#    define SERIAL_USE_MULTI_TRANSACTION
-// #    define SPLIT_NUM_TRANSACTIONS_KB 2
+#    ifdef WPM_ENABLE
+#        define SPLIT_WPM_ENABLE
+#    endif
+#    ifdef OLED_DRIVER_ENABLE
+#        define SPLIT_OLED_ENABLE
+#    endif
+#    if defined(__AVR__) && !defined(SELECT_SOFT_SERIAL_SPEED)
+#        define SELECT_SOFT_SERIAL_SPEED 1
+#    endif
+#    ifdef CUSTOM_SPLIT_TRANSPORT_SYNC
+#        define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_STATE_SYNC, RPC_ID_USER_KEYMAP_SYNC, RPC_ID_USER_CONFIG_SYNC
+#    endif
 #endif
 
 #ifdef AUDIO_ENABLE
-
 #    define AUDIO_CLICKY
-#    define STARTUP_SONG SONG(RICK_ROLL)
-#    define GOODBYE_SONG SONG(SONIC_RING)
-#    define DEFAULT_LAYER_SONGS \
-        { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) }
-
 #    define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
 
-#    define UNICODE_SONG_MAC SONG(RICK_ROLL)
-#    define UNICODE_SONG_LNX SONG(RICK_ROLL)
-#    define UNICODE_SONG_WIN SONG(RICK_ROLL)
-#    define UNICODE_SONG_BSD SONG(RICK_ROLL)
-#    define UNICODE_SONG_WINC SONG(RICK_ROLL)
+#    ifdef USER_SONG_LIST
+#        define STARTUP_SONG SONG(RICK_ROLL)
+#        define GOODBYE_SONG SONG(SONIC_RING)
+#        define DEFAULT_LAYER_SONGS \
+            { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) }
+#        define UNICODE_SONG_MAC  SONG(MARIO_THEME)
+#        define UNICODE_SONG_LNX  SONG(MARIO_POWERUP)
+#        define UNICODE_SONG_WIN  SONG(MARIO_ONEUP)
+#        define UNICODE_SONG_BSD  SONG(RICK_ROLL)
+#        define UNICODE_SONG_WINC SONG(RICK_ROLL)
+#    else
+#        define STARTUP_SONG SONG(STARTUP_SOUND)
+#        define GOODBYE_SONG SONG(GOODBYE_SOUND)
+#        define DEFAULT_LAYER_SONGS \
+            { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) }
+#        define UNICODE_SONG_MAC  SONG(QWERTY_SOUND)
+#        define UNICODE_SONG_LNX  SONG(COLEMAK_SOUND)
+#        define UNICODE_SONG_WIN  SONG(DVORAK_SOUND)
+#        define UNICODE_SONG_BSD  SONG(WORKMAN_SOUND)
+#        define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND)
+#    endif
 #endif  // !AUDIO_ENABLE
 
+#define UNICODE_SELECTED_MODES UC_WIN, UC_MAC
+
 #ifdef RGBLIGHT_ENABLE
 #    define RGBLIGHT_SLEEP
-#    if defined(__AVR__) && !defined(__AVR_AT90USB1286__)
-#        undef RGBLIGHT_ANIMATIONS
-#        define RGBLIGHT_EFFECT_BREATHING
-#        define RGBLIGHT_EFFECT_SNAKE
-#        define RGBLIGHT_EFFECT_KNIGHT
-#    else
-#        define RGBLIGHT_ANIMATIONS
-#    endif
-#    define RGBLIGHT_EFFECT_TWINKLE_LIFE  250
-#    define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1/24
+#    define RGBLIGHT_EFFECT_TWINKLE_LIFE        250
+#    define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 24
 #endif  // RGBLIGHT_ENABLE
 
 #ifdef RGB_MATRIX_ENABLE
 #    define RGB_MATRIX_KEYPRESSES  // reacts to keypresses (will slow down matrix scan by a lot)
 // #   define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
 #    define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #   define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-#    define RGB_DISABLE_WHEN_USB_SUSPENDED true  // turn off effects when suspended
-// #   define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-// #   define EECONFIG_RGB_MATRIX (uint32_t *)16
+// #    define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+// #    define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
 
 #    if defined(__AVR__) && !defined(__AVR_AT90USB1286__) && !defined(KEYBOARD_launchpad)
 #        define DISABLE_RGB_MATRIX_ALPHAS_MODS
@@ -83,8 +97,10 @@
 #        define DISABLE_RGB_MATRIX_CYCLE_ALL
 #        define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
 #        define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// #        define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
+#        if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_moonlander)
+#            define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
 // #       define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#        endif
 #        define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
 #        define DISABLE_RGB_MATRIX_DUAL_BEACON
 #        define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
@@ -93,6 +109,12 @@
 #        define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
 #        define DISABLE_RGB_MATRIX_RAINDROPS
 #        define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#        define DISABLE_RGB_MATRIX_HUE_BREATHING
+#        define DISABLE_RGB_MATRIX_HUE_PENDULUM
+#        define DISABLE_RGB_MATRIX_HUE_WAVE
+#        define DISABLE_RGB_MATRIX_PIXEL_RAIN
+#        define DISABLE_RGB_MATRIX_PIXEL_FLOW
+#        define DISABLE_RGB_MATRIX_PIXEL_FRACTAL
 // #       define DISABLE_RGB_MATRIX_TYPING_HEATMAP
 #        define DISABLE_RGB_MATRIX_DIGITAL_RAIN
 #        define DISABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -108,9 +130,17 @@
 #        define DISABLE_RGB_MATRIX_SOLID_SPLASH
 #        define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
 #    endif  // AVR
-#endif      // RGB_MATRIX_ENABLE
+#    ifndef RGB_MATRIX_REST_MODE
+#        if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_moonlander)
+#            define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#        else
+#            define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
+#        endif
+#    endif
+#    define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_REST_MODE
+#endif  // RGB_MATRIX_ENABLE
 
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 #    ifdef SPLIT_KEYBOARD
 #        define OLED_UPDATE_INTERVAL 60
 #    else
@@ -120,7 +150,7 @@
 #    ifdef OLED_FONT_H
 #        undef OLED_FONT_H
 #    endif
-#    define OLED_FONT_H "drashna_font.h"
+#    define OLED_FONT_H   "drashna_font.h"
 #    define OLED_FONT_END 255
 // #    define OLED_FONT_5X5
 // #    define OLED_FONT_AZTECH
@@ -143,8 +173,8 @@
 
 #ifdef QMK_KEYS_PER_SCAN
 #    undef QMK_KEYS_PER_SCAN
-#    define QMK_KEYS_PER_SCAN 2
-#endif  // !QMK_KEYS_PER_SCAN
+#endif
+#define QMK_KEYS_PER_SCAN 4
 
 // this makes it possible to do rolling combos (zx) with keys that
 // convert to other keys on hold (z becomes ctrl when you hold it,
@@ -152,14 +182,12 @@
 // actually sends Ctrl-x. That's bad.)
 #define IGNORE_MOD_TAP_INTERRUPT
 #undef PERMISSIVE_HOLD
-//#define TAPPING_FORCE_HOLD
-//#define RETRO_TAPPING
-#ifndef KEYBOARD_kyria_rev1
+//#define TAPPING_FORCE_HOLD_PER_KEY
+//#define RETRO_TAPPING_PER_KEY
+#if !defined(KEYBOARD_kyria) && !defined(KEYBOARD_splitkb_kyria)
 #    define TAPPING_TERM_PER_KEY
 #endif
 
-#define FORCE_NKRO
-
 #ifndef TAPPING_TOGGLE
 #    define TAPPING_TOGGLE 1
 #endif
@@ -185,14 +213,21 @@
 #    undef LOCKING_RESYNC_ENABLE
 #endif
 
+#if !defined(LAYER_STATE_16BIT) && !defined(LAYER_STATE_8BIT) && !defined(LAYER_STATE_32BIT)
+#    define LAYER_STATE_16BIT
+#endif
+#ifndef DYNAMIC_KEYMAP_LAYER_COUNT
+#    define DYNAMIC_KEYMAP_LAYER_COUNT 11
+#endif
+
 #ifdef CONVERT_TO_PROTON_C
 // pins that are available but not present on Pro Micro
-#    define A3 PAL_LINE(GPIOA, 3)
-#    define A4 PAL_LINE(GPIOA, 4)
-#    define A5 PAL_LINE(GPIOA, 5)
-#    define A6 PAL_LINE(GPIOA, 6)
-#    define A7 PAL_LINE(GPIOA, 7)
-#    define A8 PAL_LINE(GPIOA, 8)
+#    define A3  PAL_LINE(GPIOA, 3)
+#    define A4  PAL_LINE(GPIOA, 4)
+#    define A5  PAL_LINE(GPIOA, 5)
+#    define A6  PAL_LINE(GPIOA, 6)
+#    define A7  PAL_LINE(GPIOA, 7)
+#    define A8  PAL_LINE(GPIOA, 8)
 #    define A13 PAL_LINE(GPIOA, 13)
 #    define A14 PAL_LINE(GPIOA, 14)
 #    define A15 PAL_LINE(GPIOA, 15)
@@ -203,3 +238,79 @@
 #    define C14 PAL_LINE(GPIOC, 14)
 #    define C15 PAL_LINE(GPIOC, 15)
 #endif
+
+#ifdef MOUSEKEY_ENABLE
+// mouse movement config
+#    ifdef MK_3_SPEED
+#        undef MK_3_SPEED
+#    endif
+#    define MK_KINETIC_SPEED
+#    ifdef MK_KINETIC_SPEED
+#        ifndef MOUSEKEY_DELAY
+#            define MOUSEKEY_DELAY 8
+#        endif
+#        ifndef MOUSEKEY_INTERVAL
+#            define MOUSEKEY_INTERVAL 20
+#        endif
+#        ifdef MOUSEKEY_MOVE_DELTA
+#            define MOUSEKEY_MOVE_DELTA 25
+#        endif
+#    else
+#        ifndef MOUSEKEY_DELAY
+#            define MOUSEKEY_DELAY 300
+#        endif
+#        ifndef MOUSEKEY_INTERVAL
+#            define MOUSEKEY_INTERVAL 50
+#        endif
+#        ifndef MOUSEKEY_MOVE_DELTA
+#            define MOUSEKEY_MOVE_DELTA 5
+#        endif
+#    endif
+#    ifndef MOUSEKEY_MAX_SPEED
+#        define MOUSEKEY_MAX_SPEED 7
+#    endif
+#    ifndef MOUSEKEY_TIME_TO_MAX
+#        define MOUSEKEY_TIME_TO_MAX 60
+#    endif
+#    ifndef MOUSEKEY_INITIAL_SPEED
+#        define MOUSEKEY_INITIAL_SPEED 100
+#    endif
+#    ifndef MOUSEKEY_BASE_SPEED
+#        define MOUSEKEY_BASE_SPEED 1000
+#    endif
+#    ifndef MOUSEKEY_DECELERATED_SPEED
+#        define MOUSEKEY_DECELERATED_SPEED 400
+#    endif
+#    ifndef MOUSEKEY_ACCELERATED_SPEED
+#        define MOUSEKEY_ACCELERATED_SPEED 3000
+#    endif
+// mouse scroll config
+#    ifndef MOUSEKEY_WHEEL_DELAY
+#        define MOUSEKEY_WHEEL_DELAY 15
+#    endif
+#    ifndef MOUSEKEY_WHEEL_DELTA
+#        define MOUSEKEY_WHEEL_DELTA 1
+#    endif
+#    ifndef MOUSEKEY_WHEEL_INTERVAL
+#        define MOUSEKEY_WHEEL_INTERVAL 50
+#    endif
+#    ifndef MOUSEKEY_WHEEL_MAX_SPEED
+#        define MOUSEKEY_WHEEL_MAX_SPEED 8
+#    endif
+#    ifndef MOUSEKEY_WHEEL_TIME_TO_MAX
+#        define MOUSEKEY_WHEEL_TIME_TO_MAX 80
+#    endif
+// mouse scroll kinetic config
+#    ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
+#        define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 8
+#    endif
+#    ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
+#        define MOUSEKEY_WHEEL_BASE_MOVEMENTS 48
+#    endif
+#    ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
+#        define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
+#    endif
+#    ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
+#        define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
+#    endif
+#endif  // MOUSEKEY_ENABLE
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index a493737262..3423e379a1 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -50,8 +50,7 @@ bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this
 }
 
 __attribute__((weak)) void keyboard_pre_init_keymap(void) {}
-
-void keyboard_pre_init_user(void) {
+void                       keyboard_pre_init_user(void) {
     userspace_config.raw = eeconfig_read_user();
     keyboard_pre_init_keymap();
 }
@@ -59,12 +58,11 @@ void keyboard_pre_init_user(void) {
 // 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_secret(void) {}
-
 // Call user matrix init, set default RGB colors and then
 // call the keymap's init function
-void matrix_init_user(void) {
+__attribute__((weak)) void matrix_init_keymap(void) {}
+__attribute__((weak)) void matrix_init_secret(void) {}
+void                       matrix_init_user(void) {
 #if defined(BOOTLOADER_CATERINA) && defined(__AVR__)
     DDRD &= ~(1 << 5);
     PORTD &= ~(1 << 5);
@@ -75,27 +73,33 @@ void matrix_init_user(void) {
 
     matrix_init_secret();
     matrix_init_keymap();
+#if defined(AUDIO_ENABLE) && defined(SPLIT_KEYBOARD)
+    if (!is_keyboard_master()) {
+        stop_all_notes();
+    }
+#endif
 }
 
 __attribute__((weak)) void keyboard_post_init_keymap(void) {}
-
-void keyboard_post_init_user(void) {
+void                       keyboard_post_init_user(void) {
 #if defined(RGBLIGHT_ENABLE)
     keyboard_post_init_rgb_light();
 #endif
 #if defined(RGB_MATRIX_ENABLE)
     keyboard_post_init_rgb_matrix();
 #endif
+#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER)
+    keyboard_post_init_transport_sync();
+#endif
     keyboard_post_init_keymap();
 }
 
-__attribute__((weak)) void shutdown_keymap(void) {}
-
 #ifdef RGB_MATRIX_ENABLE
 void rgb_matrix_update_pwm_buffers(void);
 #endif
 
-void shutdown_user(void) {
+__attribute__((weak)) void shutdown_keymap(void) {}
+void                       shutdown_user(void) {
 #ifdef RGBLIGHT_ENABLE
     rgblight_enable_noeeprom();
     rgblight_mode_noeeprom(1);
@@ -112,23 +116,28 @@ void shutdown_user(void) {
 __attribute__((weak)) void suspend_power_down_keymap(void) {}
 
 void suspend_power_down_user(void) {
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
     oled_off();
 #endif
     suspend_power_down_keymap();
 }
 
 __attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
-
-void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); }
-
-__attribute__((weak)) void matrix_scan_keymap(void) {}
-
-__attribute__((weak)) void matrix_scan_secret(void) {}
+void                       suspend_wakeup_init_user(void) {
+    if (layer_state_is(_GAMEPAD)) {
+        layer_off(_GAMEPAD);
+    }
+    if (layer_state_is(_DIABLO)) {
+        layer_off(_DIABLO);
+    }
+    suspend_wakeup_init_keymap();
+}
 
 // No global matrix scan code, so just run keymap's matrix
 // scan function
-void matrix_scan_user(void) {
+__attribute__((weak)) void matrix_scan_keymap(void) {}
+__attribute__((weak)) void matrix_scan_secret(void) {}
+void                       matrix_scan_user(void) {
     static bool has_ran_yet;
     if (!has_ran_yet) {
         has_ran_yet = true;
@@ -155,16 +164,14 @@ void matrix_scan_user(void) {
 float doom_song[][2] = SONG(E1M1_DOOM);
 #endif
 
-__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
-layer_state_t layer_state_set_user(layer_state_t state) {
+__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) {
     if (!is_keyboard_master()) {
         return state;
     }
 
-    state = layer_state_set_keymap(state);
     state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
 #if defined(RGBLIGHT_ENABLE)
     state = layer_state_set_rgb_light(state);
@@ -180,13 +187,13 @@ layer_state_t layer_state_set_user(layer_state_t state) {
         }
     }
 #endif
+    state = layer_state_set_keymap(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) {
+__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
+layer_state_t                       default_layer_state_set_user(layer_state_t state) {
     if (!is_keyboard_master()) {
         return state;
     }
@@ -201,22 +208,14 @@ layer_state_t default_layer_state_set_user(layer_state_t state) {
 }
 
 __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) {}
-
-void eeconfig_init_user(void) {
+void                       eeconfig_init_user(void) {
     userspace_config.raw              = 0;
     userspace_config.rgb_layer_change = true;
     eeconfig_update_user(userspace_config.raw);
     eeconfig_init_keymap();
-#ifdef VIA_ENABLE
-    via_eeprom_reset();
-#endif
     keyboard_init();
 }
 
@@ -226,3 +225,39 @@ bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
 
     return (value & mask) == mask;
 }
+
+#ifdef SPLIT_KEYBOARD
+#    if defined(AUDIO_ENABLE)
+bool delayed_tasks_run = false;
+#    endif
+__attribute__((weak)) void matrix_slave_scan_keymap(void) {}
+void                       matrix_slave_scan_user(void) {
+#    if defined(AUDIO_ENABLE)
+#        if !defined(NO_MUSIC_MODE)
+    music_task();
+#        endif
+    if (!is_keyboard_master()) {
+        static uint16_t delayed_task_timer = 0;
+        if (!delayed_tasks_run) {
+            if (!delayed_task_timer) {
+                delayed_task_timer = timer_read();
+            } else if (timer_elapsed(delayed_task_timer) > 300) {
+                audio_startup();
+                delayed_tasks_run = true;
+            }
+        }
+    }
+#    endif
+#    ifdef SEQUENCER_ENABLE
+    sequencer_task();
+#    endif
+#    ifdef LED_MATRIX_ENABLE
+    led_matrix_task();
+#    endif
+#    ifdef HAPTIC_ENABLE
+    haptic_task();
+#    endif
+
+    matrix_slave_scan_keymap();
+}
+#endif
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index e66f106574..af26fdc433 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -29,34 +29,61 @@
 #if defined(RGB_MATRIX_ENABLE)
 #    include "rgb_matrix_stuff.h"
 #endif
-#if defined(OLED_DRIVER_ENABLE)
+#if defined(OLED_ENABLE)
 #    include "oled_stuff.h"
 #endif
 #if defined(PIMORONI_TRACKBALL_ENABLE)
-#    include "pimoroni_trackball.h"
+#    include "drivers/sensors/pimoroni_trackball.h"
+#endif
+#ifdef SPLIT_KEYBOARD
+#    include "transport_sync.h"
 #endif
 
 /* Define layer names */
 enum userspace_layers {
-    _QWERTY  = 0,
-    _NUMLOCK = 0,
+    _QWERTY             = 0,
+    _NUMLOCK            = 0,
+    FIRST_DEFAULT_LAYER = 0,
+    _COLEMAK_DH,
     _COLEMAK,
     _DVORAK,
-    _WORKMAN,
-    _NORMAN,
-    _MALTRON,
-    _EUCALYN,
-    _CARPLAX,
+    LAST_DEFAULT_LAYER = _DVORAK,
     _GAMEPAD,
     _DIABLO,
-    _MACROS,
+    _MOUSE,
     _MEDIA,
     _LOWER,
     _RAISE,
     _ADJUST,
 };
 
-#define _MOUSE _MACROS
+#define _MACROS          _MOUSE
+#define _DEFAULT_LAYER_1 FIRST_DEFAULT_LAYER
+#define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 1)
+#define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 2)
+#define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 3)
+#if LAST_DEFAULT_LAYER > (FIRST_DEFAULT_LAYER + 3)
+#    define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 4)
+#    define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 5)
+#    define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 6)
+#    define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 7)
+#    if LAST_DEFAULT_LAYER > (FIRST_DEFAULT_LAYER + 7)
+#        define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 8)
+#        define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 9)
+#        define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 10)
+#        define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 11)
+#    endif
+#endif
+
+#define DEFAULT_LAYER_1_HSV HSV_CYAN
+#define DEFAULT_LAYER_2_HSV HSV_CHARTREUSE
+#define DEFAULT_LAYER_3_HSV HSV_MAGENTA
+#define DEFAULT_LAYER_4_HSV HSV_GOLDENROD
+
+#define DEFAULT_LAYER_1_RGB RGB_CYAN
+#define DEFAULT_LAYER_2_RGB RGB_CHARTREUSE
+#define DEFAULT_LAYER_3_RGB RGB_MAGENTA
+#define DEFAULT_LAYER_4_RGB RGB_GOLDENROD
 
 bool          mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed);
 bool          mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
@@ -72,6 +99,9 @@ layer_state_t default_layer_state_set_keymap(layer_state_t state);
 void          led_set_keymap(uint8_t usb_led);
 void          eeconfig_init_keymap(void);
 bool          hasAllBitsInMask(uint8_t value, uint8_t mask);
+#ifdef SPLIT_KEYBOARD
+void matrix_slave_scan_keymap(void);
+#endif
 
 // clang-format off
 typedef union {
@@ -104,7 +134,3 @@ We use custom codes here, so we can substitute the right stuff
 #    define KC_D3_3 KC_3
 #    define KC_D3_4 KC_4
 #endif  // TAP_DANCE_ENABLE
-
-#if defined(DRASHNA_CUSTOM_TRANSPORT) && defined(POINTING_DEVICE_ENABLE)
-void master_mouse_send(int8_t x, int8_t y);
-#endif
diff --git a/users/drashna/drashna_font.h b/users/drashna/drashna_font.h
index 6a3865a44d..e9353e62a9 100644
--- a/users/drashna/drashna_font.h
+++ b/users/drashna/drashna_font.h
@@ -3,10 +3,14 @@
 // additional fonts from
 // https://github.com/datacute/TinyOLED-Fonts
 
-#include "progmem.h"
+#if __has_include("../../../../Documents/qmk/oled_font.h")
+#    include "../../../../Documents/qmk/oled_font.h"
+#else
+#    include "progmem.h"
 
+// clang-format off
 static const unsigned char font[] PROGMEM = {
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 0
+    0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, // 0x00 0
     0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, // 0x01 1
     0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, // 0x02 2
     0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, // 0x03 3 ♥
@@ -38,7 +42,7 @@ static const unsigned char font[] PROGMEM = {
     0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, // 0x1D 29 ↭
     0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, // 0x1E 30
     0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, // 0x1F 31
-#if defined(OLED_FONT_5X5)
+#    if defined(OLED_FONT_5X5)
     0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
     0x5c,0x00,0x00,0x00,0x00,0x00, // 0x21 33 !
     0x06,0x00,0x06,0x00,0x00,0x00, // 0x22 34 "
@@ -135,7 +139,7 @@ static const unsigned char font[] PROGMEM = {
     0x44,0x7c,0x10,0x00,0x00,0x00, // 0x7D 125 }
     0x02,0x01,0x02,0x01,0x00,0x00, // 0x7E 126 ~
     0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
-#elif defined(OLED_FONT_AZTECH)
+#    lif defined(OLED_FONT_AZTECH)
     0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
     0x00,0x2e,0x00,0x00,0x00,0x00, // 0x21 33 !
     0x00,0x02,0x00,0x02,0x00,0x00, // 0x22 34 "
@@ -232,7 +236,7 @@ static const unsigned char font[] PROGMEM = {
     0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 }
     0x00,0x00,0x00,0x00,0x00,0x00, // 0x7E 126 ~
     0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
-#elif defined(OLED_FONT_BMPLAIN)
+#    elif defined(OLED_FONT_BMPLAIN)
     0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
     0x2e,0x00,0x00,0x00,0x00,0x00, // 0x21 33 !
     0x03,0x00,0x03,0x00,0x00,0x00, // 0x22 34 "
@@ -329,7 +333,7 @@ static const unsigned char font[] PROGMEM = {
     0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 }
     0x01,0x01,0x01,0x00,0x00,0x00, // 0x7E 126 ~
     0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
-#elif defined(OLED_FONT_SUPER_DIGG)
+#    elif defined(OLED_FONT_SUPER_DIGG)
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32
     0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, // 0x21 33 !
     0x00, 0x01, 0x00, 0x00, 0x01, 0x00, // 0x22 34 "
@@ -426,7 +430,7 @@ static const unsigned char font[] PROGMEM = {
     0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, // 0x7D 125 }
     0x02, 0x01, 0x03, 0x04, 0x06, 0x02, // 0x7E 126 ~
     0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, // 0x7F 127
-#else // default font
+#    else // default font
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32
     0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, // 0x21 33 !
     0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // 0x22 34 "
@@ -523,9 +527,9 @@ static const unsigned char font[] PROGMEM = {
     0x00, 0x41, 0x36, 0x08, 0x00, 0x00, // 0x7D 125 }
     0x02, 0x01, 0x02, 0x04, 0x02, 0x00, // 0x7E 126 ~
     0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, // 0x7F 127
-#endif
+#    endif
 
-#if defined(OLED_LOGO_GMK_BAD)
+#    if defined(OLED_LOGO_GMK_BAD)
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
     0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, // 0x81
     0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, // 0x82
@@ -654,7 +658,7 @@ static const unsigned char font[] PROGMEM = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    #elif defined(OLED_LOGO_HUE_MANITEE)
+#    elif defined(OLED_LOGO_HUE_MANITEE)
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
     0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
     0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
@@ -783,7 +787,7 @@ static const unsigned char font[] PROGMEM = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    #elif defined(OLED_LOGO_CORNE)
+#    elif defined(OLED_LOGO_CORNE)
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
@@ -913,7 +917,7 @@ static const unsigned char font[] PROGMEM = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
-#elif defined(OLED_LOGO_GOTHAM) // see /keyboards/crkbd/keymaps/gotham/oled.c
+#    elif defined(OLED_LOGO_GOTHAM) // see /keyboards/crkbd/keymaps/gotham/oled.c
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
     0x00, 0x00, 0xC0, 0x60, 0x30, 0x18,
     0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C,
@@ -1042,137 +1046,7 @@ static const unsigned char font[] PROGMEM = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-#elif defined(OLED_LOGO_SCIFI)
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-    0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60,
-    0x70, 0x30, 0x38, 0x18, 0x0C, 0x0C,
-    0x1E, 0x0C, 0x80, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-    0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0E,
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-    0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-    0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-    0x00, 0x00, 0x80, 0x40, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x80, 0x80, 0x80, 0x00,
-    0x00, 0x00, 0x00, 0x80, 0x80, 0xC0,
-    0xC0, 0x60, 0x60, 0x30, 0x10, 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, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
-    0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
-    0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
-    0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-    0x30, 0x30, 0x70, 0x78, 0x78, 0x7C,
-    0x7C, 0x7E, 0x3E, 0x3F, 0x3F, 0x3B,
-    0x3B, 0x39, 0x39, 0x38, 0x38, 0x38,
-    0x38, 0x38, 0x38, 0x38, 0x3C, 0x38,
-    0x18, 0x8F, 0xDF, 0xF8, 0x7C, 0xBE,
-    0xDF, 0xF7, 0xFB, 0xFD, 0xFE, 0xEF,
-    0x73, 0x3B, 0x1B, 0x1F, 0xEF, 0xF7,
-    0xFF, 0x7E, 0x6F, 0x6F, 0x6F, 0x6F,
-    0x6D, 0xBD, 0xE1, 0xF9, 0x3F, 0x3F,
-    0x39, 0x79, 0x79, 0x7D, 0xED, 0xED,
-    0xCD, 0xC7, 0xC7, 0x87, 0xC7, 0xE3,
-    0xE0, 0xF8, 0x7E, 0x3F, 0x37, 0x33,
-    0x3B, 0x1B, 0x19, 0x19, 0x0D, 0xED,
-    0xFF, 0xBF, 0xC7, 0xE7, 0xE3, 0xF0,
-    0x7C, 0xDE, 0xE7, 0xFB, 0x3E, 0x3F,
-    0xFC, 0xE0, 0xF8, 0x3E, 0xCF, 0xF3,
-    0xFC, 0x3F, 0x1F, 0x1F, 0x3C, 0x7E,
-    0x76, 0xF3, 0xE3, 0x81, 0x01, 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,
-    0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
-    0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
-    0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
-    0x0F, 0x7F, 0x0F, 0x00, 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, 0x20, 0x30, 0x18, 0x1E,
-    0x0F, 0x03, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x03, 0x03, 0x01, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x03, 0x07, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x01, 0xE1, 0x79, 0x3E, 0x1F,
-    0x07, 0x01, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-    0x01, 0x00, 0x00, 0x01, 0x01, 0x01,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x01, 0x01, 0x03,
-    0x02, 0x06, 0x04, 0x08, 0x18, 0x10,
-    0x30, 0x20, 0x60, 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, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
-    0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
-    0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
-    0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
-    0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
-    0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
-    0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
-    0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
-    0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
-    0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
-    0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
-    0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
-    0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
-    0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
-    0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
-    0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
-    0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
-    0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
-    0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
-    0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
-    0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
-    0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
-    0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
-    0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
-    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
-#else
+#    else
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
     0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8,
     0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F,
@@ -1302,5 +1176,7 @@ static const unsigned char font[] PROGMEM = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
-#endif
+#    endif
   };
+// clang-format on
+#endif
diff --git a/users/drashna/drashna_transport.c b/users/drashna/drashna_transport.c
deleted file mode 100644
index 9df11c9bdf..0000000000
--- a/users/drashna/drashna_transport.c
+++ /dev/null
@@ -1,603 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.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/>.
- */
-
-#include <string.h>
-#include <stddef.h>
-
-#include "matrix.h"
-#include QMK_KEYBOARD_H
-
-#define ROWS_PER_HAND (MATRIX_ROWS / 2)
-#define SYNC_TIMER_OFFSET 2
-
-#ifdef RGBLIGHT_ENABLE
-#    include "rgblight.h"
-#endif
-
-#ifdef BACKLIGHT_ENABLE
-#    include "backlight.h"
-#endif
-
-#ifdef ENCODER_ENABLE
-#    include "encoder.h"
-static pin_t encoders_pad[] = ENCODERS_PAD_A;
-#    define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t))
-#endif
-
-#ifdef POINTING_DEVICE_ENABLE
-static uint16_t device_cpi    = 0;
-static int8_t   split_mouse_x = 0, split_mouse_y = 0;
-#endif
-
-#ifdef OLED_DRIVER_ENABLE
-#    include "oled_driver.h"
-#endif
-
-#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
-#    include "led_matrix.h"
-#endif
-#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
-#    include "rgb_matrix.h"
-#endif
-
-#if defined(USE_I2C)
-
-#    include "i2c_master.h"
-#    include "i2c_slave.h"
-
-typedef struct _I2C_slave_buffer_t {
-#    ifndef DISABLE_SYNC_TIMER
-    uint32_t sync_timer;
-#    endif
-#    ifdef SPLIT_TRANSPORT_MIRROR
-    matrix_row_t mmatrix[ROWS_PER_HAND];
-#    endif
-    matrix_row_t smatrix[ROWS_PER_HAND];
-#    ifdef SPLIT_MODS_ENABLE
-    uint8_t real_mods;
-    uint8_t weak_mods;
-#        ifndef NO_ACTION_ONESHOT
-    uint8_t oneshot_mods;
-#        endif
-#    endif
-#    ifdef BACKLIGHT_ENABLE
-    uint8_t backlight_level;
-#    endif
-#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
-    rgblight_syncinfo_t rgblight_sync;
-#    endif
-#    ifdef ENCODER_ENABLE
-    uint8_t encoder_state[NUMBER_OF_ENCODERS];
-#    endif
-#    ifdef WPM_ENABLE
-    uint8_t current_wpm;
-#    endif
-#    if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
-    led_eeconfig_t led_matrix;
-    bool           led_suspend_state;
-#    endif
-#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
-    rgb_config_t rgb_matrix;
-    bool         rgb_suspend_state;
-#    endif
-    int8_t        mouse_x;
-    int8_t        mouse_y;
-    uint16_t      device_cpi;
-    bool          oled_on;
-    layer_state_t t_layer_state;
-    layer_state_t t_default_layer_state;
-} __attribute__((packed)) I2C_slave_buffer_t;
-
-static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
-
-#    define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level)
-#    define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync)
-#    define I2C_KEYMAP_MASTER_START offsetof(I2C_slave_buffer_t, mmatrix)
-#    define I2C_KEYMAP_SLAVE_START offsetof(I2C_slave_buffer_t, smatrix)
-#    define I2C_SYNC_TIME_START offsetof(I2C_slave_buffer_t, sync_timer)
-#    define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods)
-#    define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods)
-#    define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods)
-#    define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state)
-#    define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm)
-#    define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x)
-#    define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y)
-#    define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi)
-#    define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on)
-#    define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state)
-#    define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state)
-#    define I2C_LED_MATRIX_START offsetof(I2C_slave_buffer_t, led_matrix)
-#    define I2C_LED_SUSPEND_START offsetof(I2C_slave_buffer_t, led_suspend_state)
-#    define I2C_RGB_MATRIX_START offsetof(I2C_slave_buffer_t, rgb_matrix)
-#    define I2C_RGB_SUSPEND_START offsetof(I2C_slave_buffer_t, rgb_suspend_state)
-
-#    define TIMEOUT 100
-
-#    ifndef SLAVE_I2C_ADDRESS
-#        define SLAVE_I2C_ADDRESS 0x32
-#    endif
-
-// Get rows from other half over i2c
-bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
-    i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_SLAVE_START, (void *)slave_matrix, sizeof(i2c_buffer->smatrix), TIMEOUT);
-#    ifdef SPLIT_TRANSPORT_MIRROR
-    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_MASTER_START, (void *)master_matrix, sizeof(i2c_buffer->mmatrix), TIMEOUT);
-#    endif
-    // write backlight info
-#    ifdef BACKLIGHT_ENABLE
-    uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0;
-    if (level != i2c_buffer->backlight_level) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) {
-            i2c_buffer->backlight_level = level;
-        }
-    }
-#    endif
-
-#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
-    if (rgblight_get_change_flags()) {
-        rgblight_syncinfo_t rgblight_sync;
-        rgblight_get_syncinfo(&rgblight_sync);
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) {
-            rgblight_clear_change_flags();
-        }
-    }
-#    endif
-
-#    ifdef ENCODER_ENABLE
-    i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT);
-    encoder_update_raw(i2c_buffer->encoder_state);
-#    endif
-
-#    ifdef WPM_ENABLE
-    uint8_t current_wpm = get_current_wpm();
-    if (current_wpm != i2c_buffer->current_wpm) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)&current_wpm, sizeof(current_wpm), TIMEOUT) >= 0) {
-            i2c_buffer->current_wpm = current_wpm;
-        }
-    }
-#    endif
-
-#    ifdef POINTING_DEVICE_ENABLE
-    if (is_keyboard_left()) {
-        report_mouse_t temp_report = pointing_device_get_report();
-        i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT);
-        temp_report.x = i2c_buffer->mouse_x;
-        i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT);
-        temp_report.y = i2c_buffer->mouse_y;
-        pointing_device_set_report(temp_report);
-
-        if (device_cpi != i2c_buffer->device_cpi) {
-            if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_DPI_START, (void *)&device_cpi, sizeof(device_cpi), TIMEOUT) >= 0) {
-                i2c_buffer->device_cpi = device_cpi
-            }
-        }
-    }
-#    endif
-
-#    ifdef SPLIT_MODS_ENABLE
-    uint8_t real_mods = get_mods();
-    if (real_mods != i2c_buffer->real_mods) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) {
-            i2c_buffer->real_mods = real_mods;
-        }
-    }
-
-    uint8_t weak_mods = get_weak_mods();
-    if (weak_mods != i2c_buffer->weak_mods) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) {
-            i2c_buffer->weak_mods = weak_mods;
-        }
-    }
-
-#        ifndef NO_ACTION_ONESHOT
-    uint8_t oneshot_mods = get_oneshot_mods();
-    if (oneshot_mods != i2c_buffer->oneshot_mods) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) {
-            i2c_buffer->oneshot_mods = oneshot_mods;
-        }
-    }
-#        endif
-#    endif
-
-    if (layer_state != i2c_buffer->t_layer_state) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&layer_state, sizeof(layer_state), TIMEOUT) >= 0) {
-            i2c_buffer->t_layer_state = layer_state;
-        }
-    }
-
-    if (default_layer_state != i2c_buffer->t_default_layer_state) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_DEFAULT_LAYER_STATE_START, (void *)&default_layer_state, sizeof(default_layer_state), TIMEOUT) >= 0) {
-            i2c_buffer->t_default_layer_state = default_layer_state;
-        }
-    }
-
-#    ifdef OLED_DRIVER_ENABLE
-    bool is_oled_on = is_oled_on();
-    if (is_oled_on != i2c_buffer->oled_on) {
-        if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on, sizeof(is_oled_on), TIMEOUT) >= 0) {
-            i2c_buffer->oled_on = is_oled_on;
-        }
-    }
-#    endif
-
-#    if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
-    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_MATRIX_START, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix), TIMEOUT);
-    bool suspend_state = led_matrix_get_suspend_state();
-    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->led_suspend_state), TIMEOUT);
-#    endif
-#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
-    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_START, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix), TIMEOUT);
-    bool suspend_state = rgb_matrix_get_suspend_state();
-    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->rgb_suspend_state), TIMEOUT);
-#    endif
-
-#    ifndef DISABLE_SYNC_TIMER
-    i2c_buffer->sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET;
-    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_SYNC_TIME_START, (void *)&i2c_buffer->sync_timer, sizeof(i2c_buffer->sync_timer), TIMEOUT);
-#    endif
-
-    return true;
-}
-
-void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
-#    ifndef DISABLE_SYNC_TIMER
-    sync_timer_update(i2c_buffer->sync_timer);
-#    endif
-    // Copy matrix to I2C buffer
-    memcpy((void *)i2c_buffer->smatrix, (void *)slave_matrix, sizeof(i2c_buffer->smatrix));
-#    ifdef SPLIT_TRANSPORT_MIRROR
-    memcpy((void *)master_matrix, (void *)i2c_buffer->mmatrix, sizeof(i2c_buffer->mmatrix));
-#    endif
-
-// Read Backlight Info
-#    ifdef BACKLIGHT_ENABLE
-    backlight_set(i2c_buffer->backlight_level);
-#    endif
-
-#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
-    // Update the RGB with the new data
-    if (i2c_buffer->rgblight_sync.status.change_flags != 0) {
-        rgblight_update_sync(&i2c_buffer->rgblight_sync, false);
-        i2c_buffer->rgblight_sync.status.change_flags = 0;
-    }
-#    endif
-
-#    ifdef ENCODER_ENABLE
-    encoder_state_raw(i2c_buffer->encoder_state);
-#    endif
-
-#    ifdef WPM_ENABLE
-    set_current_wpm(i2c_buffer->current_wpm);
-#    endif
-
-#    ifdef POINTING_DEVICE_ENABLE
-    if (!is_keyboard_left()) {
-        static uint16_t cpi;
-        if (cpi != i2c_buffer->device_cpi) {
-            cpi = i2c_buffer->device_cpi;
-            pmw_set_cpi(cpi);
-        }
-        i2c_buffer->mouse_x = split_mouse_x;
-        i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT);
-        i2c_buffer->mouse_y = split_mouse_y;
-        i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT);
-    }
-
-#    endif
-
-#    ifdef SPLIT_MODS_ENABLE
-    set_mods(i2c_buffer->real_mods);
-    set_weak_mods(i2c_buffer->weak_mods);
-#        ifndef NO_ACTION_ONESHOT
-    set_oneshot_mods(i2c_buffer->oneshot_mods);
-#        endif
-#    endif
-
-    if (layer_state != i2c_buffer->t_layer_state) {
-        layer_state = i2c_buffer->t_layer_state;
-    }
-    if (default_layer_state != i2c_buffer->t_default_layer_state) {
-        default_layer_state = i2c_buffer->t_default_layer_state;
-    }
-
-#    ifdef OLED_DRIVER_ENABLE
-    if (i2c_buffer->oled_on) {
-        oled_on();
-    } else {
-        oled_off();
-    }
-#    endif
-
-#    if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
-    memcpy((void *)i2c_buffer->led_matrix, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix));
-    led_matrix_set_suspend_state(i2c_buffer->led_suspend_state);
-#    endif
-#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
-    memcpy((void *)i2c_buffer->rgb_matrix, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix));
-    rgb_matrix_set_suspend_state(i2c_buffer->rgb_suspend_state);
-#    endif
-}
-
-void transport_master_init(void) { i2c_init(); }
-
-void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); }
-
-#else  // USE_SERIAL
-
-#    include "serial.h"
-
-typedef struct _Serial_s2m_buffer_t {
-    // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack
-    matrix_row_t smatrix[ROWS_PER_HAND];
-#    ifdef ENCODER_ENABLE
-    uint8_t      encoder_state[NUMBER_OF_ENCODERS];
-#    endif
-    int8_t       mouse_x;
-    int8_t       mouse_y;
-} __attribute__((packed)) Serial_s2m_buffer_t;
-
-typedef struct _Serial_m2s_buffer_t {
-#    ifdef SPLIT_MODS_ENABLE
-    uint8_t       real_mods;
-    uint8_t       weak_mods;
-#        ifndef NO_ACTION_ONESHOT
-    uint8_t       oneshot_mods;
-#        endif
-#    endif
-#    ifndef DISABLE_SYNC_TIMER
-    uint32_t     sync_timer;
-#    endif
-#    ifdef SPLIT_TRANSPORT_MIRROR
-    matrix_row_t mmatrix[ROWS_PER_HAND];
-#    endif
-#    ifdef BACKLIGHT_ENABLE
-    uint8_t       backlight_level;
-#    endif
-#    ifdef WPM_ENABLE
-    uint8_t       current_wpm;
-#    endif
-    uint16_t      device_cpi;
-    bool          oled_on;
-    layer_state_t t_layer_state;
-    layer_state_t t_default_layer_state;
-#    if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
-    led_eeconfig_t led_matrix;
-    bool           led_suspend_state;
-#    endif
-#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
-    rgb_config_t   rgb_matrix;
-    bool           rgb_suspend_state;
-#    endif
-} __attribute__((packed)) Serial_m2s_buffer_t;
-
-#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
-// When MCUs on both sides drive their respective RGB LED chains,
-// it is necessary to synchronize, so it is necessary to communicate RGB
-// information. In that case, define RGBLIGHT_SPLIT with info on the number
-// of LEDs on each half.
-//
-// Otherwise, if the master side MCU drives both sides RGB LED chains,
-// there is no need to communicate.
-
-typedef struct _Serial_rgblight_t {
-    rgblight_syncinfo_t rgblight_sync;
-} Serial_rgblight_t;
-
-volatile Serial_rgblight_t serial_rgblight = {};
-uint8_t volatile status_rgblight           = 0;
-#    endif
-
-volatile Serial_s2m_buffer_t serial_s2m_buffer = {};
-volatile Serial_m2s_buffer_t serial_m2s_buffer = {};
-uint8_t volatile status0                       = 0;
-
-enum serial_transaction_id {
-    GET_SLAVE_MATRIX = 0,
-#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
-    PUT_RGBLIGHT,
-#    endif
-};
-
-SSTD_t transactions[] = {
-    [GET_SLAVE_MATRIX] =
-        {
-            (uint8_t *)&status0,
-            sizeof(serial_m2s_buffer),
-            (uint8_t *)&serial_m2s_buffer,
-            sizeof(serial_s2m_buffer),
-            (uint8_t *)&serial_s2m_buffer,
-        },
-#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
-    [PUT_RGBLIGHT] =
-        {
-            (uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL  // no slave to master transfer
-        },
-#    endif
-};
-
-void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); }
-
-void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); }
-
-#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
-
-// rgblight synchronization information communication.
-
-void transport_rgblight_master(void) {
-    if (rgblight_get_change_flags()) {
-        rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync);
-        if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) {
-            rgblight_clear_change_flags();
-        }
-    }
-}
-
-void transport_rgblight_slave(void) {
-    if (status_rgblight == TRANSACTION_ACCEPTED) {
-        rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false);
-        status_rgblight = TRANSACTION_END;
-    }
-}
-
-#    else
-#        define transport_rgblight_master()
-#        define transport_rgblight_slave()
-#    endif
-
-bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
-#    ifndef SERIAL_USE_MULTI_TRANSACTION
-    if (soft_serial_transaction() != TRANSACTION_END) {
-        return false;
-    }
-#    else
-    transport_rgblight_master();
-    if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) {
-        return false;
-    }
-#    endif
-
-    // TODO:  if MATRIX_COLS > 8 change to unpack()
-    for (int i = 0; i < ROWS_PER_HAND; ++i) {
-        slave_matrix[i] = serial_s2m_buffer.smatrix[i];
-#    ifdef SPLIT_TRANSPORT_MIRROR
-        serial_m2s_buffer.mmatrix[i] = master_matrix[i];
-#    endif
-    }
-
-#    ifdef BACKLIGHT_ENABLE
-    // Write backlight level for slave to read
-    serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0;
-#    endif
-
-#    ifdef ENCODER_ENABLE
-    encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state);
-#    endif
-
-#    ifdef WPM_ENABLE
-    // Write wpm to slave
-    serial_m2s_buffer.current_wpm  = get_current_wpm();
-#    endif
-
-#    ifdef SPLIT_MODS_ENABLE
-    serial_m2s_buffer.real_mods    = get_mods();
-    serial_m2s_buffer.weak_mods    = get_weak_mods();
-#        ifndef NO_ACTION_ONESHOT
-    serial_m2s_buffer.oneshot_mods = get_oneshot_mods();
-#        endif
-#    endif
-
-#    ifdef POINTING_DEVICE_ENABLE
-    if (is_keyboard_left()) {
-        report_mouse_t temp_report = pointing_device_get_report();
-        temp_report.x              = serial_s2m_buffer.mouse_x;
-        temp_report.y              = serial_s2m_buffer.mouse_y;
-        pointing_device_set_report(temp_report);
-        serial_m2s_buffer.device_cpi = device_cpi;
-    }
-#    endif
-
-    serial_m2s_buffer.t_layer_state           = layer_state;
-    serial_m2s_buffer.t_default_layer_state   = default_layer_state;
-#    ifdef OLED_DRIVER_ENABLE
-    serial_m2s_buffer.oled_on                 = is_oled_on();
-#    endif
-
-#    if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
-    serial_m2s_buffer.led_matrix        = led_matrix_eeconfig;
-    serial_m2s_buffer.led_suspend_state = led_matrix_get_suspend_state();
-#    endif
-#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
-    serial_m2s_buffer.rgb_matrix        = rgb_matrix_config;
-    serial_m2s_buffer.rgb_suspend_state = rgb_matrix_get_suspend_state();
-#    endif
-
-#    ifndef DISABLE_SYNC_TIMER
-    serial_m2s_buffer.sync_timer   = sync_timer_read32() + SYNC_TIMER_OFFSET;
-#    endif
-    return true;
-}
-
-void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
-    transport_rgblight_slave();
-#    ifndef DISABLE_SYNC_TIMER
-    sync_timer_update(serial_m2s_buffer.sync_timer);
-#    endif
-
-    // TODO: if MATRIX_COLS > 8 change to pack()
-    for (int i = 0; i < ROWS_PER_HAND; ++i) {
-        serial_s2m_buffer.smatrix[i] = slave_matrix[i];
-#    ifdef SPLIT_TRANSPORT_MIRROR
-        master_matrix[i]             = serial_m2s_buffer.mmatrix[i];
-#    endif
-    }
-
-#    ifdef BACKLIGHT_ENABLE
-    backlight_set(serial_m2s_buffer.backlight_level);
-#    endif
-
-#    ifdef ENCODER_ENABLE
-    encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state);
-#    endif
-
-#    ifdef WPM_ENABLE
-    set_current_wpm(serial_m2s_buffer.current_wpm);
-#    endif
-
-#    ifdef SPLIT_MODS_ENABLE
-    set_mods(serial_m2s_buffer.real_mods);
-    set_weak_mods(serial_m2s_buffer.weak_mods);
-#        ifndef NO_ACTION_ONESHOT
-    set_oneshot_mods(serial_m2s_buffer.oneshot_mods);
-#        endif
-#    endif
-
-#    ifdef POINTING_DEVICE_ENABLE
-    if (!is_keyboard_left()) {
-        static uint16_t cpi;
-        if (cpi != serial_m2s_buffer.device_cpi) {
-            cpi = serial_m2s_buffer.device_cpi;
-            pmw_set_cpi(cpi);
-        }
-        serial_s2m_buffer.mouse_x = split_mouse_x;
-        serial_s2m_buffer.mouse_y = split_mouse_y;
-    }
-#    endif
-
-    if (layer_state != serial_m2s_buffer.t_layer_state) {
-        layer_state = serial_m2s_buffer.t_layer_state;
-    }
-    if (default_layer_state != serial_m2s_buffer.t_default_layer_state) {
-        default_layer_state = serial_m2s_buffer.t_default_layer_state;
-    }
-#    ifdef OLED_DRIVER_ENABLE
-    if (serial_m2s_buffer.oled_on) {
-        oled_on();
-    } else {
-        oled_off();
-    }
-#    endif
-
-#    if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
-    led_matrix_eeconfig = serial_m2s_buffer.led_matrix;
-    led_matrix_set_suspend_state(serial_m2s_buffer.led_suspend_state);
-#    endif
-#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
-    rgb_matrix_config = serial_m2s_buffer.rgb_matrix;
-    rgb_matrix_set_suspend_state(serial_m2s_buffer.rgb_suspend_state);
-#    endif
-}
-
-#endif
diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c
index 98e467d930..debcdcfbe0 100644
--- a/users/drashna/oled_stuff.c
+++ b/users/drashna/oled_stuff.c
@@ -18,14 +18,14 @@
 
 #ifndef KEYLOGGER_LENGTH
 // #    ifdef OLED_DISPLAY_128X64
-#    define KEYLOGGER_LENGTH ((int)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
+#    define KEYLOGGER_LENGTH ((uint8_t)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
 // #    else
 // #        define KEYLOGGER_LENGTH (uint8_t *(OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT))
 // #    endif
 #endif
 
 uint32_t        oled_timer                       = 0;
-static char     keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
+static char     keylog_str[KEYLOGGER_LENGTH + 1] = {0};
 static uint16_t log_timer                        = 0;
 
 // clang-format off
@@ -57,12 +57,12 @@ void add_keylog(uint16_t keycode) {
         keycode = 0;
     }
 
-    for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
-        keylog_str[i] = keylog_str[i - 1];
+    for (uint8_t i = 1; i < KEYLOGGER_LENGTH; i++) {
+        keylog_str[i - 1] = keylog_str[i];
     }
 
     if (keycode < (sizeof(code_to_name) / sizeof(char))) {
-        keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
+        keylog_str[(KEYLOGGER_LENGTH - 1)] = pgm_read_byte(&code_to_name[keycode]);
     }
 
     log_timer = timer_read();
@@ -70,7 +70,7 @@ void add_keylog(uint16_t keycode) {
 
 bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
     if (record->event.pressed) {
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
         oled_timer = timer_read32();
         add_keylog(keycode);
 #endif
@@ -95,27 +95,15 @@ void render_default_layer_state(void) {
         case _QWERTY:
             oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false);
             break;
+        case _COLEMAK_DH:
+            oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false);
+            break;
         case _COLEMAK:
             oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK), false);
             break;
         case _DVORAK:
             oled_write_P(PSTR(OLED_RENDER_LAYOUT_DVORAK), false);
             break;
-        case _WORKMAN:
-            oled_write_P(PSTR(OLED_RENDER_LAYOUT_WORKMAN), false);
-            break;
-        case _NORMAN:
-            oled_write_P(PSTR(OLED_RENDER_LAYOUT_NORMAN), false);
-            break;
-        case _MALTRON:
-            oled_write_P(PSTR(OLED_RENDER_LAYOUT_MALTRON), false);
-            break;
-        case _EUCALYN:
-            oled_write_P(PSTR(OLED_RENDER_LAYOUT_EUCALYN), false);
-            break;
-        case _CARPLAX:
-            oled_write_P(PSTR(OLED_RENDER_LAYOUT_CARPLAX), false);
-            break;
     }
 #ifdef OLED_DISPLAY_128X64
     oled_advance_page(true);
@@ -153,18 +141,16 @@ void render_keylock_status(uint8_t led_usb_state) {
     oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
     oled_write_P(PSTR(" "), false);
     oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
-#ifndef OLED_DISPLAY_128X64
-    oled_advance_page(true);
-#endif
 }
+
 void render_matrix_scan_rate(void) {
 #ifdef DEBUG_MATRIX_SCAN_RATE
-    char matrix_rate[5];
-    uint16_t n = get_matrix_scan_rate();
+    char     matrix_rate[5];
+    uint16_t n     = get_matrix_scan_rate();
     matrix_rate[4] = '\0';
     matrix_rate[3] = '0' + n % 10;
-    matrix_rate[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
-    matrix_rate[1] =  n / 10 ? '0' + n / 10 : ' ';
+    matrix_rate[2] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
+    matrix_rate[1] = n / 10 ? '0' + n / 10 : ' ';
     matrix_rate[0] = ' ';
     oled_write_P(PSTR("MS:"), false);
     oled_write(matrix_rate, false);
@@ -174,17 +160,21 @@ void render_matrix_scan_rate(void) {
 void render_mod_status(uint8_t modifiers) {
     static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
     oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
+#if defined(OLED_DISPLAY_128X64)
+    oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_LSHIFT)));
+    oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_LGUI)));
+    oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_LALT)));
+    oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_LCTL)));
+    oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_RCTL)));
+    oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_RALT)));
+    oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_RGUI)));
+    oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_RSHIFT)));
+#else
     oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT));
     oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI));
-#if !defined(OLED_DISPLAY_128X64)
     oled_write_P(PSTR(" "), false);
-#endif
     oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT));
     oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL));
-
-    render_matrix_scan_rate();
-#if defined(OLED_DISPLAY_128X64)
-    oled_advance_page(true);
 #endif
 }
 
@@ -284,12 +274,16 @@ void render_user_status(void) {
     oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
     static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
     oled_write_P(nukem_good[0], userspace_config.nuke_switch);
+#if defined(UNICODE_ENABLE)
+    static const char PROGMEM uc_mod_status[5][3] = {{0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
+    oled_write_P(uc_mod_status[get_unicode_input_mode() == UC_MAC], false);
+#endif
 #if defined(OLED_DISPLAY_128X64)
     oled_advance_page(true);
 #endif
 }
 
-__attribute__((weak)) void oled_driver_render_logo(void) {
+void oled_driver_render_logo(void) {
     // clang-format off
     static const char PROGMEM qmk_logo[] = {
         0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
@@ -299,80 +293,101 @@ __attribute__((weak)) void oled_driver_render_logo(void) {
     oled_write_P(qmk_logo, false);
 }
 
-void render_wpm(void) {
+void render_wpm(uint8_t padding) {
 #ifdef WPM_ENABLE
     uint8_t n = get_current_wpm();
-#    ifdef OLED_DISPLAY_128X64
-    char wpm_counter[4];
+    char    wpm_counter[4];
     wpm_counter[3] = '\0';
     wpm_counter[2] = '0' + n % 10;
-    wpm_counter[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
+    wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
     wpm_counter[0] = n / 10 ? '0' + n / 10 : ' ';
-#    else
-    char wpm_counter[6];
-    wpm_counter[5] = '\0';
-    wpm_counter[4] = '0' + n % 10;
-    wpm_counter[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
-    wpm_counter[2] = n / 10 ? '0' + n / 10 : ' ';
-    wpm_counter[1] = ' ';
-    wpm_counter[0] = ' ';
-    #    endif
     oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false);
+    if (padding) {
+        for (uint8_t n = padding; n > 0; n--) {
+            oled_write_P(PSTR(" "), false);
+        }
+    }
     oled_write(wpm_counter, false);
 #endif
 }
 
-#ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
-extern keyboard_config_t keyboard_config;
-extern uint16_t          dpi_array[];
-
-void render_pointing_dpi_status(void) {
-    char dpi_status[6];
-    uint16_t n = dpi_array[keyboard_config.dpi_config];
-    dpi_status[5] = '\0';
-    dpi_status[4] = '0' + n % 10;
-    dpi_status[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
-    dpi_status[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
-    dpi_status[1] =  n / 10 ? '0' + n / 10 : ' ';
-    dpi_status[0] = ' ';
-    oled_write_P(PSTR("  DPI: "), false);
+#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right)
+extern kb_config_data_t kb_config;
+void                    render_pointing_dpi_status(uint8_t padding) {
+    char     dpi_status[5];
+    uint16_t n    = kb_config.device_cpi;
+    dpi_status[4] = '\0';
+    dpi_status[3] = '0' + n % 10;
+    dpi_status[2] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
+    dpi_status[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
+    dpi_status[0] = n / 10 ? '0' + n / 10 : ' ';
+    oled_write_P(PSTR("DPI: "), false);
+    if (padding) {
+        for (uint8_t n = padding; n > 0; n--) {
+            oled_write_P(PSTR(" "), false);
+        }
+    }
     oled_write(dpi_status, false);
 }
 #endif
 
-void render_status_secondary(void) {
+__attribute__((weak)) void oled_driver_render_logo_right(void) {
 #if defined(OLED_DISPLAY_128X64)
     oled_driver_render_logo();
-#endif
-    /* Show Keyboard Layout  */
     render_default_layer_state();
-    render_layer_state();
-    render_mod_status(get_mods() | get_oneshot_mods());
-    // render_keylogger_status();
-    render_keylock_status(host_keyboard_leds());
+    oled_set_cursor(0, 4);
+#else
+    render_default_layer_state();
+#endif
 }
 
-void render_status_main(void) {
+__attribute__((weak)) void oled_driver_render_logo_left(void) {
 #if defined(OLED_DISPLAY_128X64)
     oled_driver_render_logo();
 #    ifdef DEBUG_MATRIX_SCAN_RATE
     render_matrix_scan_rate();
-#    else
-    render_wpm();
+#    elif defined(WPM_ENABLE)
+    render_wpm(0);
 #    endif
-#    ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
-    render_pointing_dpi_status();
+    oled_write_P(PSTR("  "), false);
+#    if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right)
+    render_pointing_dpi_status(1);
 #    endif
-    oled_write_P(PSTR("\n"), false);
+    oled_set_cursor(0, 4);
 #else
     render_default_layer_state();
 #endif
+}
+
+void render_status_secondary(void) {
+    oled_driver_render_logo_right();
+    /* Show Keyboard Layout  */
+    render_layer_state();
+    render_mod_status(get_mods() | get_oneshot_mods());
+#if !defined(OLED_DISPLAY_128X64) && defined(WPM_ENABLE)
+    render_wpm(2);
+#endif
+    // render_keylock_status(host_keyboard_leds());
+}
+
+void render_status_main(void) {
+    oled_driver_render_logo_left();
+
     /* Show Keyboard Layout  */
     // render_keylock_status(host_keyboard_leds());
     render_bootmagic_status();
     render_user_status();
 
-    render_keylogger_status();
+    // render_keylogger_status();
+}
+
+__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return rotation; }
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+    for (uint8_t i = 0; i < (KEYLOGGER_LENGTH - 1); i++) {
+        add_keylog(0);
+    }
+    return oled_init_keymap(rotation);
 }
 
 void oled_task_user(void) {
@@ -385,8 +400,15 @@ void oled_task_user(void) {
         } else {
             oled_on();
         }
+    }
+    if (is_keyboard_left()) {
         render_status_main();  // Renders the current keyboard state (layer, lock, caps, scroll, etc)
     } else {
         render_status_secondary();
     }
+    if (is_keyboard_master()) {
+        render_keylogger_status();
+    } else {
+        render_keylock_status(host_keyboard_leds());
+    }
 }
diff --git a/users/drashna/oled_stuff.h b/users/drashna/oled_stuff.h
index 1f4440bd42..8795684d6a 100644
--- a/users/drashna/oled_stuff.h
+++ b/users/drashna/oled_stuff.h
@@ -19,97 +19,113 @@
 #include "quantum.h"
 #include "oled_driver.h"
 
-void oled_driver_render_logo(void);
-bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
+void            oled_driver_render_logo(void);
+bool            process_record_user_oled(uint16_t keycode, keyrecord_t *record);
+oled_rotation_t oled_init_keymap(oled_rotation_t rotation);
 extern uint32_t oled_timer;
+void            render_keylogger_status(void);
+void            render_default_layer_state(void);
+void            render_layer_state(void);
+void            render_keylock_status(uint8_t led_usb_state);
+void            render_matrix_scan_rate(void);
+void            render_mod_status(uint8_t modifiers);
+void            render_bootmagic_status(void);
+void            render_user_status(void);
+void            oled_driver_render_logo(void);
+void            render_wpm(uint8_t padding);
+void            render_pointing_dpi_status(uint8_t padding);
+void            oled_driver_render_logo_left(void);
+void            oled_driver_render_logo_right(void);
 
 #ifdef OLED_DISPLAY_128X64
-#    define OLED_RENDER_KEYLOGGER "Keylogger: "
-
-#    define OLED_RENDER_LAYOUT_NAME    "Layout: "
-#    define OLED_RENDER_LAYOUT_QWERTY  "Qwerty"
-#    define OLED_RENDER_LAYOUT_COLEMAK "Colemak"
-#    define OLED_RENDER_LAYOUT_DVORAK  "Dvorak"
-#    define OLED_RENDER_LAYOUT_WORKMAN "Workman"
-#    define OLED_RENDER_LAYOUT_NORMAN  "Norman"
-#    define OLED_RENDER_LAYOUT_MALTRON "Matron"
-#    define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
-#    define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
-
-#    define OLED_RENDER_LAYER_NAME   "Layer:"
-#    define OLED_RENDER_LAYER_LOWER  "Lower"
-#    define OLED_RENDER_LAYER_RAISE  "Raise"
-#    define OLED_RENDER_LAYER_ADJUST "Adjust"
-#    define OLED_RENDER_LAYER_MODS   "Mods"
-
-#    define OLED_RENDER_LOCK_NAME "Lock: "
-#    define OLED_RENDER_LOCK_NUML "NUML"
-#    define OLED_RENDER_LOCK_CAPS "CAPS"
-#    define OLED_RENDER_LOCK_SCLK "SCLK"
-
-#    define OLED_RENDER_MODS_NAME "Mods:"
-#    define OLED_RENDER_MODS_SFT  "Sft"
-#    define OLED_RENDER_MODS_CTL  "Ctl"
-#    define OLED_RENDER_MODS_ALT  "Alt"
-#    define OLED_RENDER_MODS_GUI  "GUI"
-
-#    define OLED_RENDER_BOOTMAGIC_NAME  "Boot  "
-#    define OLED_RENDER_BOOTMAGIC_NKRO  "NKRO"
-#    define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
-#    define OLED_RENDER_BOOTMAGIC_GRV   "GRV"
+#    define OLED_RENDER_KEYLOGGER         "Keylogger: "
+
+#    define OLED_RENDER_LAYOUT_NAME       "Layout: "
+#    define OLED_RENDER_LAYOUT_QWERTY     "Qwerty"
+#    define OLED_RENDER_LAYOUT_COLEMAK_DH "Colemak-DH"
+#    define OLED_RENDER_LAYOUT_COLEMAK    "Colemak"
+#    define OLED_RENDER_LAYOUT_DVORAK     "Dvorak"
+#    define OLED_RENDER_LAYOUT_WORKMAN    "Workman"
+#    define OLED_RENDER_LAYOUT_NORMAN     "Norman"
+#    define OLED_RENDER_LAYOUT_MALTRON    "Matron"
+#    define OLED_RENDER_LAYOUT_EUCALYN    "Eucalyn"
+#    define OLED_RENDER_LAYOUT_CARPLAX    "Carplax"
+
+#    define OLED_RENDER_LAYER_NAME        "Layer:"
+#    define OLED_RENDER_LAYER_LOWER       "Lower"
+#    define OLED_RENDER_LAYER_RAISE       "Raise"
+#    define OLED_RENDER_LAYER_ADJUST      "Adjust"
+#    define OLED_RENDER_LAYER_MODS        "Mods"
+
+#    define OLED_RENDER_LOCK_NAME         "Lock: "
+#    define OLED_RENDER_LOCK_NUML         "NUML"
+#    define OLED_RENDER_LOCK_CAPS         "CAPS"
+#    define OLED_RENDER_LOCK_SCLK         "SCLK"
+
+#    define OLED_RENDER_MODS_NAME         "Mods:"
+#    define OLED_RENDER_MODS_SFT          "Sft"
+#    define OLED_RENDER_MODS_CTL          "Ctl"
+#    define OLED_RENDER_MODS_ALT          "Alt"
+#    define OLED_RENDER_MODS_GUI          "GUI"
+
+#    define OLED_RENDER_BOOTMAGIC_NAME    "Boot  "
+#    define OLED_RENDER_BOOTMAGIC_NKRO    "NKRO"
+#    define OLED_RENDER_BOOTMAGIC_NOGUI   "nGUI"
+#    define OLED_RENDER_BOOTMAGIC_GRV     "GRV"
 #    define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
-#    define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
-#    define OLED_RENDER_BOOTMAGIC_CAPS  "CAPS"
+#    define OLED_RENDER_BOOTMAGIC_SWAP    "SWAP"
+#    define OLED_RENDER_BOOTMAGIC_CAPS    "CAPS"
 
-#    define OLED_RENDER_USER_NAME "USER:"
-#    define OLED_RENDER_USER_ANIM "Anim"
-#    define OLED_RENDER_USER_LAYR "Layr"
-#    define OLED_RENDER_USER_NUKE "Nuke"
+#    define OLED_RENDER_USER_NAME         "USER:"
+#    define OLED_RENDER_USER_ANIM         "Anim"
+#    define OLED_RENDER_USER_LAYR         "Layr"
+#    define OLED_RENDER_USER_NUKE         "Nuke"
 
-#    define OLED_RENDER_WPM_COUNTER "WPM: "
+#    define OLED_RENDER_WPM_COUNTER       "WPM: "
 #else
-#    define OLED_RENDER_KEYLOGGER "KLogr"
-
-#    define OLED_RENDER_LAYOUT_NAME    "Lyout"
-#    define OLED_RENDER_LAYOUT_QWERTY  " QRTY"
-#    define OLED_RENDER_LAYOUT_COLEMAK " COLE"
-#    define OLED_RENDER_LAYOUT_DVORAK  " DVRK"
-#    define OLED_RENDER_LAYOUT_WORKMAN " WKMN"
-#    define OLED_RENDER_LAYOUT_NORMAN  " NORM"
-#    define OLED_RENDER_LAYOUT_MALTRON " MLTN"
-#    define OLED_RENDER_LAYOUT_EUCALYN " ECLN"
-#    define OLED_RENDER_LAYOUT_CARPLAX " CRPX"
-
-#    define OLED_RENDER_LAYER_NAME   "LAYER"
-#    define OLED_RENDER_LAYER_LOWER  "Lower"
-#    define OLED_RENDER_LAYER_RAISE  "Raise"
-#    define OLED_RENDER_LAYER_ADJUST "Adjst"
-#    define OLED_RENDER_LAYER_MODS   " Mods"
-
-#    define OLED_RENDER_LOCK_NAME "Lock:"
-#    define OLED_RENDER_LOCK_NUML "NumL"
-#    define OLED_RENDER_LOCK_CAPS "CapL"
-#    define OLED_RENDER_LOCK_SCLK "ScrL"
-
-#    define OLED_RENDER_MODS_NAME "Mods: "
-#    define OLED_RENDER_MODS_SFT  "Shft"
-#    define OLED_RENDER_MODS_CTL  "Ctrl"
-#    define OLED_RENDER_MODS_ALT  "Alt\n"
-#    define OLED_RENDER_MODS_GUI  "GUI\n"
-
-#    define OLED_RENDER_BOOTMAGIC_NAME  "BTMGK"
-#    define OLED_RENDER_BOOTMAGIC_NKRO  "NKRO"
-#    define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
-#    define OLED_RENDER_BOOTMAGIC_GRV   "GRV"
+#    define OLED_RENDER_KEYLOGGER         "KLogr"
+
+#    define OLED_RENDER_LAYOUT_NAME       "Lyout"
+#    define OLED_RENDER_LAYOUT_QWERTY     " QRTY"
+#    define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH"
+#    define OLED_RENDER_LAYOUT_COLEMAK    " COLE"
+#    define OLED_RENDER_LAYOUT_DVORAK     " DVRK"
+#    define OLED_RENDER_LAYOUT_WORKMAN    " WKMN"
+#    define OLED_RENDER_LAYOUT_NORMAN     " NORM"
+#    define OLED_RENDER_LAYOUT_MALTRON    " MLTN"
+#    define OLED_RENDER_LAYOUT_EUCALYN    " ECLN"
+#    define OLED_RENDER_LAYOUT_CARPLAX    " CRPX"
+
+#    define OLED_RENDER_LAYER_NAME        "LAYER"
+#    define OLED_RENDER_LAYER_LOWER       "Lower"
+#    define OLED_RENDER_LAYER_RAISE       "Raise"
+#    define OLED_RENDER_LAYER_ADJUST      "Adjst"
+#    define OLED_RENDER_LAYER_MODS        " Mods"
+
+#    define OLED_RENDER_LOCK_NAME         "Lock:"
+#    define OLED_RENDER_LOCK_NUML         "NumL"
+#    define OLED_RENDER_LOCK_CAPS         "CapL"
+#    define OLED_RENDER_LOCK_SCLK         "ScrL"
+
+#    define OLED_RENDER_MODS_NAME         "Mods: "
+#    define OLED_RENDER_MODS_SFT          "Shft"
+#    define OLED_RENDER_MODS_CTL          "Ctrl"
+#    define OLED_RENDER_MODS_ALT          "Alt\n"
+#    define OLED_RENDER_MODS_GUI          "GUI\n"
+
+#    define OLED_RENDER_BOOTMAGIC_NAME    "BTMGK"
+#    define OLED_RENDER_BOOTMAGIC_NKRO    "NKRO"
+#    define OLED_RENDER_BOOTMAGIC_NOGUI   "nGUI"
+#    define OLED_RENDER_BOOTMAGIC_GRV     "GRV"
 #    define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
-#    define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
-#    define OLED_RENDER_BOOTMAGIC_CAPS  "CAPS"
+#    define OLED_RENDER_BOOTMAGIC_SWAP    "SWAP"
+#    define OLED_RENDER_BOOTMAGIC_CAPS    "CAPS"
 
-#    define OLED_RENDER_USER_NAME "USER:"
-#    define OLED_RENDER_USER_ANIM "Anim"
-#    define OLED_RENDER_USER_LAYR "Layr"
-#    define OLED_RENDER_USER_NUKE "Nuke"
+#    define OLED_RENDER_USER_NAME         "USER:"
+#    define OLED_RENDER_USER_ANIM         "Anim"
+#    define OLED_RENDER_USER_LAYR         "Layr"
+#    define OLED_RENDER_USER_NUKE         "Nuke"
 
-#    define OLED_RENDER_WPM_COUNTER "WPM: "
+#    define OLED_RENDER_WPM_COUNTER       "WPM: "
 
 #endif
diff --git a/users/drashna/pimoroni_trackball.c b/users/drashna/pimoroni_trackball.c
deleted file mode 100644
index a6ca6c9966..0000000000
--- a/users/drashna/pimoroni_trackball.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.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/>.
- */
-
-#include "pimoroni_trackball.h"
-#include "i2c_master.h"
-
-static uint8_t scrolling      = 0;
-static int16_t x_offset       = 0;
-static int16_t y_offset       = 0;
-static int16_t h_offset       = 0;
-static int16_t v_offset       = 0;
-static float   precisionSpeed = 1;
-
-#ifndef I2C_TIMEOUT
-#    define I2C_TIMEOUT 100
-#endif
-#ifndef MOUSE_DEBOUNCE
-#    define MOUSE_DEBOUNCE 5
-#endif
-
-void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white) {
-    uint8_t data[] = {0x00, red, green, blue, white};
-    i2c_transmit(TRACKBALL_ADDRESS << 1, data, sizeof(data), I2C_TIMEOUT);
-}
-
-int16_t mouse_offset(uint8_t positive, uint8_t negative, int16_t scale) {
-    int16_t offset    = (int16_t)positive - (int16_t)negative;
-    int16_t magnitude = (int16_t)(scale * offset * offset * precisionSpeed);
-    return offset < 0 ? -magnitude : magnitude;
-}
-
-void update_member(int8_t* member, int16_t* offset) {
-    if (*offset > 127) {
-        *member = 127;
-        *offset -= 127;
-    } else if (*offset < -127) {
-        *member = -127;
-        *offset += 127;
-    } else {
-        *member = *offset;
-        *offset = 0;
-    }
-}
-
-__attribute__((weak)) void trackball_check_click(bool pressed, report_mouse_t* mouse) {
-    if (pressed) {
-        mouse->buttons |= MOUSE_BTN1;
-    } else {
-        mouse->buttons &= ~MOUSE_BTN1;
-    }
-}
-
-void trackball_register_button(bool pressed, enum mouse_buttons button) {
-    report_mouse_t currentReport = pointing_device_get_report();
-    if (pressed) {
-        currentReport.buttons |= button;
-    } else {
-        currentReport.buttons &= ~button;
-    }
-    pointing_device_set_report(currentReport);
-}
-
-float trackball_get_precision(void) { return precisionSpeed; }
-void  trackball_set_precision(float precision) { precisionSpeed = precision; }
-bool  trackball_is_scrolling(void) { return scrolling; }
-void  trackball_set_scrolling(bool scroll) { scrolling = scroll; }
-
-bool has_report_changed (report_mouse_t first, report_mouse_t second) {
-    return !(
-        (!first.buttons && first.buttons == second.buttons) &&
-        (!first.x && first.x == second.x) &&
-        (!first.y && first.y == second.y) &&
-        (!first.h && first.h == second.h) &&
-        (!first.v && first.v == second.v) );
-}
-
-
-__attribute__((weak)) void pointing_device_init(void) { trackball_set_rgbw(0x00, 0x00, 0x00, 0x4F); }
-
-void pointing_device_task(void) {
-    static bool     debounce;
-    static uint16_t debounce_timer;
-    uint8_t         state[5] = {};
-    if (i2c_readReg(TRACKBALL_ADDRESS << 1, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) {
-        if (!state[4] && !debounce) {
-            if (scrolling) {
-#ifdef PIMORONI_TRACKBALL_INVERT_X
-                h_offset += mouse_offset(state[2], state[3], 1);
-#else
-                h_offset -= mouse_offset(state[2], state[3], 1);
-#endif
-#ifdef PIMORONI_TRACKBALL_INVERT_Y
-                v_offset += mouse_offset(state[1], state[0], 1);
-#else
-                v_offset -= mouse_offset(state[1], state[0], 1);
-#endif
-            } else {
-#ifdef PIMORONI_TRACKBALL_INVERT_X
-                x_offset -= mouse_offset(state[2], state[3], 5);
-#else
-                x_offset += mouse_offset(state[2], state[3], 5);
-#endif
-#ifdef PIMORONI_TRACKBALL_INVERT_Y
-                y_offset -= mouse_offset(state[1], state[0], 5);
-#else
-                y_offset += mouse_offset(state[1], state[0], 5);
-#endif
-            }
-        } else {
-            if (state[4]) {
-                debounce       = true;
-                debounce_timer = timer_read();
-            }
-        }
-    }
-
-    if (timer_elapsed(debounce_timer) > MOUSE_DEBOUNCE) debounce = false;
-
-    report_mouse_t mouse = pointing_device_get_report();
-
-    trackball_check_click(state[4] & (1 << 7), &mouse);
-
-#ifndef PIMORONI_TRACKBALL_ROTATE
-    update_member(&mouse.x, &x_offset);
-    update_member(&mouse.y, &y_offset);
-    update_member(&mouse.h, &h_offset);
-    update_member(&mouse.v, &v_offset);
-#else
-    update_member(&mouse.x, &y_offset);
-    update_member(&mouse.y, &x_offset);
-    update_member(&mouse.h, &v_offset);
-    update_member(&mouse.v, &h_offset);
-#endif
-    pointing_device_set_report(mouse);
-    if (has_report_changed(mouse, pointing_device_get_report())) {
-        pointing_device_send();
-    }
-}
diff --git a/users/drashna/post_config.h b/users/drashna/post_config.h
new file mode 100644
index 0000000000..7c214b66d0
--- /dev/null
+++ b/users/drashna/post_config.h
@@ -0,0 +1,40 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.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/>.
+ */
+
+#pragma once
+
+// because layouts seem to not be respecting config.h order atm
+#ifdef RGBLIGHT_ENABLE
+#    undef RGBLIGHT_ANIMATIONS
+#    if defined(__AVR__) && (!defined(__AVR_AT90USB1286__) && !defined(RGBLIGHT_ALL_ANIMATIONS))
+#        define RGBLIGHT_EFFECT_BREATHING
+#        define RGBLIGHT_EFFECT_SNAKE
+#        define RGBLIGHT_EFFECT_KNIGHT
+#    else
+#        define RGBLIGHT_EFFECT_BREATHING
+#        define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#        define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#        define RGBLIGHT_EFFECT_SNAKE
+#        define RGBLIGHT_EFFECT_KNIGHT
+#        if defined(RGBLIGHT_ALL_ANIMATIONS)
+#            define RGBLIGHT_EFFECT_CHRISTMAS
+#            define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#            define RGBLIGHT_EFFECT_RGB_TEST
+#            define RGBLIGHT_EFFECT_ALTERNATING
+#        endif
+#        define RGBLIGHT_EFFECT_TWINKLE
+#    endif
+#endif
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c
index ef901226e0..900b6da15e 100644
--- a/users/drashna/process_records.c
+++ b/users/drashna/process_records.c
@@ -19,18 +19,17 @@
 
 uint16_t copy_paste_timer;
 
-__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; }
-
 // Defines actions tor my global custom keycodes. Defined in drashna.h file
 // Then runs the _keymap's record handier if not processed here
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+__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; }
+bool                       process_record_user(uint16_t keycode, keyrecord_t *record) {
     // If console is enabled, it will print the matrix position and status of each key pressed
 #ifdef KEYLOGGER_ENABLE
     uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
 #endif  // KEYLOGGER_ENABLE
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
     process_record_user_oled(keycode, record);
 #endif  // OLED
 
@@ -46,15 +45,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     }
 
     switch (keycode) {
-        case KC_QWERTY ... KC_WORKMAN:
+        case FIRST_DEFAULT_LAYER_KEYCODE ... LAST_DEFAULT_LAYER_KEYCODE:
             if (record->event.pressed) {
                 uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
                 if (!mods) {
-                    set_single_persistent_default_layer(keycode - KC_QWERTY);
+                    set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE);
+#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3)
                 } else if (mods & MOD_MASK_SHIFT) {
-                    set_single_persistent_default_layer(keycode - KC_QWERTY + 4);
+                    set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 4);
+#    if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7)
+
                 } else if (mods & MOD_MASK_CTRL) {
-                    set_single_persistent_default_layer(keycode - KC_QWERTY + 8);
+                    set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 8);
+#    endif
+#endif
                 }
             }
             break;
@@ -79,15 +83,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 #endif
                 }
                 send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY);
-#ifdef RGB_MATRIX_SPLIT_RIGHT
-                send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes"), TAP_CODE_DELAY);
-#    ifndef OLED_DRIVER_ENABLE
-                send_string_with_delay_P(PSTR(" OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY);
-#    endif
+#ifdef CONVERT_TO_PROTON_C
+                send_string_with_delay_P(PSTR(" -e CTPC=yes"), TAP_CODE_DELAY);
 #endif
                 send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
             }
-
             break;
 
         case VRSN:  // Prints firmware version
@@ -202,3 +202,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     }
     return true;
 }
+
+__attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t *record) {}
+void                       post_process_record_user(uint16_t keycode, keyrecord_t *record) { post_process_record_keymap(keycode, record); }
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
index f60e6d7ebc..231480ac59 100644
--- a/users/drashna/process_records.h
+++ b/users/drashna/process_records.h
@@ -17,58 +17,78 @@
 #pragma once
 #include "drashna.h"
 
-#if defined(KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball)
+#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right)
 #    define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
 #else
 #    define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
 #endif
 
 enum userspace_custom_keycodes {
-    VRSN = PLACEHOLDER_SAFE_RANGE,  // Prints QMK Firmware and board info
-    KC_QWERTY,                      // Sets default layer to QWERTY
-    KC_COLEMAK,                     // Sets default layer to COLEMAK
-    KC_DVORAK,                      // Sets default layer to DVORAK
-    KC_WORKMAN,                     // Sets default layer to WORKMAN
-    KC_DIABLO_CLEAR,                // Clears all Diablo Timers
-    KC_MAKE,                        // Run keyboard's customized make command
-    KC_RGB_T,                       // Toggles RGB Layer Indication mode
-    RGB_IDL,                        // RGB Idling animations
-    KC_SECRET_1,                    // test1
-    KC_SECRET_2,                    // test2
-    KC_SECRET_3,                    // test3
-    KC_SECRET_4,                    // test4
-    KC_SECRET_5,                    // test5
-    KC_CCCV,                        // Hold to copy, tap to paste
-    KC_NUKE,                        // NUCLEAR LAUNCH DETECTED!!!
-    UC_FLIP,                        // (ಠ痊ಠ)┻━┻
-    UC_TABL,                        // ┬─┬ノ( º _ ºノ)
-    UC_SHRG,                        // ¯\_(ツ)_/¯
-    UC_DISA,                        // ಠ_ಠ
-    NEW_SAFE_RANGE                  // use "NEWPLACEHOLDER for keymap specific codes
+    VRSN = PLACEHOLDER_SAFE_RANGE,            // Prints QMK Firmware and board info
+    KC_QWERTY,                                // Sets default layer to QWERTY
+    FIRST_DEFAULT_LAYER_KEYCODE = KC_QWERTY,  // Sets default layer to QWERTY
+    KC_COLEMAK_DH,                            // Sets default layer to COLEMAK
+    KC_COLEMAK,                               // Sets default layer to COLEMAK
+    KC_DVORAK,                                // Sets default layer to DVORAK
+    LAST_DEFAULT_LAYER_KEYCODE = KC_DVORAK,   // Sets default layer to WORKMAN
+    KC_DIABLO_CLEAR,                          // Clears all Diablo Timers
+    KC_MAKE,                                  // Run keyboard's customized make command
+    KC_RGB_T,                                 // Toggles RGB Layer Indication mode
+    RGB_IDL,                                  // RGB Idling animations
+    KC_SECRET_1,                              // test1
+    KC_SECRET_2,                              // test2
+    KC_SECRET_3,                              // test3
+    KC_SECRET_4,                              // test4
+    KC_SECRET_5,                              // test5
+    KC_CCCV,                                  // Hold to copy, tap to paste
+    KC_NUKE,                                  // NUCLEAR LAUNCH DETECTED!!!
+    UC_FLIP,                                  // (ಠ痊ಠ)┻━┻
+    UC_TABL,                                  // ┬─┬ノ( º _ ºノ)
+    UC_SHRG,                                  // ¯\_(ツ)_/¯
+    UC_DISA,                                  // ಠ_ಠ
+    NEW_SAFE_RANGE                            // use "NEWPLACEHOLDER for keymap specific codes
 };
 
 bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
+void post_process_record_keymap(uint16_t keycode, keyrecord_t *record);
 
-#define LOWER   MO(_LOWER)
-#define RAISE   MO(_RAISE)
-#define ADJUST  MO(_ADJUST)
-#define TG_MODS OS_TOGG
-#define TG_GAME TG(_GAMEPAD)
-#define TG_DBLO TG(_DIABLO)
-#define OS_LWR  OSL(_LOWER)
-#define OS_RSE  OSL(_RAISE)
-
-#define KC_SEC1 KC_SECRET_1
-#define KC_SEC2 KC_SECRET_2
-#define KC_SEC3 KC_SECRET_3
-#define KC_SEC4 KC_SECRET_4
-#define KC_SEC5 KC_SECRET_5
-
-#define QWERTY  KC_QWERTY
-#define DVORAK  KC_DVORAK
-#define COLEMAK KC_COLEMAK
-#define WORKMAN KC_WORKMAN
+#define LOWER     MO(_LOWER)
+#define RAISE     MO(_RAISE)
+#define ADJUST    MO(_ADJUST)
+#define TG_MODS   OS_TOGG
+#define TG_GAME   TG(_GAMEPAD)
+#define TG_DBLO   TG(_DIABLO)
+#define OS_LWR    OSL(_LOWER)
+#define OS_RSE    OSL(_RAISE)
+
+#define KC_SEC1   KC_SECRET_1
+#define KC_SEC2   KC_SECRET_2
+#define KC_SEC3   KC_SECRET_3
+#define KC_SEC4   KC_SECRET_4
+#define KC_SEC5   KC_SECRET_5
+
+#define QWERTY    KC_QWERTY
+#define DVORAK    KC_DVORAK
+#define COLEMAK   KC_COLEMAK
+#define COLEMAKDH KC_COLEMAK_DH
+
+#define DEFLYR1   FIRST_DEFAULT_LAYER_KEYCODE
+#define DEFLYR2   (FIRST_DEFAULT_LAYER_KEYCODE + 1)
+#define DEFLYR3   (FIRST_DEFAULT_LAYER_KEYCODE + 2)
+#define DEFLYR4   (FIRST_DEFAULT_LAYER_KEYCODE + 3)
+#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3)
+#    define DEFLYR5 (FIRST_DEFAULT_LAYER_KEYCODE + 4)
+#    define DEFLYR6 (FIRST_DEFAULT_LAYER_KEYCODE + 5)
+#    define DEFLYR7 (FIRST_DEFAULT_LAYER_KEYCODE + 6)
+#    define DEFLYR8 (FIRST_DEFAULT_LAYER_KEYCODE + 7)
+#    if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7)
+#        define DEFLYR9  (FIRST_DEFAULT_LAYER_KEYCODE + 8)
+#        define DEFLYR10 (FIRST_DEFAULT_LAYER_KEYCODE + 9)
+#        define DEFLYR11 (FIRST_DEFAULT_LAYER_KEYCODE + 10)
+#        define DEFLYR12 (FIRST_DEFAULT_LAYER_KEYCODE + 11)
+#    endif
+#endif
 
 #define KC_RESET RESET
 #define KC_RST   KC_RESET
diff --git a/users/drashna/rgb_matrix_stuff.c b/users/drashna/rgb_matrix_stuff.c
index 9e9e1e4279..97811092c1 100644
--- a/users/drashna/rgb_matrix_stuff.c
+++ b/users/drashna/rgb_matrix_stuff.c
@@ -20,11 +20,6 @@
 extern led_config_t g_led_config;
 
 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
-#else
-#    define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
-#endif
 
 void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max) {
     HSV hsv = {hue, sat, val};
@@ -34,27 +29,27 @@ void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode
 
     switch (mode) {
         case 1:  // breathing
-        {
-            uint16_t time = scale16by8(g_rgb_timer, speed / 8);
-            hsv.v         = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
-            RGB rgb       = hsv_to_rgb(hsv);
-            for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
-                if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
-                    RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
+            {
+                uint16_t time = scale16by8(g_rgb_timer, speed / 8);
+                hsv.v         = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
+                RGB rgb       = hsv_to_rgb(hsv);
+                for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
+                    if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
+                        RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
+                    }
                 }
+                break;
             }
-            break;
-        }
         default:  // Solid Color
-        {
-            RGB rgb = hsv_to_rgb(hsv);
-            for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
-                if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
-                    RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
+            {
+                RGB rgb = hsv_to_rgb(hsv);
+                for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
+                    if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
+                        RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
+                    }
                 }
+                break;
             }
-            break;
-        }
     }
 }
 
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index 6723ad4bf5..15108bde04 100644
--- a/users/drashna/rgb_stuff.c
+++ b/users/drashna/rgb_stuff.c
@@ -23,106 +23,19 @@
 bool has_initialized;
 
 void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); }
-
-#    ifdef RGBLIGHT_TWINKLE
-static rgblight_fadeout lights[RGBLED_NUM];
-
-/* Handler for fading/twinkling effect */
-void scan_rgblight_fadeout(void) {  // Don't effing change this function .... rgblight_sethsv is supppppper intensive
-    bool litup = false;
-
-    for (uint8_t light_index = 0; light_index < RGBLED_NUM; ++light_index) {
-        if (lights[light_index].enabled && sync_timer_elapsed(lights[light_index].timer) > 10) {
-            rgblight_fadeout *light = &lights[light_index];
-            litup                   = true;
-
-            if (light->life) {
-                light->life -= 1;
-                if (get_highest_layer(layer_state) == 0) {
-                    sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
-                }
-                light->timer = sync_timer_read();
-            } else {
-                if (light->enabled && get_highest_layer(layer_state) == 0) {
-                    rgblight_sethsv_default_helper(light_index);
-                }
-                litup = light->enabled = false;
-            }
-        }
-    }
-    if (litup && get_highest_layer(layer_state) == 0) {
-        rgblight_set();
-    }
+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);
 }
 
-/* Triggers a LED to fade/twinkle.
- * This function handles the selection of the LED and prepres for it to be used.
- */
-void start_rgb_light(void) {
-    uint8_t indices[RGBLED_NUM];
-    uint8_t indices_count  = 0;
-    uint8_t min_life       = 0xFF;
-    uint8_t min_life_index = -1;
-
-    for (uint8_t index = 0; index < RGBLED_NUM; ++index) {
-        if (lights[index].enabled) {
-            if (min_life_index == -1 || lights[index].life < min_life) {
-                min_life       = lights[index].life;
-                min_life_index = index;
-            }
-            continue;
-        }
-
-        indices[indices_count] = index;
-        ++indices_count;
-    }
-
-    uint8_t light_index;
-    if (!indices_count) {
-        light_index = min_life_index;
-    } else {
-        light_index = indices[rand() % indices_count];
-    }
-
-    rgblight_fadeout *light = &lights[light_index];
-    light->enabled          = true;
-    light->timer            = sync_timer_read();
-    light->life             = 0xC0 + rand() % 0x40;
-
-    light->hue = rgblight_get_hue() + (rand() % 0xB4) - 0x54;
-
-    rgblight_sethsv_at(light->hue, 255, light->life, light_index);
-}
-#    endif
-
-bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
-    uint16_t temp_keycode = keycode;
-    // Filter out the actual keycode from MT and LT keys.
-    if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
-        temp_keycode &= 0xFF;
-    }
-
-    switch (temp_keycode) {
-#    ifdef RGBLIGHT_TWINKLE
-        case KC_A ... KC_SLASH:
-        case KC_F1 ... KC_F12:
-        case KC_INSERT ... KC_UP:
-        case KC_KP_SLASH ... KC_KP_DOT:
-        case KC_F13 ... KC_F24:
-        case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
-            if (record->event.pressed) {
-                start_rgb_light();
-            }
-            break;
-#    endif  // RGBLIGHT_TWINKLE
-    }
-    return true;
-}
+bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { return true; }
 
 #    if defined(RGBLIGHT_STARTUP_ANIMATION)
 static bool     is_enabled;
 static bool     is_rgblight_startup;
-static uint8_t  old_hue;
+static HSV      old_hsv;
+static uint8_t  old_mode;
 static uint16_t rgblight_startup_loop_timer;
 #    endif
 
@@ -130,37 +43,35 @@ void keyboard_post_init_rgb_light(void) {
 #    if defined(RGBLIGHT_STARTUP_ANIMATION)
     is_enabled = rgblight_is_enabled();
     if (userspace_config.rgb_layer_change) {
-        rgblight_enable_noeeprom();
-    }
-    if (rgblight_is_enabled()) {
         layer_state_set_rgb_light(layer_state);
-        old_hue = rgblight_get_hue();
-        rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
-        is_rgblight_startup = true;
     }
+    old_hsv  = rgblight_get_hsv();
+    old_mode = rgblight_get_mode();
+    rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+    is_rgblight_startup = true;
 #    endif
-    layer_state_set_rgb_light(layer_state);
+    if (userspace_config.rgb_layer_change) {
+        layer_state_set_rgb_light(layer_state);
+    }
 }
 
 void matrix_scan_rgb_light(void) {
-#    ifdef RGBLIGHT_TWINKLE
-    scan_rgblight_fadeout();
-#    endif  // RGBLIGHT_ENABLE
-
 #    if defined(RGBLIGHT_STARTUP_ANIMATION)
     if (is_rgblight_startup && is_keyboard_master()) {
         if (sync_timer_elapsed(rgblight_startup_loop_timer) > 10) {
             static uint8_t counter;
             counter++;
-            rgblight_sethsv_noeeprom((counter + old_hue) % 255, 255, 255);
+            rgblight_sethsv_noeeprom((counter + old_hsv.h) % 255, 255, 255);
             rgblight_startup_loop_timer = sync_timer_read();
             if (counter == 255) {
                 is_rgblight_startup = false;
-                if (!is_enabled) {
-                    rgblight_disable_noeeprom();
-                }
                 if (userspace_config.rgb_layer_change) {
                     layer_state_set_rgb_light(layer_state);
+                } else {
+                    rgblight_set_hsv_and_mode(old_hsv.h, old_hsv.s, old_hsv.v, old_mode);
+                }
+                if (!is_enabled) {
+                    rgblight_disable_noeeprom();
                 }
             }
         }
@@ -168,19 +79,17 @@ void matrix_scan_rgb_light(void) {
 #    endif
 }
 
-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);
-}
-
 layer_state_t layer_state_set_rgb_light(layer_state_t state) {
 #    ifdef RGBLIGHT_ENABLE
     if (userspace_config.rgb_layer_change) {
         switch (get_highest_layer(state | default_layer_state)) {
-            case _MACROS: // mouse
+            case _MOUSE:  // mouse
                 if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) {
+#        if defined(RGBLIGHT_EFFECT_TWINKLE)
+                    rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5);
+#        else
                     rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3);
+#        endif
                 }
                 break;
             case _MEDIA:
@@ -201,29 +110,17 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) {
             case _ADJUST:
                 rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2);
                 break;
-            case _COLEMAK:
-                rgblight_set_hsv_and_mode(HSV_MAGENTA, RGBLIGHT_MODE_STATIC_LIGHT);
-                break;
-            case _DVORAK:
-                rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, RGBLIGHT_MODE_STATIC_LIGHT);
-                break;
-            case _WORKMAN:
-                rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_STATIC_LIGHT);
-                break;
-            case _NORMAN:
-                rgblight_set_hsv_and_mode(HSV_CORAL, RGBLIGHT_MODE_STATIC_LIGHT);
-                break;
-            case _MALTRON:
-                rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_STATIC_LIGHT);
+            case _DEFAULT_LAYER_1:
+                rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
                 break;
-            case _EUCALYN:
-                rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_STATIC_LIGHT);
+            case _DEFAULT_LAYER_2:
+                rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
                 break;
-            case _CARPLAX:
-                rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_STATIC_LIGHT);
+            case _DEFAULT_LAYER_3:
+                rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
                 break;
-            default:
-                rgblight_set_hsv_and_mode(HSV_CYAN, RGBLIGHT_MODE_STATIC_LIGHT);
+            case _DEFAULT_LAYER_4:
+                rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
                 break;
         }
     }
diff --git a/users/drashna/rgb_stuff.h b/users/drashna/rgb_stuff.h
index 0153adb543..af1acdde71 100644
--- a/users/drashna/rgb_stuff.h
+++ b/users/drashna/rgb_stuff.h
@@ -17,22 +17,9 @@
 #pragma once
 #include "quantum.h"
 
-#if defined(RGBLIGHT_TWINKLE)
-typedef struct {
-    bool     enabled;
-    uint8_t  hue;
-    uint16_t timer;
-    uint8_t  life;
-} rgblight_fadeout;
-#endif
-
 bool          process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record);
 void          keyboard_post_init_rgb_light(void);
 void          matrix_scan_rgb_light(void);
 layer_state_t layer_state_set_rgb_light(layer_state_t state);
 layer_state_t default_layer_state_set_rgb_light(layer_state_t state);
 void          rgblight_sethsv_default_helper(uint8_t index);
-
-#if defined(RGBLIGHT_TWINKLE)
-void scan_rgblight_fadeout(void);
-#endif
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index b79051508b..dbacae1d56 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -2,7 +2,9 @@ SRC += drashna.c \
        process_records.c
 
 ifneq ($(PLATFORM),CHIBIOS)
-    LTO_ENABLE        = yes
+    ifneq ($(strip $(LTO_SUPPORTED)), no)
+        LTO_ENABLE        = yes
+    endif
 endif
 SPACE_CADET_ENABLE    = no
 GRAVE_ESC_ENABLE      = no
@@ -27,9 +29,6 @@ CUSTOM_RGBLIGHT ?= yes
 ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
     ifeq ($(strip $(CUSTOM_RGBLIGHT)), yes)
         SRC += rgb_stuff.c
-        ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes)
-            OPT_DEFS += -DRGBLIGHT_TWINKLE
-        endif
         ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
             OPT_DEFS += -DRGBLIGHT_NOEEPROM
         endif
@@ -65,42 +64,25 @@ ifeq ($(strip $(PROTOCOL)), VUSB)
 endif
 
 CUSTOM_OLED_DRIVER ?= yes
-ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ifeq ($(strip $(OLED_ENABLE)), yes)
     ifeq ($(strip $(CUSTOM_OLED_DRIVER)), yes)
         SRC += oled_stuff.c
+        OPT_DEFS += -DCUSTOM_OLED_DRIVER_CODE
     endif
 endif
 
 ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes)
     POINTING_DEVICE_ENABLE := yes
     OPT_DEFS += -DPIMORONI_TRACKBALL_ENABLE
-    SRC += pimoroni_trackball.c
+    SRC += drivers/sensors/pimoroni_trackball.c
     QUANTUM_LIB_SRC += i2c_master.c
 endif
 
-CUSTOM_SPLIT_TRANSPORT ?= yes
-ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
-    ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
-        ifeq ($(strip $(CUSTOM_SPLIT_TRANSPORT)), yes)
-            SPLIT_TRANSPORT = custom
-            QUANTUM_LIB_SRC += drashna_transport.c
-            OPT_DEFS += -DDRASHNA_CUSTOM_TRANSPORT
-            # Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
-            ifeq ($(PLATFORM),AVR)
-                ifneq ($(NO_I2C),yes)
-                    QUANTUM_LIB_SRC += i2c_master.c \
-                                    i2c_slave.c
-                endif
-            endif
-
-            SERIAL_DRIVER ?= bitbang
-            OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
-            ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
-                QUANTUM_LIB_SRC += serial.c
-            else
-                QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
-            endif
-        endif
+CUSTOM_SPLIT_TRANSPORT_SYNC ?= yes
+ifeq ($(strip $(CUSTOM_SPLIT_TRANSPORT_SYNC)), yes)
+    ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+        QUANTUM_LIB_SRC += transport_sync.c
+        OPT_DEFS += -DCUSTOM_SPLIT_TRANSPORT_SYNC
     endif
 endif
 
diff --git a/users/drashna/tap_dances.h b/users/drashna/tap_dances.h
index 7f73f28036..81e462ce29 100644
--- a/users/drashna/tap_dances.h
+++ b/users/drashna/tap_dances.h
@@ -35,12 +35,10 @@ extern diablo_timer_t diablo_timer[];
 void run_diablo_macro_check(void);
 
 #ifdef TAP_DANCE_ENABLE
-// clang-format off
 enum {
     TD_D3_1 = 0,
     TD_D3_2,
     TD_D3_3,
-    TD_D3_4
+    TD_D3_4,
 };
-// clang-format on
 #endif  // TAP_DANCE_ENABLE
diff --git a/users/drashna/transport_sync.c b/users/drashna/transport_sync.c
new file mode 100644
index 0000000000..fdd596c04c
--- /dev/null
+++ b/users/drashna/transport_sync.c
@@ -0,0 +1,192 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.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/>.
+ */
+
+#include "transport_sync.h"
+#include "transactions.h"
+#include <string.h>
+
+#ifdef UNICODE_ENABLE
+extern unicode_config_t unicode_config;
+#endif
+#ifdef AUDIO_ENABLE
+#    include "audio.h"
+extern bool delayed_tasks_run;
+#endif
+#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
+extern bool tap_toggling;
+#endif
+#ifdef SWAP_HANDS_ENABLE
+extern bool swap_hands;
+#endif
+extern userspace_config_t userspace_config;
+
+__attribute__((aligned(8))) typedef struct {
+    bool audio_enable;
+    bool audio_clicky_enable;
+    bool tap_toggling;
+    bool unicode_mode;
+    bool swap_hands;
+} user_runtime_config_t;
+
+uint16_t transport_keymap_config    = 0;
+uint32_t transport_userspace_config = 0;
+
+user_runtime_config_t user_state;
+
+void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+    if (initiator2target_buffer_size == sizeof(user_state)) {
+        memcpy(&user_state, initiator2target_buffer, initiator2target_buffer_size);
+    }
+}
+void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+    if (initiator2target_buffer_size == sizeof(transport_keymap_config)) {
+        memcpy(&transport_keymap_config, initiator2target_buffer, initiator2target_buffer_size);
+    }
+}
+void user_config_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+    if (initiator2target_buffer_size == sizeof(transport_userspace_config)) {
+        memcpy(&transport_userspace_config, initiator2target_buffer, initiator2target_buffer_size);
+    }
+}
+
+void keyboard_post_init_transport_sync(void) {
+    // Register keyboard state sync split transaction
+    transaction_register_rpc(RPC_ID_USER_STATE_SYNC, user_state_sync);
+    transaction_register_rpc(RPC_ID_USER_KEYMAP_SYNC, user_keymap_sync);
+    transaction_register_rpc(RPC_ID_USER_CONFIG_SYNC, user_config_sync);
+}
+
+void user_transport_update(void) {
+    if (is_keyboard_master()) {
+        transport_keymap_config    = keymap_config.raw;
+        transport_userspace_config = userspace_config.raw;
+#ifdef AUDIO_ENABLE
+        user_state.audio_enable        = is_audio_on();
+        user_state.audio_clicky_enable = is_clicky_on();
+#endif
+#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
+        user_state.tap_toggling = tap_toggling;
+#endif
+#ifdef SWAP_HANDS_ENABLE
+        user_state.swap_hands = swap_hands;
+#endif
+
+    } else {
+        keymap_config.raw    = transport_keymap_config;
+        userspace_config.raw = transport_userspace_config;
+#ifdef UNICODE_ENABLE
+        unicode_config.input_mode = user_state.unicode_mode;
+#endif
+#ifdef AUDIO_ENABLE
+        if (delayed_tasks_run) {
+            if (user_state.audio_enable != is_audio_on()) {
+                if (user_state.audio_enable) {
+                    audio_on();
+                } else {
+                    audio_off();
+                }
+            }
+            if (user_state.audio_clicky_enable != is_clicky_on()) {
+                if (user_state.audio_clicky_enable) {
+                    clicky_on();
+                } else {
+                    clicky_off();
+                }
+            }
+        }
+#endif
+#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
+        tap_toggling = user_state.tap_toggling;
+#endif
+#ifdef SWAP_HANDS_ENABLE
+        swap_hands = user_state.swap_hands;
+#endif
+    }
+}
+
+void user_transport_sync(void) {
+    if (is_keyboard_master()) {
+        // Keep track of the last state, so that we can tell if we need to propagate to slave
+        static user_runtime_config_t last_user_state;
+        static uint16_t              last_keymap = 0;
+        static uint32_t              last_config = 0;
+        static uint32_t              last_sync[3];
+        bool                         needs_sync = false;
+
+        // Check if the state values are different
+        if (memcmp(&user_state, &last_user_state, sizeof(user_state))) {
+            needs_sync = true;
+            memcpy(&last_user_state, &user_state, sizeof(user_state));
+        }
+        // Send to slave every 500ms regardless of state change
+        if (timer_elapsed32(last_sync[0]) > 250) {
+            needs_sync = true;
+        }
+
+        // Perform the sync if requested
+        if (needs_sync) {
+            if (transaction_rpc_send(RPC_ID_USER_STATE_SYNC, sizeof(user_state), &user_state)) {
+                last_sync[0] = timer_read32();
+            }
+            needs_sync = false;
+        }
+
+        // Check if the state values are different
+        if (memcmp(&transport_keymap_config, &last_keymap, sizeof(transport_keymap_config))) {
+            needs_sync = true;
+            memcpy(&last_keymap, &transport_keymap_config, sizeof(transport_keymap_config));
+        }
+
+        // Send to slave every 500ms regardless of state change
+        if (timer_elapsed32(last_sync[1]) > 250) {
+            needs_sync = true;
+        }
+
+        // Perform the sync if requested
+        if (needs_sync) {
+            if (transaction_rpc_send(RPC_ID_USER_KEYMAP_SYNC, sizeof(transport_keymap_config), &transport_keymap_config)) {
+                last_sync[1] = timer_read32();
+            }
+            needs_sync = false;
+        }
+
+        // Check if the state values are different
+        if (memcmp(&user_state, &last_config, sizeof(transport_userspace_config))) {
+            needs_sync = true;
+            memcpy(&last_config, &user_state, sizeof(transport_userspace_config));
+        }
+
+        // Send to slave every 500ms regardless of state change
+        if (timer_elapsed32(last_sync[2]) > 250) {
+            needs_sync = true;
+        }
+
+        // Perform the sync if requested
+        if (needs_sync) {
+            if (transaction_rpc_send(RPC_ID_USER_CONFIG_SYNC, sizeof(transport_userspace_config), &transport_userspace_config)) {
+                last_sync[2] = timer_read32();
+            }
+        }
+    }
+}
+
+void housekeeping_task_user(void) {
+    // Update kb_state so we can send to slave
+    user_transport_update();
+
+    // Data sync from master to slave
+    user_transport_sync();
+}
diff --git a/users/drashna/pimoroni_trackball.h b/users/drashna/transport_sync.h
index a30fb0bb8c..e2b3eae76b 100644
--- a/users/drashna/pimoroni_trackball.h
+++ b/users/drashna/transport_sync.h
@@ -1,3 +1,4 @@
+
 /* Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
  *
  * This program is free software: you can redistribute it and/or modify
@@ -16,20 +17,6 @@
 
 #pragma once
 
-#include "quantum.h"
-#include "pointing_device.h"
-
-#ifndef TRACKBALL_ADDRESS
-#    define TRACKBALL_ADDRESS 0x0A
-#endif
-#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE)
-#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ)
-
-void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
-void trackball_check_click(bool pressed, report_mouse_t *mouse);
-void trackball_register_button(bool pressed, enum mouse_buttons button);
+#include "drashna.h"
 
-float trackball_get_precision(void);
-void  trackball_set_precision(float precision);
-bool  trackball_is_scrolling(void);
-void  trackball_set_scrolling(bool scroll);
+void keyboard_post_init_transport_sync(void);
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h
index be8162dfa3..8ac252926e 100644
--- a/users/drashna/wrappers.h
+++ b/users/drashna/wrappers.h
@@ -60,120 +60,120 @@ NOTE: These are all the same length.  If you do a search/replace
 #define ______________COLEMAK_MOD_DH_R3____________       KC_K,    KC_H,    KC_COMM, KC_DOT,  KC_SLASH
 
 
-#define _________________DVORAK_L1_________________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
-#define _________________DVORAK_L2_________________        KC_A,    KC_O,    KC_E,   KC_U,     KC_I
-#define _________________DVORAK_L3_________________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
+#define _________________DVORAK_L1_________________       KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
+#define _________________DVORAK_L2_________________       KC_A,    KC_O,    KC_E,   KC_U,     KC_I
+#define _________________DVORAK_L3_________________       KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
 
-#define _________________DVORAK_R1_________________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
-#define _________________DVORAK_R2_________________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH
-#define _________________DVORAK_R3_________________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
+#define _________________DVORAK_R1_________________       KC_F,    KC_G,    KC_C,    KC_R,    KC_L
+#define _________________DVORAK_R2_________________       KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH
+#define _________________DVORAK_R3_________________       KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
 
 
-#define ________________DVORAK_AU_L1_______________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
-#define ________________DVORAK_AU_L2_______________        KC_O,    KC_A,    KC_E,   KC_I,     KC_U
-#define ________________DVORAK_AU_L3_______________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
+#define ________________DVORAK_AU_L1_______________       KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
+#define ________________DVORAK_AU_L2_______________       KC_O,    KC_A,    KC_E,   KC_I,     KC_U
+#define ________________DVORAK_AU_L3_______________       KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
 
-#define ________________DVORAK_AU_R1_______________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
-#define ________________DVORAK_AU_R2_______________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH
-#define ________________DVORAK_AU_R3_______________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
+#define ________________DVORAK_AU_R1_______________       KC_F,    KC_G,    KC_C,    KC_R,    KC_L
+#define ________________DVORAK_AU_R2_______________       KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH
+#define ________________DVORAK_AU_R3_______________       KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
 
-#define _________________WORKMAN_L1________________        KC_Q,    KC_D,    KC_R,   KC_W,     KC_B
-#define _________________WORKMAN_L2________________        KC_A,    KC_S,    KC_H,   KC_T,     KC_G
-#define _________________WORKMAN_L3________________        KC_Z,    KC_X,    KC_M,   KC_C,     KC_V
+#define _________________WORKMAN_L1________________       KC_Q,    KC_D,    KC_R,   KC_W,     KC_B
+#define _________________WORKMAN_L2________________       KC_A,    KC_S,    KC_H,   KC_T,     KC_G
+#define _________________WORKMAN_L3________________       KC_Z,    KC_X,    KC_M,   KC_C,     KC_V
 
-#define _________________WORKMAN_R1________________        KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN
-#define _________________WORKMAN_R2________________        KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    KC_QUOT
-#define _________________WORKMAN_R3________________        KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLSH
+#define _________________WORKMAN_R1________________       KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN
+#define _________________WORKMAN_R2________________       KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    KC_QUOT
+#define _________________WORKMAN_R3________________       KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLSH
 
 
-#define _________________NORMAN_L1_________________        KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
-#define _________________NORMAN_L2_________________        KC_A,    KC_S,    KC_E,    KC_T,    KC_G
-#define _________________NORMAN_L3_________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+#define _________________NORMAN_L1_________________       KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
+#define _________________NORMAN_L2_________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_G
+#define _________________NORMAN_L3_________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
 
-#define _________________NORMAN_R1_________________        KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN
-#define _________________NORMAN_R2_________________        KC_Y,    KC_N,    KC_I,    KC_O,    KC_U,    KC_QUOT
-#define _________________NORMAN_R3_________________        KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH
+#define _________________NORMAN_R1_________________       KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN
+#define _________________NORMAN_R2_________________       KC_Y,    KC_N,    KC_I,    KC_O,    KC_U,    KC_QUOT
+#define _________________NORMAN_R3_________________       KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH
 
 
-#define _________________MALTRON_L1________________        KC_Q,    KC_P,    KC_Y,    KC_C,    KC_B
-#define _________________MALTRON_L2________________        KC_A,    KC_N,    KC_I,    KC_S,    KC_F
-#define _________________MALTRON_L3________________        KC_SCLN, KC_SLSH, KC_J,    KC_G,    KC_COMM
+#define _________________MALTRON_L1________________       KC_Q,    KC_P,    KC_Y,    KC_C,    KC_B
+#define _________________MALTRON_L2________________       KC_A,    KC_N,    KC_I,    KC_S,    KC_F
+#define _________________MALTRON_L3________________       KC_SCLN, KC_SLSH, KC_J,    KC_G,    KC_COMM
 
-#define _________________MALTRON_R1________________        KC_V,    KC_M,    KC_U,    KC_Z,    KC_L
-#define _________________MALTRON_R2________________        KC_D,    KC_T,    KC_D,    KC_O,    KC_R,    KC_QUOT
-#define _________________MALTRON_R3________________        KC_DOT,  KC_W,    KC_K,    KC_MINS, KC_X
+#define _________________MALTRON_R1________________       KC_V,    KC_M,    KC_U,    KC_Z,    KC_L
+#define _________________MALTRON_R2________________       KC_D,    KC_T,    KC_D,    KC_O,    KC_R,    KC_QUOT
+#define _________________MALTRON_R3________________       KC_DOT,  KC_W,    KC_K,    KC_MINS, KC_X
 
 
-#define _________________EUCALYN_L1________________        KC_Q,    KC_W,    KC_COMM, KC_DOT,  KC_SCLN
-#define _________________EUCALYN_L2________________        KC_A,    KC_O,    KC_E,    KC_I,    KC_U
-#define _________________EUCALYN_L3________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_F
+#define _________________EUCALYN_L1________________       KC_Q,    KC_W,    KC_COMM, KC_DOT,  KC_SCLN
+#define _________________EUCALYN_L2________________       KC_A,    KC_O,    KC_E,    KC_I,    KC_U
+#define _________________EUCALYN_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_F
 
-#define _________________EUCALYN_R1________________        KC_M,    KC_R,    KC_D,    KC_Y,    KC_P
-#define _________________EUCALYN_R2________________        KC_G,    KC_T,    KC_K,    KC_S,    KC_N,    KC_QUOT
-#define _________________EUCALYN_R3________________        KC_B,    KC_H,    KC_J,    KC_L,    KC_SLSH
+#define _________________EUCALYN_R1________________       KC_M,    KC_R,    KC_D,    KC_Y,    KC_P
+#define _________________EUCALYN_R2________________       KC_G,    KC_T,    KC_K,    KC_S,    KC_N,    KC_QUOT
+#define _________________EUCALYN_R3________________       KC_B,    KC_H,    KC_J,    KC_L,    KC_SLSH
 
 // Qwerty-like
-#define _____________CARPLAX_QFMLWY_L1_____________        KC_Q,    KC_F,    KC_M,    KC_L,    KC_W
-#define _____________CARPLAX_QFMLWY_L2_____________        KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define _____________CARPLAX_QFMLWY_L3_____________        KC_Z,    KC_V,    KC_G,    KC_C,    KC_X
+#define _____________CARPLAX_QFMLWY_L1_____________       KC_Q,    KC_F,    KC_M,    KC_L,    KC_W
+#define _____________CARPLAX_QFMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
+#define _____________CARPLAX_QFMLWY_L3_____________       KC_Z,    KC_V,    KC_G,    KC_C,    KC_X
 
-#define _____________CARPLAX_QFMLWY_R1_____________        KC_Y,    KC_U,    KC_O,    KC_B,    KC_J
-#define _____________CARPLAX_QFMLWY_R2_____________        KC_I,    KC_A,    KC_E,    KC_H,    KC_SCLN, KC_QUOT
-#define _____________CARPLAX_QFMLWY_R3_____________        KC_P,    KC_K,    KC_COMM, KC_DOT,  KC_SLSH
+#define _____________CARPLAX_QFMLWY_R1_____________       KC_Y,    KC_U,    KC_O,    KC_B,    KC_J
+#define _____________CARPLAX_QFMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_H,    KC_SCLN, KC_QUOT
+#define _____________CARPLAX_QFMLWY_R3_____________       KC_P,    KC_K,    KC_COMM, KC_DOT,  KC_SLSH
 
 // Colemak like
-#define _____________CARPLAX_QGMLWB_L1_____________        KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
-#define _____________CARPLAX_QGMLWB_L2_____________        KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define _____________CARPLAX_QGMLWB_L3_____________        KC_Z,    KC_X,    KC_C,    KC_F,    KC_J
+#define _____________CARPLAX_QGMLWB_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
+#define _____________CARPLAX_QGMLWB_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
+#define _____________CARPLAX_QGMLWB_L3_____________       KC_Z,    KC_X,    KC_C,    KC_F,    KC_J
 
-#define _____________CARPLAX_QGMLWB_R1_____________        KC_B,    KC_Y,    KC_U,    KC_V,    KC_SCLN
-#define _____________CARPLAX_QGMLWB_R2_____________        KC_I,    KC_A,    KC_E,    KC_O,    KC_H,    KC_QUOT
-#define _____________CARPLAX_QGMLWB_R3_____________        KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
+#define _____________CARPLAX_QGMLWB_R1_____________       KC_B,    KC_Y,    KC_U,    KC_V,    KC_SCLN
+#define _____________CARPLAX_QGMLWB_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H,    KC_QUOT
+#define _____________CARPLAX_QGMLWB_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
 
 // colemak like, zxcv fixed
-#define _____________CARPLAX_QGMLWY_L1_____________        KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
-#define _____________CARPLAX_QGMLWY_L2_____________        KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define _____________CARPLAX_QGMLWY_L3_____________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_J
+#define _____________CARPLAX_QGMLWY_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
+#define _____________CARPLAX_QGMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
+#define _____________CARPLAX_QGMLWY_L3_____________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_J
 
-#define _____________CARPLAX_QGMLWY_R1_____________        KC_Y,    KC_F,    KC_U,    KC_B,    KC_SCLN
-#define _____________CARPLAX_QGMLWY_R2_____________        KC_I,    KC_A,    KC_E,    KC_O,    KC_H,    KC_QUOT
-#define _____________CARPLAX_QGMLWY_R3_____________        KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
+#define _____________CARPLAX_QGMLWY_R1_____________       KC_Y,    KC_F,    KC_U,    KC_B,    KC_SCLN
+#define _____________CARPLAX_QGMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H,    KC_QUOT
+#define _____________CARPLAX_QGMLWY_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
 
 // teeheehee
-#define _____________CARPLAX_TNWCLR_L1_____________        KC_T,    KC_N,    KC_W,    KC_C,    KC_L
-#define _____________CARPLAX_TNWCLR_L2_____________        KC_S,    KC_K,    KC_J,    KC_X,    KC_G
-#define _____________CARPLAX_TNWCLR_L3_____________        KC_E,    KC_O,    KC_D,    KC_I,    KC_A
+#define _____________CARPLAX_TNWCLR_L1_____________       KC_T,    KC_N,    KC_W,    KC_C,    KC_L
+#define _____________CARPLAX_TNWCLR_L2_____________       KC_S,    KC_K,    KC_J,    KC_X,    KC_G
+#define _____________CARPLAX_TNWCLR_L3_____________       KC_E,    KC_O,    KC_D,    KC_I,    KC_A
 
-#define _____________CARPLAX_TNWCLR_R1_____________        KC_R,    KC_B,    KC_F,    KC_M,    KC_H
-#define _____________CARPLAX_TNWCLR_R2_____________        KC_P,    KC_Q,    KC_Z,    KC_V,    KC_SCLN, KC_QUOT
-#define _____________CARPLAX_TNWCLR_R3_____________        KC_U,    KC_Y,    KC_COMM, KC_DOT,  KC_SLSH
+#define _____________CARPLAX_TNWCLR_R1_____________       KC_R,    KC_B,    KC_F,    KC_M,    KC_H
+#define _____________CARPLAX_TNWCLR_R2_____________       KC_P,    KC_Q,    KC_Z,    KC_V,    KC_SCLN, KC_QUOT
+#define _____________CARPLAX_TNWCLR_R3_____________       KC_U,    KC_Y,    KC_COMM, KC_DOT,  KC_SLSH
 
 
-#define _________________WHITE_R1__________________        KC_V,    KC_Y,    KC_D,    KC_COMM, KC_QUOT
-#define _________________WHITE_R2__________________        KC_A,    KC_T,    KC_H,    KC_E,    KC_B
-#define _________________WHITE_R3__________________        KC_P,    KC_K,    KC_G,    KC_W,    KC_Q
+#define _________________WHITE_R1__________________       KC_V,    KC_Y,    KC_D,    KC_COMM, KC_QUOT
+#define _________________WHITE_R2__________________       KC_A,    KC_T,    KC_H,    KC_E,    KC_B
+#define _________________WHITE_R3__________________       KC_P,    KC_K,    KC_G,    KC_W,    KC_Q
 
-#define _________________WHITE_L1__________________        KC_INT1, KC_J,    KC_M,    KC_L,    KC_U
-#define _________________WHITE_L2__________________        KC_MINS, KC_C,    KC_S,    KC_N,    KC_O,    KC_I
-#define _________________WHITE_L3__________________        KC_X,    KC_R,    KC_F,    KC_DOT,  KC_Z
+#define _________________WHITE_L1__________________       KC_INT1, KC_J,    KC_M,    KC_L,    KC_U
+#define _________________WHITE_L2__________________       KC_MINS, KC_C,    KC_S,    KC_N,    KC_O,    KC_I
+#define _________________WHITE_L3__________________       KC_X,    KC_R,    KC_F,    KC_DOT,  KC_Z
 
 
-#define _________________HALMAK_L1_________________        KC_W,    KC_L,    KC_R,    KC_B,    KC_Z
-#define _________________HALMAK_L2_________________        KC_S,    KC_H,    KC_N,    KC_T,    KC_COMM
-#define _________________HALMAK_L3_________________        KC_F,    KC_M,    KC_V,    KC_V,    KC_SLASH
+#define _________________HALMAK_L1_________________       KC_W,    KC_L,    KC_R,    KC_B,    KC_Z
+#define _________________HALMAK_L2_________________       KC_S,    KC_H,    KC_N,    KC_T,    KC_COMM
+#define _________________HALMAK_L3_________________       KC_F,    KC_M,    KC_V,    KC_V,    KC_SLASH
 
-#define _________________HALMAK_R1_________________        KC_SCLN, KC_Q,    KC_U,    KC_D,    KC_J
-#define _________________HALMAK_R2_________________        KC_DOT,  KC_A,    KC_E,    KC_O,    KC_I,    KC_QUOTE
-#define _________________HALMAK_R3_________________        KC_G,    KC_P,    KC_X,    KC_K,    KC_Y
+#define _________________HALMAK_R1_________________       KC_SCLN, KC_Q,    KC_U,    KC_D,    KC_J
+#define _________________HALMAK_R2_________________       KC_DOT,  KC_A,    KC_E,    KC_O,    KC_I,    KC_QUOTE
+#define _________________HALMAK_R3_________________       KC_G,    KC_P,    KC_X,    KC_K,    KC_Y
 
 
-#define _________________HALMAK_L1_________________        KC_W,    KC_L,    KC_R,    KC_B,    KC_Z
-#define _________________HALMAK_L2_________________        KC_S,    KC_H,    KC_N,    KC_T,    KC_COMM
-#define _________________HALMAK_L3_________________        KC_F,    KC_M,    KC_V,    KC_V,    KC_SLASH
+#define _________________HALMAK_L1_________________       KC_W,    KC_L,    KC_R,    KC_B,    KC_Z
+#define _________________HALMAK_L2_________________       KC_S,    KC_H,    KC_N,    KC_T,    KC_COMM
+#define _________________HALMAK_L3_________________       KC_F,    KC_M,    KC_V,    KC_V,    KC_SLASH
 
-#define _________________HALMAK_R1_________________        KC_SCLN, KC_Q,    KC_U,    KC_D,    KC_J
-#define _________________HALMAK_R2_________________        KC_DOT,  KC_A,    KC_E,    KC_O,    KC_I,    KC_QUOTE
-#define _________________HALMAK_R3_________________        KC_G,    KC_P,    KC_X,    KC_K,    KC_Y
+#define _________________HALMAK_R1_________________       KC_SCLN, KC_Q,    KC_U,    KC_D,    KC_J
+#define _________________HALMAK_R2_________________       KC_DOT,  KC_A,    KC_E,    KC_O,    KC_I,    KC_QUOTE
+#define _________________HALMAK_R3_________________       KC_G,    KC_P,    KC_X,    KC_K,    KC_Y
 
 
 #define ________________NUMBER_LEFT________________       KC_1,    KC_2,    KC_3,    KC_4,    KC_5
@@ -181,35 +181,35 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _________________FUNC_LEFT_________________       KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5
 #define _________________FUNC_RIGHT________________       KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10
 
-#define ___________________BLANK___________________        _______, _______, _______, _______, _______
+#define ___________________BLANK___________________       _______, _______, _______, _______, _______
 
 
-#define _________________LOWER_L1__________________        KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC
-#define _________________LOWER_L2__________________        _________________FUNC_LEFT_________________
-#define _________________LOWER_L3__________________        _________________FUNC_RIGHT________________
+#define _________________LOWER_L1__________________       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC
+#define _________________LOWER_L2__________________       _________________FUNC_LEFT_________________
+#define _________________LOWER_L3__________________       _________________FUNC_RIGHT________________
 
-#define _________________LOWER_R1__________________        KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
-#define _________________LOWER_R2__________________        _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
-#define _________________LOWER_R3__________________        _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+#define _________________LOWER_R1__________________       KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
+#define _________________LOWER_R2__________________       _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
+#define _________________LOWER_R3__________________       _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
 
 
 
-#define _________________RAISE_L1__________________        ________________NUMBER_LEFT________________
-#define _________________RAISE_L2__________________        ___________________BLANK___________________
-#define _________________RAISE_L3__________________        ___________________BLANK___________________
+#define _________________RAISE_L1__________________       ________________NUMBER_LEFT________________
+#define _________________RAISE_L2__________________       ___________________BLANK___________________
+#define _________________RAISE_L3__________________       ___________________BLANK___________________
 
-#define _________________RAISE_R1__________________        ________________NUMBER_RIGHT_______________
-#define _________________RAISE_R2__________________        _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC
-#define _________________RAISE_R3__________________        _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
+#define _________________RAISE_R1__________________       ________________NUMBER_RIGHT_______________
+#define _________________RAISE_R2__________________       _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC
+#define _________________RAISE_R3__________________       _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
 
 
 
-#define _________________ADJUST_L1_________________        RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
-#define _________________ADJUST_L2_________________        MU_TOG , CK_TOGG, AU_ON,   AU_OFF,  CG_NORM
-#define _________________ADJUST_L3_________________        RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
+#define _________________ADJUST_L1_________________       RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
+#define _________________ADJUST_L2_________________       MU_TOG , CK_TOGG, AU_ON,   AU_OFF,  CG_NORM
+#define _________________ADJUST_L3_________________       RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
 
-#define _________________ADJUST_R1_________________        KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
-#define _________________ADJUST_R2_________________        CG_SWAP, QWERTY,  COLEMAK, DVORAK,  WORKMAN
-#define _________________ADJUST_R3_________________        MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
+#define _________________ADJUST_R1_________________       KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
+#define _________________ADJUST_R2_________________       CG_SWAP, DEFLYR1, DEFLYR2, DEFLYR3, DEFLYR4
+#define _________________ADJUST_R3_________________       MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
 
 // clang-format on
diff --git a/users/dshields/rules.mk b/users/dshields/rules.mk
index 462649289b..00e18521be 100644
--- a/users/dshields/rules.mk
+++ b/users/dshields/rules.mk
@@ -5,7 +5,6 @@ COMMAND_ENABLE        = no  # Commands for debug and configuration
 CONSOLE_ENABLE        = no  # Console for debug(+400)
 EXTRAKEY_ENABLE       = no
 SLEEP_LED_ENABLE      = no  # Breathing sleep LED during USB suspend
-API_SYSEX_ENABLE      = no
 SPACE_CADET_ENABLE    = no
 LEADER_ENABLE         = no
 DYNAMIC_MACRO_ENABLE  = yes
diff --git a/users/edvorakjp/edvorakjp.c b/users/edvorakjp/edvorakjp.c
index d0cd106fff..c44d8bb440 100644
--- a/users/edvorakjp/edvorakjp.c
+++ b/users/edvorakjp/edvorakjp.c
@@ -7,7 +7,7 @@ void matrix_init_user(void) {
 
 __attribute__((weak)) void matrix_init_keymap() {}
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
     state = update_tri_layer_state(state, L_EDVORAKJP_LOWER, L_EDVORAKJP_RAISE, L_EDVORAKJP_ADJUST);
     return layer_state_set_keymap(state);
 }
diff --git a/users/edvorakjp/edvorakjp.h b/users/edvorakjp/edvorakjp.h
index 5f20762c65..93cd9851b7 100644
--- a/users/edvorakjp/edvorakjp.h
+++ b/users/edvorakjp/edvorakjp.h
@@ -67,7 +67,7 @@ enum tap_dance_code {
 // base
 void     matrix_init_user(void);
 void     matrix_init_keymap(void);
-uint32_t layer_state_set_user(uint32_t state);
+layer_state_t layer_state_set_user(layer_state_t state);
 uint32_t layer_state_set_keymap(uint32_t state);
 bool     process_record_user(uint16_t keycode, keyrecord_t *record);
 bool     process_record_keymap(uint16_t keycode, keyrecord_t *record);
diff --git a/users/ericgebhart/base_layers.h b/users/ericgebhart/base_layers.h
index caf0810574..fd88a40aef 100644
--- a/users/ericgebhart/base_layers.h
+++ b/users/ericgebhart/base_layers.h
@@ -87,7 +87,7 @@
 
 // the bottom rows  for keyboards on bepo.
 // bepo on bepo - not enough space to go around....
-#define ___BOTTOM_LEFT_BP___  LCTL(BP_C),  BP_ECRC,  LCTL(BP_V),  KC_LEFT, KC_RIGHT
+#define ___BOTTOM_LEFT_BP___  LCTL(BP_C),  BP_ECIR,  LCTL(BP_V),  KC_LEFT, KC_RIGHT
 #define ___BOTTOM_RIGHT_BP___ KC_UP,  KC_DOWN,  DB_BACKSLASH,  BP_CCED,  BP_PERC
 
 // for dvorak on bepo
diff --git a/users/ericgebhart/core_keys.h b/users/ericgebhart/core_keys.h
index 035f740016..a71d905749 100644
--- a/users/ericgebhart/core_keys.h
+++ b/users/ericgebhart/core_keys.h
@@ -231,7 +231,7 @@ enum {
 #define BP_SFT_T_E SFT_T(BP_E)
 #define BP_SFT_T_M SFT_T(BP_M)
 
-#define BP_SFT_T_ECRC SFT_T(BP_ECRC)
+#define BP_SFT_T_ECRC SFT_T(BP_ECIR)
 #define BP_SFT_T_CCED SFT_T(BP_CCED)
 #define BP_LT_SYMB_COMM LT(SYMB,BP_COMM)
 
diff --git a/users/ericgebhart/core_keysets.h b/users/ericgebhart/core_keysets.h
index ffe02192f6..5baf02ccf6 100644
--- a/users/ericgebhart/core_keysets.h
+++ b/users/ericgebhart/core_keysets.h
@@ -111,33 +111,33 @@
 
 // Bepo on fr-bepo software layer
 // for bepo on bepo
-/* BP_DLR,   BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, */
-#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQOT,  BP_LGIL,   BP_RGIL,   BP_LPRN,   BP_RPRN
+/* BP_DLR,   BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, */
+#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO,  BP_LDAQ,   BP_RDAQ,   BP_LPRN,   BP_RPRN
 /*   KC_DEL,  BP_AT,   BP_PLUS,  BP_MINS, BP_SLSH,     BP_ASTR, BP_EQL, */
-#define ___SYMBOL_BEPO_R___    BP_AT,    BP_PLUS,  BP_MINS,   BP_SLASH,  BP_ASTR /* BP_EQL,  BP_PERC */
+#define ___SYMBOL_BEPO_R___    BP_AT,    BP_PLUS,  BP_MINS,   BP_SLSH,  BP_ASTR /* BP_EQL,  BP_PERC */
 
-#define ___BEPO_FR_L1___             BP_B,        BP_ECUT, BP_P,           BP_O,          BP_EGRV
+#define ___BEPO_FR_L1___             BP_B,        BP_EACU, BP_P,           BP_O,          BP_EGRV
 #define ___BEPO_FR_L2___             BP_SFT_T_A,  BP_LT_KP_U,    BP_LT_SYMB_I,   BP_LT_MDIA_E,  BP_COMM
-#define ___BEPO_FR_L3___ /*BP_ECRC*/ BP_AGRV,     BP_Y,    BP_X,           BP_DOT,        BP_K
+#define ___BEPO_FR_L3___ /*BP_ECIR*/ BP_AGRV,     BP_Y,    BP_X,           BP_DOT,        BP_K
 
-#define ___BEPO_FR_R1___  /* BP_DCRC,*/  BP_V, BP_D,  BP_L,    BP_J,  BP_Z
+#define ___BEPO_FR_R1___  /* BP_DCIR,*/  BP_V, BP_D,  BP_L,    BP_J,  BP_Z
 #define ___BEPO_FR_R2___  /* BP_C,   */  BP_T, BP_LT_SYMB_S,    BP_LT_MDIA_R,  BP_LT_KP_N, BP_SFT_T_M  //BP_CCED
-#define ___BEPO_FR_R3___                 BP_APOS,    BP_Q,    BP_G,  BP_H, BP_F //BP_SFT_T_W
+#define ___BEPO_FR_R3___                 BP_QUOT,    BP_Q,    BP_G,  BP_H, BP_F //BP_SFT_T_W
 
-/* BP_DLR,   BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, */
-/*   KC_TAB,   BP_B,    BP_ECUT, BP_P,    BP_O,    BP_EGRV, KC_BSPC, */
+/* BP_DLR,   BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, */
+/*   KC_TAB,   BP_B,    BP_EACU, BP_P,    BP_O,    BP_EGRV, KC_BSPC, */
 /*   KC_LSFT,  BP_A,    BP_U,    BP_I,    BP_E,    BP_COMM, */
 /*   KC_LCTRL, BP_AGRV, BP_Y,    BP_X,    BP_DOT,  BP_K,    KC_ENT, */
-/*   ESC_FN,   BP_ECRC, KC_LGUI, KC_LALT, SPC_RALT, */
+/*   ESC_FN,   BP_ECIR, KC_LGUI, KC_LALT, SPC_RALT, */
 /*   TT(SWAP), KC_MNXT, */
 /*   KC_MPLY, */
 /*   TT(FN), TT(NUMS), KC_MPRV, */
 
 /* /\* right hand *\/ */
 /*   KC_DEL,  BP_AT,   BP_PLUS,  BP_MINS, BP_SLSH,     BP_ASTR, BP_EQL, */
-/*   KC_BSPC, BP_DCRC, BP_V,     BP_D,    BP_L,        BP_J,    BP_Z, */
+/*   KC_BSPC, BP_DCIR, BP_V,     BP_D,    BP_L,        BP_J,    BP_Z, */
 /*   BP_C,    BP_T,     BP_S,    BP_R,        BP_N,    M_RSFT, */
-/*   KC_ENT,  BP_APOS, BP_Q,     BP_G,    BP_H,        BP_F,    W_RCTL, */
+/*   KC_ENT,  BP_QUOT, BP_Q,     BP_G,    BP_H,        BP_F,    W_RCTL, */
 
 
 /*******************************************************************/
@@ -183,7 +183,7 @@
 #define ___KEYPAD_4_ALT___ KC_P0, KC_DOT, KC_PENT, KC_PENT
 
 // For Bepo
-#define ___KEYPAD_1_BP___ DB_7,  DB_8,    DB_9,     BP_SLASH
+#define ___KEYPAD_1_BP___ DB_7,  DB_8,    DB_9,     BP_SLSH
 #define ___KEYPAD_2_BP___ DB_4,  DB_5,    DB_6,     BP_ASTR
 #define ___KEYPAD_3_BP___ DB_1,  DB_2,    DB_3,     DB_MINUS
 #define ___KEYPAD_4_BP___ DB_0,  DB_DOT,  DB_EQL,   BP_PLUS
@@ -225,9 +225,9 @@
 
 // SYMBOLS FOR BEPO
 // The top row.  Bepo has symbols not numbers. Numbers are the shifted values.
-#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQOT,  BP_LGIL,   BP_RGIL,   BP_LPRN,   BP_RPRN
+#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO,  BP_LDAQ,   BP_RDAQ,   BP_LPRN,   BP_RPRN
 /*   KC_DEL,  BP_AT,   BP_PLUS,  BP_MINS, BP_SLSH,     BP_ASTR, BP_EQL, */
-#define ___SYMBOL_BEPO_R___    BP_AT,    BP_PLUS,  BP_MINS,   BP_SLASH,  BP_ASTR /* BP_EQL,  BP_PERC */
+#define ___SYMBOL_BEPO_R___    BP_AT,    BP_PLUS,  BP_MINS,   BP_SLSH,  BP_ASTR /* BP_EQL,  BP_PERC */
 
 // An arrangement for the left hand with a focus on the ()[]{}s.
 #define ___SYMBOLS_1_BP___ KC_EXLM,  BP_AT,    DB_LCBR,  DB_RCBR,  DB_PIPE
@@ -237,7 +237,7 @@
 // A larger 6 column arrangement for the left hand, A merge of dvorak and the above.
 #define ___SYMBOLS6_1_BP___  DB_GRV,  DB_LESS, DB_GRTR, DB_LCBR,  DB_RCBR,  DB_HASH
 #define ___SYMBOLS6_2_BP___  KC_AMPR, BP_AT,   BP_ASTR, DB_LPRN,  DB_RPRN,  BP_PERC
-#define ___SYMBOLS6_3_BP___  BP_DLR,  BP_DQOT, DB_QUOT, DB_LBRC,  DB_RBRC,  KC_COLON
+#define ___SYMBOLS6_3_BP___  BP_DLR,  BP_DQUO, DB_QUOT, DB_LBRC,  DB_RBRC,  KC_COLON
 #define ___SYMBOLS6_4_BP___  ___2___, DB_TILD, DB_DOT,  KC_EXLM, DB_SCOLON
 
 #define ___SYMBOLS5_4_BP___  ___, DB_TILD, DB_DOT,  KC_EXLM, DB_SCOLON
@@ -248,9 +248,9 @@
 #define ___SYMPAD_1_BP___  DB_GRV,  BP_AMPR, BP_ASTR, DB_LCBR,  BP_PLUS,  DB_PIPE
 #define ___SYMPAD_2_BP___  DB_TILD, BP_DLR,  BP_PERC, DB_CIRC,  BP_ASTR,  DB_GRV
 #define ___SYMPAD_3_BP___  ___,     BP_EXLM, BP_AT,   DB_HASH,  BP_MINS,  BP_SLSH
-#define ___SYMPAD_4_BP___  ___,     DB_RCBR, DB_DOT,  BP_EQL,   BP_MINUS, DB_BACKSLASH
+#define ___SYMPAD_4_BP___  ___,     DB_RCBR, DB_DOT,  BP_EQL,   BP_MINS, DB_BACKSLASH
 
-#define ___5_SYMPAD_4_BP___  DB_RCBR, DB_DOT,  BP_EQL,   BP_MINUS, DB_BACKSLASH
+#define ___5_SYMPAD_4_BP___  DB_RCBR, DB_DOT,  BP_EQL,   BP_MINS, DB_BACKSLASH
 
 // Parts are parts.
 // MOUSE, ARROW and MEDIA KEY SETS
diff --git a/users/ericgebhart/ericgebhart.c b/users/ericgebhart/ericgebhart.c
index abb87899b7..d34563865d 100644
--- a/users/ericgebhart/ericgebhart.c
+++ b/users/ericgebhart/ericgebhart.c
@@ -86,25 +86,25 @@ static void switch_default_layer(uint8_t layer) {
 // reasnably sized array without difficulties. The macro is for the constant declarations
 // the function is for when we use it.
 const uint8_t key_translations[][2][2] = {
-  [GR(DB_1)] =      {{BP_DQOT, MOD_LSFT},      {BP_DCRC, MOD_LSFT}},
-  [GR(DB_2)] =      {{BP_LGIL, MOD_LSFT},      {BP_AT, MOD_NONE}},
-  [GR(DB_3)] =      {{BP_RGIL, MOD_LSFT},      {BP_DLR, MOD_LSFT}},
+  [GR(DB_1)] =      {{BP_DQUO, MOD_LSFT},      {BP_DCIR, MOD_LSFT}},
+  [GR(DB_2)] =      {{BP_LDAQ, MOD_LSFT},      {BP_AT, MOD_NONE}},
+  [GR(DB_3)] =      {{BP_RDAQ, MOD_LSFT},      {BP_DLR, MOD_LSFT}},
   [GR(DB_4)] =      {{BP_LPRN, MOD_LSFT},      {BP_DLR, MOD_NONE}},
   [GR(DB_5)] =      {{BP_RPRN, MOD_LSFT},      {BP_PERC, MOD_NONE}},
   [GR(DB_6)] =      {{BP_AT, MOD_LSFT},        {BP_AT, MOD_BIT(KC_RALT)}},
   [GR(DB_7)] =      {{BP_PLUS, MOD_LSFT},      {BP_P, MOD_BIT(KC_RALT)}},
   [GR(DB_8)] =      {{BP_MINS, MOD_LSFT},      {BP_ASTR, MOD_NONE}},
-  [GR(DB_9)] =      {{BP_SLASH, MOD_LSFT},     {BP_LPRN, MOD_NONE}},
+  [GR(DB_9)] =      {{BP_SLSH, MOD_LSFT},     {BP_LPRN, MOD_NONE}},
   [GR(DB_0)] =      {{BP_ASTR, MOD_LSFT},      {BP_RPRN, MOD_NONE}},
   [GR(DB_GRV)] =    {{BP_PERC, MOD_LSFT},      {BP_K, MOD_BIT(KC_RALT)}},
   [GR(DB_SCOLON)] = {{BP_COMM, MOD_LSFT},      {BP_DOT, MOD_LSFT}},
-  [GR(DB_SLASH)] =  {{BP_SLASH, MOD_NONE},     {BP_APOS, MOD_LSFT}},
+  [GR(DB_SLASH)] =  {{BP_SLSH, MOD_NONE},     {BP_QUOT, MOD_LSFT}},
   [GR(DB_BACKSLASH)] = {{BP_AGRV, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
   [GR(DB_EQL)] =    {{BP_EQL, MOD_NONE},       {BP_PLUS, MOD_NONE}},
-  [GR(DB_COMM)] =   {{BP_COMMA, MOD_NONE},     {BP_LGIL, MOD_BIT(KC_RALT)}},
-  [GR(DB_DOT)] =    {{BP_DOT, MOD_NONE},       {BP_RGIL, MOD_BIT(KC_RALT)}},
-  [GR(DB_QUOT)] =   {{BP_APOS, MOD_NONE},      {BP_DQOT, MOD_NONE}},
-  [GR(DB_MINUS)] =  {{BP_MINUS, MOD_NONE},     {KC_SPC, MOD_BIT(KC_RALT)}},
+  [GR(DB_COMM)] =   {{BP_COMM, MOD_NONE},     {BP_LDAQ, MOD_BIT(KC_RALT)}},
+  [GR(DB_DOT)] =    {{BP_DOT, MOD_NONE},       {BP_RDAQ, MOD_BIT(KC_RALT)}},
+  [GR(DB_QUOT)] =   {{BP_QUOT, MOD_NONE},      {BP_DQUO, MOD_NONE}},
+  [GR(DB_MINUS)] =  {{BP_MINS, MOD_NONE},     {KC_SPC, MOD_BIT(KC_RALT)}},
   [GR(DB_LPRN)] =   {{BP_LPRN, MOD_NONE},      {BP_LPRN, MOD_BIT(KC_RALT)}},
   [GR(DB_RPRN)] =   {{BP_RPRN, MOD_NONE},      {BP_RPRN, MOD_BIT(KC_RALT)}},
   [GR(DB_LBRC)] =   {{BP_Y, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
@@ -116,8 +116,8 @@ const uint8_t key_translations[][2][2] = {
   [GR(DB_PIPE)] =   {{BP_B, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
   [GR(DB_TILD)] =   {{BP_K, MOD_BIT(KC_RALT)}, {BP_K, MOD_BIT(KC_RALT)}},
   [GR(DB_CIRC)] =   {{BP_AT, MOD_BIT(KC_RALT)}, {BP_AT, MOD_BIT(KC_RALT)}},
-  [GR(DB_LESS)] =   {{BP_LGIL, MOD_BIT(KC_RALT)}, {BP_LGIL, MOD_BIT(KC_RALT)}},
-  [GR(DB_GRTR)] =   {{BP_RGIL, MOD_BIT(KC_RALT)}, {BP_RGIL, MOD_BIT(KC_RALT)}},
+  [GR(DB_LESS)] =   {{BP_LDAQ, MOD_BIT(KC_RALT)}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
+  [GR(DB_GRTR)] =   {{BP_RDAQ, MOD_BIT(KC_RALT)}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
 };
 
 
diff --git a/users/ericgebhart/rules.mk b/users/ericgebhart/rules.mk
index 70017a5950..698f6131ed 100755
--- a/users/ericgebhart/rules.mk
+++ b/users/ericgebhart/rules.mk
@@ -9,7 +9,6 @@ KEY_LOCK_ENABLE  = yes # Enable the KC_LOCK key
 TAP_DANCE_ENABLE = yes # Enable the tap dance feature.
 CONSOLE_ENABLE   = no  # Console for debug
 
-BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 UNICODE_ENABLE   = no
 SLEEP_LED_ENABLE = no
-API_SYSEX_ENABLE = no
diff --git a/users/gordon/rules.mk b/users/gordon/rules.mk
index 06e671a635..c282f00284 100644
--- a/users/gordon/rules.mk
+++ b/users/gordon/rules.mk
@@ -1,4 +1,3 @@
 TAP_DANCE_ENABLE = yes
 SRC += gordon.c
 
-# BOOTMAGIC_ENABLE = full
diff --git a/users/issmirnov/rules.mk b/users/issmirnov/rules.mk
index 93ec21b01b..d96083f7d1 100644
--- a/users/issmirnov/rules.mk
+++ b/users/issmirnov/rules.mk
@@ -19,7 +19,7 @@ NKRO_ENABLE = no # note: also needs FORCE_NKRO in config.h
 # Disable unused features to save on space
 # https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
 MOUSEKEY_ENABLE   = no # 2000 bytes
-BOOTMAGIC_ENABLE  = no
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 COMMAND_ENABLE    = no # https://beta.docs.qmk.fm/features/feature_command
 UNICODE_ENABLE    = no  # Unicode
 SWAP_HANDS_ENABLE = no  # Allow swapping hands of keyboard
diff --git a/users/jdelkins/rules.mk b/users/jdelkins/rules.mk
index 76d391d700..075aab7d3b 100644
--- a/users/jdelkins/rules.mk
+++ b/users/jdelkins/rules.mk
@@ -12,4 +12,4 @@ users/jdelkins/secrets.h: users/jdelkins/secrets.h.gpg
 	gpg -d $< >$@
 endif
 
-BOOTMAGIC_ENABLE = no
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
diff --git a/users/jonavin/config.h b/users/jonavin/config.h
index 4f4568f700..440d222df0 100644
--- a/users/jonavin/config.h
+++ b/users/jonavin/config.h
@@ -26,5 +26,5 @@
 
 #ifdef RGB_MATRIX_ENABLE
     #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
-    #define RGB_DISABLE_WHEN_USB_SUSPENDED true
+#    define RGB_DISABLE_WHEN_USB_SUSPENDED
 #endif
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c
index 72aca9fb8c..3fdf5a4ca9 100644
--- a/users/konstantin/konstantin.c
+++ b/users/konstantin/konstantin.c
@@ -97,7 +97,7 @@ uint32_t layer_state_set_keymap(uint32_t state) {
     return state;
 }
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
     state = layer_state_set_keymap(state);
 
 #ifdef LAYER_NUMPAD
diff --git a/users/kuchosauronad0/kuchosauronad0.c b/users/kuchosauronad0/kuchosauronad0.c
index 6c38d0f106..a8f17b08ee 100644
--- a/users/kuchosauronad0/kuchosauronad0.c
+++ b/users/kuchosauronad0/kuchosauronad0.c
@@ -1,5 +1,5 @@
 /*
-Copyright 2019 Andre Poley <andre.poley@mailbox.org> 
+Copyright 2019 Andre Poley <andre.poley@mailbox.org>
 
 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
@@ -123,7 +123,7 @@ uint32_t layer_state_set_keymap (uint32_t state) {
 
 // on layer change, no matter where the change was initiated
 // Then runs keymap's layer change check
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
   state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
 #ifdef RGBLIGHT_ENABLE
   state = layer_state_set_rgb(state);
diff --git a/users/losinggeneration/rules.mk b/users/losinggeneration/rules.mk
index 295367fbca..41d6f91670 100644
--- a/users/losinggeneration/rules.mk
+++ b/users/losinggeneration/rules.mk
@@ -2,7 +2,6 @@
 # Only enable things here that are generic to all keyboards. A yes or no here
 # will override keyboard/keymap specific values
 #
-#BOOTMAGIC_ENABLE = no    # Virtual DIP switch configuration(+1000)
 #COMMAND_ENABLE   = no    # Commands for debug and configuration
 #CONSOLE_ENABLE   = no    # Console for debug(+400)
 EXTRAKEY_ENABLE  = yes   # Audio control and System control(+450)
diff --git a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk
index 7eb39e1082..41273a9a62 100644
--- a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk
+++ b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk
@@ -2,7 +2,7 @@
 #   change to "no" to disable the options, or define them in the Makefile in 
 #   the appropriate keymap folder that will get included automatically
 #
-BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 MOUSEKEY_ENABLE = yes       # Mouse keys
 EXTRAKEY_ENABLE = yes       # Audio control and System control
 CONSOLE_ENABLE = no         # Console for debug
diff --git a/users/mtdjr/mtdjr.c b/users/mtdjr/mtdjr.c
index c31b077b46..9c6c26bc86 100644
--- a/users/mtdjr/mtdjr.c
+++ b/users/mtdjr/mtdjr.c
@@ -136,7 +136,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   return true;
 };
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
   switch (biton32(state)) {
     case _RAISE:
       #ifdef RGBLIGHT_ENABLE
diff --git a/users/ninjonas/oled.c b/users/ninjonas/oled.c
index a3514f54f6..1d88c30579 100644
--- a/users/ninjonas/oled.c
+++ b/users/ninjonas/oled.c
@@ -2,7 +2,7 @@
 #include <stdio.h>
 #include "ninjonas.h"
 
-#if defined(OLED_DRIVER_ENABLE) & !defined(KEYBOARD_kyria_rev1)
+#if defined(OLED_ENABLE) & !defined(KEYBOARD_kyria_rev1)
 
 static uint32_t oled_timer = 0;
 
@@ -49,16 +49,16 @@ void render_layer_state(void) {
   bool adjust = layer_state_is(_ADJUST);
   bool numpad = layer_state_is(_NUMPAD);
 
-  if(lower){ 
-    oled_write_P(PSTR(" Lower "), true); 
-  } else if(raise){ 
-    oled_write_P(PSTR(" Raise "), true); 
-  } else if(adjust){ 
-      oled_write_P(PSTR(" Adjust "), true); 
+  if(lower){
+    oled_write_P(PSTR(" Lower "), true);
+  } else if(raise){
+    oled_write_P(PSTR(" Raise "), true);
+  } else if(adjust){
+      oled_write_P(PSTR(" Adjust "), true);
   } else if(numpad) {
-      oled_write_P(PSTR(" Numpad "), true); 
-  } else { 
-    oled_write_P(PSTR(" Default"), false); 
+      oled_write_P(PSTR(" Numpad "), true);
+  } else {
+    oled_write_P(PSTR(" Default"), false);
   }
 }
 
diff --git a/users/ninjonas/process_records.c b/users/ninjonas/process_records.c
index a3b8417913..c298227e51 100644
--- a/users/ninjonas/process_records.c
+++ b/users/ninjonas/process_records.c
@@ -6,7 +6,7 @@ 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; }
 
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 __attribute__((weak))
 bool process_record_oled(uint16_t keycode, keyrecord_t *record) { return true; }
 #endif
@@ -110,7 +110,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   }
 
   return process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
-         #ifdef OLED_DRIVER_ENABLE
+         #ifdef OLED_ENABLE
          && process_record_oled(keycode, record)
          #endif
          ; // Close return
diff --git a/users/ninjonas/process_records.h b/users/ninjonas/process_records.h
index 2e69ca2163..5b901a1659 100644
--- a/users/ninjonas/process_records.h
+++ b/users/ninjonas/process_records.h
@@ -25,6 +25,6 @@ enum custom_keycodes {
 
 bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 bool process_record_oled(uint16_t keycode, keyrecord_t *record);
 #endif
diff --git a/users/ninjonas/rules.mk b/users/ninjonas/rules.mk
index a5cd0fdd9c..7ff8f24b9e 100644
--- a/users/ninjonas/rules.mk
+++ b/users/ninjonas/rules.mk
@@ -1,4 +1,4 @@
-BOOTMAGIC_ENABLE = no       # Disable Boot Magic (https://beta.docs.qmk.fm/features/feature_bootmagic)
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
 EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
 TAP_DANCE_ENABLE = yes      # Enable Tap Dance.
diff --git a/users/pvinis/pvinis.c b/users/pvinis/pvinis.c
index 31c3023e83..71f9210aec 100644
--- a/users/pvinis/pvinis.c
+++ b/users/pvinis/pvinis.c
@@ -10,7 +10,7 @@ float song_test[][2]       = SONG(QWERTY_SOUND);
 #endif
 
 // SYMBOL + SYSCTL = KBCTL
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
     uint32_t intermediate_state = update_tri_layer_state(state, LR_SYMBOL, LR_SYSCTL, LR_KBCTL);
     intermediate_state          = layer_state_set_user_keymap(intermediate_state);
     return intermediate_state;
diff --git a/users/riblee/riblee.c b/users/riblee/riblee.c
index 6e548f1d8d..6e6a7c23c6 100644
--- a/users/riblee/riblee.c
+++ b/users/riblee/riblee.c
@@ -173,7 +173,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     return true;
 };
 
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 
 static char receive_buffer[128] = {};
 static uint8_t receive_buffer_length = 0;
@@ -227,4 +227,4 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
 
 #endif
 
-#endif
\ No newline at end of file
+#endif
diff --git a/users/ridingqwerty/rules.mk b/users/ridingqwerty/rules.mk
index 153e5ff905..93b88068ed 100644
--- a/users/ridingqwerty/rules.mk
+++ b/users/ridingqwerty/rules.mk
@@ -1,7 +1,7 @@
 SRC += ridingqwerty.c \
        process_records.c
 
-BOOTMAGIC_ENABLE  = lite
+BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
 CONSOLE_ENABLE    = no
 COMMAND_ENABLE    = no
 UNICODE_ENABLE    = no # "yes" in Atreus default keymap, blocking UNICODEMAP_ENABLE
diff --git a/users/romus/romus.c b/users/romus/romus.c
index 35b524f941..f707bb8843 100644
--- a/users/romus/romus.c
+++ b/users/romus/romus.c
@@ -72,7 +72,7 @@ __attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) { }
 // Set RGBLIGHT state depending on layer
 void rgblight_change( uint8_t this_layer ) {
     // Enable RGB light; will not work without this
-	//rgblight_enable_noeeprom();	
+	//rgblight_enable_noeeprom();
 	// Change RGB light
     switch ( this_layer ) {
         case _DV:
@@ -83,21 +83,21 @@ void rgblight_change( uint8_t this_layer ) {
             // Do yellow for alternate
 			rgblight_enable_noeeprom();
             rgblight_sethsv_noeeprom( 60,255,255);
-			
+
 
             break;
         case _GA:
             // Do purple for game
 			rgblight_enable_noeeprom();
             rgblight_sethsv_noeeprom(285,255,255);
-			
+
 
             break;
         case _NU:
             // Do azure for number
 			rgblight_enable_noeeprom();
             rgblight_sethsv_noeeprom(186,200,255);
-			
+
 
             break;
         case _SE:
@@ -105,27 +105,27 @@ void rgblight_change( uint8_t this_layer ) {
 			rgblight_enable_noeeprom();
 
             rgblight_sethsv_noeeprom( 16,255,255);
-			
+
             break;
         case _MO:
             // Do green for mouse
 			rgblight_enable_noeeprom();
             rgblight_sethsv_noeeprom(120,255,255);
-			
+
 
             break;
         case _MU:
             // Do orange for music
-			
+
 			rgblight_enable_noeeprom();
             rgblight_sethsv_noeeprom( 39,255,255);
-			
+
             break;
         default:
             // Something went wrong
 			rgblight_enable_noeeprom();
             rgblight_sethsv_noeeprom(  0,255,255);
-			
+
             break;
     }
 }
@@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             }
             return false;
             break;
-#endif 
+#endif
 
         // Lock functionality: These layers are locked if the LOCKED buttons are
         // pressed. Otherwise, they are momentary toggles
@@ -225,7 +225,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             }
             return false;
             break;
-            
+
         // Layer switches with sound
         case K_GAMES:
             if (record->event.pressed) {
@@ -546,7 +546,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 |*-----LAYER CHANGE-----*|
 \*----------------------*/
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
 
     state = layer_state_set_keymap (state);
 #ifdef RGBLIGHT_ENABLE
@@ -554,4 +554,4 @@ uint32_t layer_state_set_user(uint32_t state) {
     rgblight_change( biton32(state) );
 #endif
     return state;
-}
\ No newline at end of file
+}
diff --git a/users/romus/rules.mk b/users/romus/rules.mk
index 12bbabb020..32a5ab0923 100644
--- a/users/romus/rules.mk
+++ b/users/romus/rules.mk
@@ -10,14 +10,12 @@ ifndef BLUETOOTH_ENABLE
 	BLUETOOTH_ENABLE = no 	# No bluetooth
 endif
 COMMAND_ENABLE = no			# Some bootmagic thing i dont use
-BOOTMAGIC_ENABLE = no 		# Access to EEPROM settings, not needed
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 CONSOLE_ENABLE = no			# Allows console output with a command
 SLEEP_LED_ENABLE = no  		# Breathes LED's when computer is asleep. Untested.
 NKRO_ENABLE = no 			# Default is 6KRO which is plenty
 MIDI_ENABLE = no 			# Untested feature
 KEY_LOCK_ENABLE = no 		# Allows locking any key. Not used
-API_SYSEX_ENABLE = no 		# Allows OS to send signals.
-
 
 # Disabling this makes it compile, i dont know why
 # VARIABLE_TRACE = no 		# Allows debugging variables
diff --git a/users/sethBarberee/sethBarberee.c b/users/sethBarberee/sethBarberee.c
index 536f3f921b..c5fceee68d 100644
--- a/users/sethBarberee/sethBarberee.c
+++ b/users/sethBarberee/sethBarberee.c
@@ -58,7 +58,7 @@ void keyboard_post_init_user(void)
 __attribute__((weak)) void suspend_power_down_keymap(void) {}
 
 void suspend_power_down_user(void) {
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
     oled_off();
 #endif
     suspend_power_down_keymap();
diff --git a/users/sigul/sigul.c b/users/sigul/sigul.c
index 0995ca7360..16bcd411d9 100644
--- a/users/sigul/sigul.c
+++ b/users/sigul/sigul.c
@@ -40,13 +40,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     case IT_APDQ:
       if (record->event.pressed){
         if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
-          register_code16(IT_DQOT);
+          register_code16(IT_DQUO);
         } else {
-          register_code16(IT_APOS);
+          register_code16(IT_QUOT);
         }
       } else {
-        unregister_code16(IT_DQOT);
-        unregister_code16(IT_APOS);
+        unregister_code16(IT_DQUO);
+        unregister_code16(IT_QUOT);
         }
       return false;
       break;
@@ -55,13 +55,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       if (record->event.pressed){
         if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
           unregister_code16(KC_LSFT);
-          register_code16(IT_LESS);
+          register_code16(IT_LABK);
 	  register_code16(KC_LSFT);
         } else {
           register_code16(IT_COMM);
         }
       } else {
-        unregister_code16(IT_LESS);
+        unregister_code16(IT_LABK);
         unregister_code16(IT_COMM);
       }
       return false;
@@ -70,12 +70,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     case IT_DTMR:
       if (record->event.pressed){
         if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
-          register_code16(IT_MORE);
+          register_code16(IT_RABK);
         } else {
           register_code16(IT_DOT);
         }
       } else {
-        unregister_code16(IT_MORE);
+        unregister_code16(IT_RABK);
         unregister_code16(IT_DOT);
       }
       return false;
@@ -84,12 +84,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     case IT_SLQS:
       if (record->event.pressed){
         if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
-          register_code16(IT_QST);
+          register_code16(IT_QUES);
         } else {
           register_code16(IT_SLSH);
         }
       } else {
-        unregister_code16(IT_QST);
+        unregister_code16(IT_QUES);
         unregister_code16(IT_SLSH);
       }
       return false;
diff --git a/users/sigul/sigul.h b/users/sigul/sigul.h
index 6adc670638..8f806017cc 100644
--- a/users/sigul/sigul.h
+++ b/users/sigul/sigul.h
@@ -15,10 +15,10 @@ enum userspace_layers {
 enum userspace_custom_keycodes {
   QWERTY = SAFE_RANGE,
   // custom keycodes for an Italian ANSI layout with accented vowels
-  IT_CMLS, // IT_COMM and IT_LESS when combined with shift
-  IT_DTMR, // IT_DOT and IT_MORE when combined with shift
-  IT_SLQS, // IT_SLSH and IT_QST when combined with shift
-  IT_APDQ, // IT_APO and IT_DQOT when combined with shift
+  IT_CMLS, // IT_COMM and IT_LABK when combined with shift
+  IT_DTMR, // IT_DOT and IT_RABK when combined with shift
+  IT_SLQS, // IT_SLSH and IT_QUES when combined with shift
+  IT_APDQ, // IT_APO and IT_DQUO when combined with shift
   IT_SCCL, // IT_SMCL and IT_COLN when combined with shift
   SECRET0,
   SECRET1,
diff --git a/users/snowe/oled_setup.c b/users/snowe/oled_setup.c
index b3e04df458..3d21ea9f0a 100644
--- a/users/snowe/oled_setup.c
+++ b/users/snowe/oled_setup.c
@@ -16,7 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 
 #    include QMK_KEYBOARD_H
 #    include "quantum.h"
@@ -138,4 +138,4 @@ void oled_task_user(void) {
     }
 }
 
-#endif  // OLED_DRIVER_ENABLE
+#endif  // OLED_ENABLE
diff --git a/users/snowe/oled_setup.h b/users/snowe/oled_setup.h
index 031ce6bd08..7281dcd766 100644
--- a/users/snowe/oled_setup.h
+++ b/users/snowe/oled_setup.h
@@ -18,7 +18,7 @@
 #pragma once
 
 #include "quantum.h"
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 #    include "oled_driver.h"
 #    define OLED_RENDER_WPM_COUNTER " WPM: "
 #endif
@@ -27,4 +27,4 @@
 #endif
 #ifdef OCEAN_DREAM_ENABLE
 #    include "ocean_dream.h"
-#endif
\ No newline at end of file
+#endif
diff --git a/users/snowe/readme_ocean_dream.md b/users/snowe/readme_ocean_dream.md
index ca15dd47cd..688afc8998 100644
--- a/users/snowe/readme_ocean_dream.md
+++ b/users/snowe/readme_ocean_dream.md
@@ -41,7 +41,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 ```
 4. In your `rules.mk` to make it easier to turn the animation on/off, add
 ```makefile
-ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ifeq ($(strip $(OLED_ENABLE)), yes)
     #... your code here...
 
     ifdef OCEAN_DREAM_ENABLE
@@ -59,7 +59,8 @@ endif
 
 You're done! Now you can enable **Ocean Dream** by simply turning on the OLED feature
 ```makefile
-OLED_DRIVER_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
 ```
 
 And if you want to disable it without turning off the OLED Driver you can simply set 
diff --git a/users/snowe/rules.mk b/users/snowe/rules.mk
index a6e152c1cf..f188c90229 100644
--- a/users/snowe/rules.mk
+++ b/users/snowe/rules.mk
@@ -1,6 +1,6 @@
 
 
-ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ifeq ($(strip $(OLED_ENABLE)), yes)
     SRC += oled_setup.c
 
 	ifdef OCEAN_DREAM_ENABLE
diff --git a/users/snowe/snowe.h b/users/snowe/snowe.h
index 4453b26469..21764ca507 100644
--- a/users/snowe/snowe.h
+++ b/users/snowe/snowe.h
@@ -35,7 +35,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#if defined(RGB_MATRIX_ENABLE)
 //#    include "rgb_matrix_stuff.h"
 //#endif
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 #    include "oled_setup.h"
 #endif
 
diff --git a/users/spacebarracecar/spacebarracecar.c b/users/spacebarracecar/spacebarracecar.c
index bbd864aa93..3141b8758e 100644
--- a/users/spacebarracecar/spacebarracecar.c
+++ b/users/spacebarracecar/spacebarracecar.c
@@ -178,11 +178,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     }
     return false;
   case CU_AE:
-    UML(DE_AE)
+    UML(DE_ADIA)
   case CU_OE:
-    UML(DE_OE)
+    UML(DE_ODIA)
   case CU_UE:
-    UML(DE_UE)
+    UML(DE_UDIA)
   case CU_SS:
     if(record->event.pressed) {
       timer_timeout();
@@ -291,9 +291,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     }
     return false;
   case CU_COMM:
-    SHIFT_NO(DE_COMM, DE_LESS)
+    SHIFT_NO(DE_COMM, DE_LABK)
   case CU_DOT:
-    SHIFT_NORM(DE_DOT, DE_LESS)
+    SHIFT_NORM(DE_DOT, DE_LABK)
   case CU_SLSH:
     SHIFT_ALL(DE_7, DE_SS)
   case CU_SCLN:
@@ -315,7 +315,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   case CU_RBRC:
     SHIFT_ALGR(DE_9, DE_0)
   case CU_BSLS:
-    SHIFT_ALGR(DE_SS, DE_LESS)
+    SHIFT_ALGR(DE_SS, DE_LABK)
   case CU_Z:
     CTRL(DE_Z, KC_Z)
   case CU_Y:
diff --git a/users/spidey3/config.h b/users/spidey3/config.h
index 7062fde030..f5f5e07f0f 100644
--- a/users/spidey3/config.h
+++ b/users/spidey3/config.h
@@ -1,7 +1,7 @@
 #pragma once
 
-#define LED_DISABLE_WHEN_USB_SUSPENDED true
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true
+#define LED_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
 #define RGBLIGHT_LAYERS
 #define RGBLIGHT_MAX_LAYERS 17
 #define RGBLIGHT_LAYER_BLINK
diff --git a/users/spidey3/rules.mk b/users/spidey3/rules.mk
index bd378f545e..69327038b7 100644
--- a/users/spidey3/rules.mk
+++ b/users/spidey3/rules.mk
@@ -1,4 +1,4 @@
-BOOTMAGIC_ENABLE = lite
+BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
 CONSOLE_ENABLE = yes   # Console for debug
 BACKLIGHT_ENABLE = no  # Enable keyboard backlight functionality
 LTO_ENABLE = yes
diff --git a/users/spotpuff/rules.mk b/users/spotpuff/rules.mk
index 2790548373..7b4abdbc1b 100644
--- a/users/spotpuff/rules.mk
+++ b/users/spotpuff/rules.mk
@@ -1 +1 @@
-BOOTMAGIC_ENABLE = no
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
diff --git a/users/stanrc85/layer_rgb.c b/users/stanrc85/layer_rgb.c
index 58f17489a1..6d57198f3b 100644
--- a/users/stanrc85/layer_rgb.c
+++ b/users/stanrc85/layer_rgb.c
@@ -4,7 +4,7 @@ void matrix_init_user(void) {
   rgblight_setrgb(0xFF, 0x00, 0x00);
 };
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
   switch (biton32(state)) {
     case 0:
       rgblight_setrgb (0xFF, 0x00, 0x00);
diff --git a/users/talljoe/rules.mk b/users/talljoe/rules.mk
index 42ffb411a9..632e725b71 100644
--- a/users/talljoe/rules.mk
+++ b/users/talljoe/rules.mk
@@ -13,4 +13,4 @@ TAP_DANCE_ENABLE=yes
 CONSOLE_ENABLE=no
 COMMAND_ENABLE=no
 DYNAMIC_KEYMAP_ENABLE=no
-BOOTMAGIC_ENABLE=full
+BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
diff --git a/users/talljoe/talljoe.h b/users/talljoe/talljoe.h
index f151bde685..cdb01a9744 100644
--- a/users/talljoe/talljoe.h
+++ b/users/talljoe/talljoe.h
@@ -92,6 +92,7 @@ enum layers {
 #define MLT_E     LT(_NUM, KC_E)
 
 #ifndef SWAP_HANDS_ENABLE
+#undef SH_T
 #define SH_T
 #endif
 
diff --git a/users/tominabox1/config.h b/users/tominabox1/config.h
index 2a8c1e943d..004f58ab53 100644
--- a/users/tominabox1/config.h
+++ b/users/tominabox1/config.h
@@ -31,7 +31,7 @@
 // RGB_Matrix settings
 #ifdef RGB_MATRIX_ENABLE
   #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-  #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+  #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
   #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
   #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
   #define RGB_MATRIX_HUE_STEP 8
diff --git a/users/tominabox1/rules.mk b/users/tominabox1/rules.mk
index 22b6a858f4..160dcce7b9 100644
--- a/users/tominabox1/rules.mk
+++ b/users/tominabox1/rules.mk
@@ -5,13 +5,14 @@
 CONSOLE_ENABLE = no
 TAP_DANCE_ENABLE = yes
 NKRO_ENABLE = yes
-BOOTMAGIC_ENABLE = full      # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
 
 ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
 RGB_MATRIX_ENABLE = yes
 EXTRAFLAGS += -flto
 BOOTLOADER = qmk-dfu
-OLED_DRIVER_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
 endif
 
 ifeq ($(strip $(KEYBOARD)), lazydesigners/dimple)
diff --git a/users/tominabox1/tominabox1.c b/users/tominabox1/tominabox1.c
index d2e9e12581..e48959be9d 100644
--- a/users/tominabox1/tominabox1.c
+++ b/users/tominabox1/tominabox1.c
@@ -126,7 +126,7 @@ layer_state_t layer_state_set_keymap (layer_state_t state) {
   return state;
 }
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
     state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
     switch (biton32(state)) {
         case _LOWER:
@@ -172,10 +172,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   #endif
 
     if (record->event.pressed) {
-      #ifdef OLED_DRIVER_ENABLE
+      #ifdef OLED_ENABLE
         oled_timer = timer_read();
         oled_on();
-        #endif // OLED_DRIVER_ENABLE
+        #endif // OLED_ENABLE
     switch (keycode) {
             case KC_BBB:
                 if (record->event.pressed) {
@@ -193,7 +193,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 }
 #ifdef KEYBOARD_crkbd_rev1
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
 void render_logo(void) {
     static const char PROGMEM logo[] = {
         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
diff --git a/users/turbomech/backupturbomech.c b/users/turbomech/backupturbomech.c
index 2815aa452f..aaea05df96 100644
--- a/users/turbomech/backupturbomech.c
+++ b/users/turbomech/backupturbomech.c
@@ -296,7 +296,7 @@ case RGB_MODE_GRADIENT:
 
 }
 
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
 #ifdef RGBLIGHT_ENABLE
   uint8_t default_layer = eeconfig_read_default_layer();
   if (rgb_layer_change) {
diff --git a/users/xulkal/process_records.c b/users/xulkal/process_records.c
index b6a4e5cfa1..47996110bb 100644
--- a/users/xulkal/process_records.c
+++ b/users/xulkal/process_records.c
@@ -6,7 +6,7 @@
 #endif
 
 #ifdef TRILAYER_ENABLED
-uint32_t layer_state_set_user(uint32_t state)
+layer_state_t layer_state_set_user(layer_state_t state)
 {
     return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 }
diff --git a/users/xulkal/rules.mk b/users/xulkal/rules.mk
index 8f8365ea7e..7094191f2f 100644
--- a/users/xulkal/rules.mk
+++ b/users/xulkal/rules.mk
@@ -27,6 +27,6 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
   SRC += custom_rgb.c
 endif
 
-ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ifeq ($(strip $(OLED_ENABLE)), yes)
   SRC += custom_oled.c
 endif
diff --git a/users/yanfali/rules.mk b/users/yanfali/rules.mk
index 467adceef7..631dda4fb3 100644
--- a/users/yanfali/rules.mk
+++ b/users/yanfali/rules.mk
@@ -1,4 +1,4 @@
-BOOTMAGIC_ENABLE = lite
+BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
 DYNAMIC_KEYMAP_ENABLE = no
 LTO_ENABLE = yes
 AUDIO_ENABLE = no