summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c5
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c5
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c5
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c5
-rw-r--r--keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c7
-rw-r--r--keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c7
-rw-r--r--keyboards/40percentclub/ut47/led.c31
-rw-r--r--keyboards/converter/siemens_tastatur/keymaps/default/keymap.c5
-rw-r--r--keyboards/dz60/keymaps/muzfuz/keymap.c5
-rw-r--r--keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c4
-rw-r--r--keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c4
-rw-r--r--keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c5
-rw-r--r--keyboards/ergodox_ez/keymaps/smurmann/keymap.c5
-rw-r--r--keyboards/handwired/frenchdev/keymaps/default/keymap.c6
-rw-r--r--keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c18
-rw-r--r--keyboards/handwired/promethium/keymaps/default/keymap.c5
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c5
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c17
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c6
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c5
-rw-r--r--keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c5
-rwxr-xr-xkeyboards/kmini/keymaps/default/keymap.c5
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c2
-rw-r--r--keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c5
-rw-r--r--keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c5
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c5
-rw-r--r--keyboards/lazydesigners/the50/keymaps/default/keymap.c5
-rw-r--r--keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c5
-rw-r--r--keyboards/noxary/268/keymaps/ansi/keymap.c5
-rw-r--r--keyboards/noxary/268/keymaps/default/keymap.c5
-rw-r--r--keyboards/noxary/268/keymaps/iso/keymap.c5
-rw-r--r--keyboards/noxary/268/keymaps/sixtyeight/keymap.c5
-rw-r--r--keyboards/owlab/spring/spring.c2
-rw-r--r--keyboards/percent/canoe/keymaps/boy_314/keymap.c5
-rw-r--r--keyboards/planck/keymaps/altgr/common/init.h11
-rw-r--r--keyboards/planck/keymaps/hiea/common/init.h11
-rw-r--r--keyboards/planck/keymaps/hieax/common/init.h11
-rw-r--r--keyboards/planck/keymaps/rootiest/keymap.c2
-rw-r--r--keyboards/planck/keymaps/sdothum/common/init.h11
-rw-r--r--keyboards/playkbtw/ca66/keymaps/olivia/keymap.c15
-rw-r--r--keyboards/playkbtw/pk60/keymaps/default/keymap.c5
-rw-r--r--keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c5
-rw-r--r--keyboards/primekb/prime_e/keymaps/madhatter/keymap.c5
-rw-r--r--keyboards/shoc/keymaps/bongo/keymap.c2
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/jockyxu1122_iso/keymap.c5
-rw-r--r--keyboards/uk78/keymaps/default/keymap.c5
-rw-r--r--keyboards/uk78/keymaps/rask/keymap.c5
-rw-r--r--keyboards/v60_type_r/keymaps/followingghosts/keymap.c5
-rw-r--r--keyboards/v60_type_r/keymaps/vimouse/keymap.c5
-rw-r--r--keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c5
-rw-r--r--keyboards/work_louder/work_board/keymaps/drashna/keymap.c4
-rw-r--r--keyboards/xbows/woody/woody.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c13
-rw-r--r--layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c5
-rw-r--r--layouts/community/ergodox/colemak_code_friendly/keymap.c8
-rw-r--r--layouts/community/ergodox/drashna/keymap.c8
-rw-r--r--layouts/community/ergodox/jjerrell/keymap.c4
-rw-r--r--layouts/community/ergodox/ordinary/keymap.c2
-rw-r--r--layouts/community/ergodox/ordinary_osx/keymap.c2
-rw-r--r--layouts/community/ergodox/osx_neo2/keymap.c7
-rw-r--r--layouts/community/ergodox/software_neo2/keymap.c2
-rw-r--r--layouts/community/ergodox/swedish-lindhe/keymap.c7
-rw-r--r--layouts/community/ortho_4x12/brandonschlack/keymap.c5
-rw-r--r--layouts/community/ortho_4x12/drashna/keymap.c4
-rw-r--r--platforms/avr/sleep_led.c9
-rw-r--r--platforms/chibios/sleep_led.c11
-rw-r--r--quantum/led.c6
-rw-r--r--quantum/led.h3
-rw-r--r--users/curry/rgb_lighting_user.c6
-rw-r--r--users/turbomech/backupturbomech.c5
70 files changed, 214 insertions, 226 deletions
diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c
index 15b7c9faa7..5792f51ca8 100644
--- a/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c
@@ -18,12 +18,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+	if (led_state.caps_lock) {
 		setPinOutput(B2);
 		writePinLow(B2);
 	} else {
 		setPinInput(B2);
 		writePinLow(B2);
 	}
+	return false;
 }
diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c
index fd6087a238..20783c22cb 100644
--- a/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c
@@ -18,12 +18,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+	if (led_state.caps_lock) {
 		setPinOutput(B2);
 		writePinLow(B2);
 	} else {
 		setPinInput(B2);
 		writePinLow(B2);
 	}
+	return false;
 }
diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c
index 78d00dd06d..453bf8c961 100644
--- a/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c
@@ -72,10 +72,11 @@ layer_state_t layer_state_set_user(layer_state_t state) {
 }
 
 // support for standard mod state keys (caps lock, scroll lock, etc.)
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     DDRB |= (1 << 2); PORTB &= ~(1 << 2);
   } else {
     DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
   }
+  return false;
 }
diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c
index a45947de54..5cc9227885 100644
--- a/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c
@@ -18,12 +18,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+	if (led_state.caps_lock) {
 		setPinOutput(B2);
 		writePinLow(B2);
 	} else {
 		setPinInput(B2);
 		writePinLow(B2);
 	}
+	return false;
 }
diff --git a/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c b/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c
index c3e359e24e..f7899ad886 100644
--- a/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c
+++ b/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c
@@ -157,11 +157,11 @@ void dynamic_macro_record_end_user(int8_t direction) {
 // Custom Caps Lock backlight behaviour
 // ------------------------------------
 
-void led_set_user(uint8_t usb_led) {
+bool led_update_user(led_t led_state) {
     // This exists because I don't like the backlight to turn OFF when the Caps Lock is ON.
     // That is, this will turn the backlight ON (at half the brightness) when the Caps Lock is ON as well.
     static bool prev_is_caps_on;
-    bool is_caps_on = IS_LED_ON(usb_led, USB_LED_CAPS_LOCK);
+    bool is_caps_on = led_state.caps_lock;
 
     if (prev_is_caps_on != is_caps_on) {
         prev_is_caps_on = is_caps_on;
@@ -178,7 +178,7 @@ void led_set_user(uint8_t usb_led) {
     }
 
     // Turn on the Pro Micro's on-board LEDs for Caps Lock
-    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+    if (led_state.caps_lock) {
         // Set to low
         setPinOutput(B0);
         writePinLow(B0);
@@ -189,6 +189,7 @@ void led_set_user(uint8_t usb_led) {
         setPinInput(B0);
         setPinInput(D5);
     }
+    return false;
 }
 
 // Backlight idle timeout feature
diff --git a/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c b/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c
index ea659979ea..3932a1ee9b 100644
--- a/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c
+++ b/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c
@@ -35,11 +35,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   )
 };
 
-
-
-void led_set_user(uint8_t usb_led){
+bool led_update_user(led_t led_state){
     //turn on the Pro Micro's on board LEDs for CAPS LOCK
-    if(IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)){
+    if(led_state.caps_lock){
         //set led pins to low
         setPinOutput(B0);
         writePinLow(B0);
@@ -50,4 +48,5 @@ void led_set_user(uint8_t usb_led){
         setPinInput(B0);
         setPinInput(D5);
     }
+    return false;
 }
diff --git a/keyboards/40percentclub/ut47/led.c b/keyboards/40percentclub/ut47/led.c
index f5d8ffc12e..867a6e2e2a 100644
--- a/keyboards/40percentclub/ut47/led.c
+++ b/keyboards/40percentclub/ut47/led.c
@@ -19,20 +19,23 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <stdint.h>
 #include "led.h"
 
-
-void led_set(uint8_t usb_led)
+bool led_update_kb(led_t led_state)
 {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
-        // output low
-        DDRB |= (1<<0);
-        PORTB &= ~(1<<0);
-        DDRD |= (1<<5);
-        PORTD &= ~(1<<5);
-    } else {
-        // Hi-Z
-        DDRB &= ~(1<<0);
-        PORTB &= ~(1<<0);
-        DDRD &= ~(1<<5);
-        PORTD &= ~(1<<5);
+    bool res = led_update_user(led_state);
+    if (res) {
+        if (led_state.caps_lock) {
+            // output low
+            DDRB |= (1<<0);
+            PORTB &= ~(1<<0);
+            DDRD |= (1<<5);
+            PORTD &= ~(1<<5);
+        } else {
+            // Hi-Z
+            DDRB &= ~(1<<0);
+            PORTB &= ~(1<<0);
+            DDRD &= ~(1<<5);
+            PORTD &= ~(1<<5);
+        }
     }
+    return false;
 }
diff --git a/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c b/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c
index 0ce8a64ab7..0f3911a2d3 100644
--- a/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c
+++ b/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c
@@ -51,10 +51,11 @@ void matrix_init_user(void) {
   writePinLow(B0);
 }
 
-void led_set_user(uint8_t usb_led) {
-    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         writePinHigh(B0);
     } else {
         writePinLow(B0);
     }
+    return false;
 }
diff --git a/keyboards/dz60/keymaps/muzfuz/keymap.c b/keyboards/dz60/keymaps/muzfuz/keymap.c
index fcd4c317d1..1a71b9bb86 100644
--- a/keyboards/dz60/keymaps/muzfuz/keymap.c
+++ b/keyboards/dz60/keymaps/muzfuz/keymap.c
@@ -25,12 +25,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 		_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
 };
 
-void led_set_user(uint8_t usb_led) {
-	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+	if (led_state.caps_lock) {
 		DDRB |= (1 << 2); PORTB &= ~(1 << 2);
 	} else {
 		DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
 	}
+	return false;
 }
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record)
diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c
index 7f3b24de74..e5f5083ee5 100644
--- a/keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c
+++ b/keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c
@@ -85,7 +85,7 @@ void highlight_layer3(void){
 }
 
 bool rgb_matrix_indicators_user(void) {
-	  uint8_t this_led = host_keyboard_leds();
+	  led_t led_state = host_keyboard_led_state();
       if (!g_suspend_state) {
         switch (get_highest_layer(layer_state)) {
           case 3:
@@ -94,7 +94,7 @@ bool rgb_matrix_indicators_user(void) {
             break;
         }
       }
-	  if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
+	  if (led_state.caps_lock) {
 	        rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
 	  }
     return false;
diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c
index af2d9fa3dc..ff829f53fa 100644
--- a/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c
+++ b/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c
@@ -146,7 +146,7 @@ void highlight_layer3(void) {
 }
 
 bool rgb_matrix_indicators_user(void) {
-	  uint8_t this_led = host_keyboard_leds();
+	  led_t led_state = host_keyboard_led_state();
       if (!g_suspend_state) {
         switch (get_highest_layer(layer_state)) {
           case 1:
@@ -161,7 +161,7 @@ bool rgb_matrix_indicators_user(void) {
             break;
         }
       }
-	  if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
+	  if (led_state.caps_lock) {
 	        rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
 	  }
     return false;
diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
index 34284e146d..f8fce23ce5 100644
--- a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
@@ -296,12 +296,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 
 
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         ergodox_right_led_1_on();
     } else {
         ergodox_right_led_1_off();
     }
+    return false;
 }
 
 
diff --git a/keyboards/ergodox_ez/keymaps/smurmann/keymap.c b/keyboards/ergodox_ez/keymaps/smurmann/keymap.c
index 0d60e46bfc..65a7a08ec7 100644
--- a/keyboards/ergodox_ez/keymaps/smurmann/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/smurmann/keymap.c
@@ -194,11 +194,12 @@ void matrix_scan_user(void) {
   }
 };
 
-void led_set_user(uint8_t usb_led){
- if (usb_led & (1 << USB_LED_CAPS_LOCK))
+bool led_update_user(led_t led_state){
+ if (led_state.caps_lock)
    {
       capsOn = true;
    }else {
       capsOn = false;
    }
+   return false;
 }
diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
index e5a5dcc6c1..60e355f290 100644
--- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c
+++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
@@ -351,11 +351,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   return true;
 }
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1<<USB_LED_CAPS_LOCK)){
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock){
     frenchdev_led_3_on();
   } else {
     frenchdev_led_3_off();
   }
-  return ;
+  return false;
 }
diff --git a/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c b/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c
index f617fb5e68..f54ceb4491 100644
--- a/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c
+++ b/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c
@@ -67,24 +67,6 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
   return OLED_ROTATION_180;
 }
 bool oled_task_user(void) {
-  // Host Keyboard Layer Status
-  /*oled_write_P(PSTR("Lyr: "), false);
-  switch (get_highest_layer(layer_state)) {
-    case 0:
-      oled_write_P(PSTR("Alpha\n"), false);
-      break;
-    case 1:
-      oled_write_P(PSTR("FN\n"), false);
-      break;
-    default:
-      // Or use the write_ln shortcut over adding '\n' to the end of your string
-      oled_write_ln_P(PSTR("Undefined"), false);
-  }
-
-  uint8_t led_usb_state = host_keyboard_leds();
-  oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR("       "), false);
-  */
-
   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,
     0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
diff --git a/keyboards/handwired/promethium/keymaps/default/keymap.c b/keyboards/handwired/promethium/keymaps/default/keymap.c
index 42819245c7..ff73e51d5e 100644
--- a/keyboards/handwired/promethium/keymaps/default/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/default/keymap.c
@@ -1303,8 +1303,8 @@ void turn_off_capslock(void) {
     rgbsps_send();
   }
 
-  void led_set_user(uint8_t usb_led) {
-    bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
+  bool led_update_user(led_t led_state) {
+    bool new_capslock = led_state.caps_lock;
     if (new_capslock ^ capslock) { // capslock state is different
       if ((capslock = new_capslock)) {
         rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK);
@@ -1313,6 +1313,7 @@ void turn_off_capslock(void) {
       }
       rgbsps_send();
     }
+    return false;
   }
 #endif
 
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 203a0eda22..37cff59cb1 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -1306,8 +1306,8 @@ void turn_off_capslock(void) {
     rgbsps_send();
   }
 
-  void led_set_user(uint8_t usb_led) {
-    bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
+  bool led_update_user(led_t led_state) {
+    bool new_capslock = led_state.caps_lock;
     if (new_capslock ^ capslock) { // capslock state is different
       if ((capslock = new_capslock)) {
         rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK);
@@ -1316,6 +1316,7 @@ void turn_off_capslock(void) {
       }
       rgbsps_send();
     }
+    return false;
   }
 #endif
 
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c
index 682f15c445..88fe681f14 100644
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c
@@ -69,22 +69,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         _______, _______, _______,       _______,        _______,         _______,          _______, _______, XXXXXXX, _______, _______, _______),
     };
 
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    return true;
-}
-
-void matrix_init_user(void) {
-    
-}
-
-void matrix_scan_user(void) {
-    
-}
-
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
       rgblight_enable_noeeprom();
     } else {
       rgblight_disable_noeeprom();
     }
+    return false;
 }
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
index 8f2305ed4c..a8a369a611 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
@@ -43,8 +43,8 @@ static void check_light_layer(layer_state_t state) {
     last_checked_layer = true;
 }
 
-static void check_light_led(uint8_t leds) {
-    if (IS_LED_ON(leds, USB_LED_CAPS_LOCK)) {
+static void check_light_led(led_t led_state) {
+    if (led_state.caps_lock) {
         caps_light();
     } else if (IS_LAYER_ON(L_FN)) {
         fn_light();
@@ -57,7 +57,7 @@ static void check_light_led(uint8_t leds) {
 static void inline check_light(void) {
     last_checked_layer
         ? check_light_layer(layer_state)
-        : check_light_led(host_keyboard_leds());
+        : check_light_led(host_keyboard_led_state());
 }
 
 void eeconfig_init_keymap(void) {
diff --git a/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c b/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
index 88272e3c72..c7f05a4e94 100644
--- a/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
@@ -79,11 +79,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     return true;
 }
 
-void led_set_user(uint8_t usb_led) {
-    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         setPinOutput(B2);
         writePinLow(B2);
     } else {
         setPinInput(B2);
     }
+    return false;
 }
diff --git a/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c b/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c
index 4af086df3a..637a7e0440 100644
--- a/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c
+++ b/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c
@@ -56,12 +56,13 @@ layer_state_t layer_state_set_user(layer_state_t state) {
   return state;
 }
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     rgblight_mode_noeeprom(RGBLIGHT_MODE_ALTERNATING);
   } else {
     layer_state_set_user(layer_state);
   }
+  return false;
 }
 
 void myrgb_toggle(void) {
diff --git a/keyboards/kmini/keymaps/default/keymap.c b/keyboards/kmini/keymaps/default/keymap.c
index c3a7b12a40..1f041daffc 100755
--- a/keyboards/kmini/keymaps/default/keymap.c
+++ b/keyboards/kmini/keymaps/default/keymap.c
@@ -39,10 +39,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   ),
 };
 
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         writePinLow(B1);
     } else {
         writePinHigh(B1);
     }
+    return false;
 }
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c
index 5a1d366f56..eb20a1a25b 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c
@@ -165,7 +165,7 @@ if(IS_LAYER_ON(NSSL)) {
 
 //capslock leds
 
-if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+if (host_keyboard_led_state().caps_lock) {
     rgb_matrix_set_color_all(50, 15.6, 0);
   }
 
diff --git a/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c b/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c
index 21f8fcbb0f..f02f27005b 100644
--- a/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c
+++ b/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c
@@ -64,12 +64,13 @@ layer_state_t layer_state_set_user(layer_state_t state) {
   return state;
 }
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     rgblight_mode_noeeprom(RGBLIGHT_MODE_ALTERNATING);
   } else {
     layer_state_set_user(layer_state);
   }
+  return false;
 }
 
 void myrgb_toggle(void) {
diff --git a/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c
index 5292d99b5a..888e43e7dd 100644
--- a/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c
+++ b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c
@@ -64,12 +64,13 @@ layer_state_t layer_state_set_user(layer_state_t state) {
   return state;
 }
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     rgblight_mode_noeeprom(RGBLIGHT_MODE_ALTERNATING);
   } else {
     layer_state_set_user(layer_state);
   }
+  return false;
 }
 
 void myrgb_toggle(void) {
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c
index cdaade987f..d1917e4aa7 100644
--- a/keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c
@@ -100,10 +100,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   ),
 };
 
-void led_set_user(uint8_t usb_led) {
-if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+if (led_state.caps_lock) {
 	writePinLow(E6);
 	} else {
 	writePinHigh(E6);
 	}
+  return false;
 }
diff --git a/keyboards/lazydesigners/the50/keymaps/default/keymap.c b/keyboards/lazydesigners/the50/keymaps/default/keymap.c
index 5d8ea732f6..61e6ee878c 100644
--- a/keyboards/lazydesigners/the50/keymaps/default/keymap.c
+++ b/keyboards/lazydesigners/the50/keymaps/default/keymap.c
@@ -49,11 +49,12 @@ EE_CLR,  _______, _______,          _______,            _______,
 )
 };
 
-void led_set_user(uint8_t usb_led) {
+bool led_update_user(led_t led_state) {
   // Turn LED On/Off for Caps Lock
-  if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
+  if (led_state.caps_lock) {
     the50_led_on();
   } else {
     the50_led_off();
   }
+  return false;
 }
diff --git a/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c b/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c
index 8986fd6c3d..c384c3c520 100644
--- a/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c
+++ b/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c
@@ -69,11 +69,12 @@ EE_CLR,  _______, _______,          _______,            _______,
 )
 };
 
-void led_set_user(uint8_t usb_led) {
+bool led_update_user(led_t led_state) {
   // Turn LED On/Off for Caps Lock
-  if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
+  if (led_state.caps_lock) {
     the50_led_on();
   } else {
     the50_led_off();
   }
+  return false;
 }
diff --git a/keyboards/noxary/268/keymaps/ansi/keymap.c b/keyboards/noxary/268/keymaps/ansi/keymap.c
index dac8e6c0dd..860d17177c 100644
--- a/keyboards/noxary/268/keymaps/ansi/keymap.c
+++ b/keyboards/noxary/268/keymaps/ansi/keymap.c
@@ -52,12 +52,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     setPinOutput(B6);
     writePinHigh(B6);
   } else {
     setPinInput(B6);
     writePinLow(B6);
   }
+  return false;
 }
diff --git a/keyboards/noxary/268/keymaps/default/keymap.c b/keyboards/noxary/268/keymaps/default/keymap.c
index 571396f21d..9023c6f81f 100644
--- a/keyboards/noxary/268/keymaps/default/keymap.c
+++ b/keyboards/noxary/268/keymaps/default/keymap.c
@@ -70,8 +70,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         setPinOutput(B6);
         writePinHigh(B6);
     }
@@ -79,4 +79,5 @@ void led_set_user(uint8_t usb_led) {
         setPinInput(B6);
         writePinLow(B6);
     }
+    return false;
 }
diff --git a/keyboards/noxary/268/keymaps/iso/keymap.c b/keyboards/noxary/268/keymaps/iso/keymap.c
index 410883dd54..76462bf7fe 100644
--- a/keyboards/noxary/268/keymaps/iso/keymap.c
+++ b/keyboards/noxary/268/keymaps/iso/keymap.c
@@ -52,12 +52,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     setPinOutput(B6);
     writePinHigh(B6);
   } else {
     setPinInput(B6);
     writePinLow(B6);
   }
+  return false;
 }
diff --git a/keyboards/noxary/268/keymaps/sixtyeight/keymap.c b/keyboards/noxary/268/keymaps/sixtyeight/keymap.c
index 8e78994017..3527cf7ccc 100644
--- a/keyboards/noxary/268/keymaps/sixtyeight/keymap.c
+++ b/keyboards/noxary/268/keymaps/sixtyeight/keymap.c
@@ -70,11 +70,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         DDRB |= (1 << 6); PORTB |= (1 << 6);
     }
     else {
         DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
     }
+    return false;
 }
diff --git a/keyboards/owlab/spring/spring.c b/keyboards/owlab/spring/spring.c
index 8088fb03c2..13280ff9b3 100644
--- a/keyboards/owlab/spring/spring.c
+++ b/keyboards/owlab/spring/spring.c
@@ -108,7 +108,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
 
 
         case KC_CAPS:
-            if(IS_LED_ON(host_keyboard_leds(), USB_LED_CAPS_LOCK)){ 
+            if(host_keyboard_led_state().caps_lock){ 
                 caps_mode_index = CAPS_MODE_LOWER;
             } else{
                 caps_mode_index = CAPS_MODE_UPPER;
diff --git a/keyboards/percent/canoe/keymaps/boy_314/keymap.c b/keyboards/percent/canoe/keymaps/boy_314/keymap.c
index e9c56ed1b1..cccfd448a0 100644
--- a/keyboards/percent/canoe/keymaps/boy_314/keymap.c
+++ b/keyboards/percent/canoe/keymaps/boy_314/keymap.c
@@ -47,10 +47,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         rgblight_sethsv(HSV_RED);
     } else {
         rgblight_sethsv(HSV_TURQUOISE);
     }
+    return false;
 }
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/altgr/common/init.h b/keyboards/planck/keymaps/altgr/common/init.h
index 6366a19f65..6d0b4392fb 100644
--- a/keyboards/planck/keymaps/altgr/common/init.h
+++ b/keyboards/planck/keymaps/altgr/common/init.h
@@ -13,21 +13,22 @@ void matrix_init_user(void)
 
 #ifdef AUDIO_ENABLE
 #ifdef BACKLIGHT_ENABLE
-void led_set_user(uint8_t usb_led)
+bool led_update_user(led_t led_state)
 {
-  static uint8_t old_usb_led = 0;
+  static led_t old_led_state = {0};
   _delay_ms(10);                            // gets rid of tick
   if (!is_playing_notes()) {
-    if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    if (led_state.caps_lock && !old_led_state.caps_lock) {
       // if capslock LED is turning on
       PLAY_SONG(song_caps_on);
     }
-    else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    else if (!led_state.caps_lock && old_led_state.caps_lock) {
       // if capslock LED is turning off
       PLAY_SONG(song_caps_off);
     }
   }
-  old_usb_led = usb_led;
+  old_led_state = led_state;
+  return false;
 }
 #endif
 
diff --git a/keyboards/planck/keymaps/hiea/common/init.h b/keyboards/planck/keymaps/hiea/common/init.h
index 6366a19f65..6d0b4392fb 100644
--- a/keyboards/planck/keymaps/hiea/common/init.h
+++ b/keyboards/planck/keymaps/hiea/common/init.h
@@ -13,21 +13,22 @@ void matrix_init_user(void)
 
 #ifdef AUDIO_ENABLE
 #ifdef BACKLIGHT_ENABLE
-void led_set_user(uint8_t usb_led)
+bool led_update_user(led_t led_state)
 {
-  static uint8_t old_usb_led = 0;
+  static led_t old_led_state = {0};
   _delay_ms(10);                            // gets rid of tick
   if (!is_playing_notes()) {
-    if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    if (led_state.caps_lock && !old_led_state.caps_lock) {
       // if capslock LED is turning on
       PLAY_SONG(song_caps_on);
     }
-    else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    else if (!led_state.caps_lock && old_led_state.caps_lock) {
       // if capslock LED is turning off
       PLAY_SONG(song_caps_off);
     }
   }
-  old_usb_led = usb_led;
+  old_led_state = led_state;
+  return false;
 }
 #endif
 
diff --git a/keyboards/planck/keymaps/hieax/common/init.h b/keyboards/planck/keymaps/hieax/common/init.h
index 6366a19f65..6d0b4392fb 100644
--- a/keyboards/planck/keymaps/hieax/common/init.h
+++ b/keyboards/planck/keymaps/hieax/common/init.h
@@ -13,21 +13,22 @@ void matrix_init_user(void)
 
 #ifdef AUDIO_ENABLE
 #ifdef BACKLIGHT_ENABLE
-void led_set_user(uint8_t usb_led)
+bool led_update_user(led_t led_state)
 {
-  static uint8_t old_usb_led = 0;
+  static led_t old_led_state = {0};
   _delay_ms(10);                            // gets rid of tick
   if (!is_playing_notes()) {
-    if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    if (led_state.caps_lock && !old_led_state.caps_lock) {
       // if capslock LED is turning on
       PLAY_SONG(song_caps_on);
     }
-    else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    else if (!led_state.caps_lock && old_led_state.caps_lock) {
       // if capslock LED is turning off
       PLAY_SONG(song_caps_off);
     }
   }
-  old_usb_led = usb_led;
+  old_led_state = led_state;
+  return false;
 }
 #endif
 
diff --git a/keyboards/planck/keymaps/rootiest/keymap.c b/keyboards/planck/keymaps/rootiest/keymap.c
index 7e3b8af367..d6e8c7ef0f 100644
--- a/keyboards/planck/keymaps/rootiest/keymap.c
+++ b/keyboards/planck/keymaps/rootiest/keymap.c
@@ -1527,7 +1527,7 @@ void scap_finished(tap_dance_state_t* state, void* user_data) {
             register_code(KC_LSFT);
             break;
         default:
-            if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
+            if (host_keyboard_led_state().caps_lock) {
                 tap_code(KC_CAPS);
                 reset_tap_dance(state);
                 break;
diff --git a/keyboards/planck/keymaps/sdothum/common/init.h b/keyboards/planck/keymaps/sdothum/common/init.h
index 6366a19f65..6d0b4392fb 100644
--- a/keyboards/planck/keymaps/sdothum/common/init.h
+++ b/keyboards/planck/keymaps/sdothum/common/init.h
@@ -13,21 +13,22 @@ void matrix_init_user(void)
 
 #ifdef AUDIO_ENABLE
 #ifdef BACKLIGHT_ENABLE
-void led_set_user(uint8_t usb_led)
+bool led_update_user(led_t led_state)
 {
-  static uint8_t old_usb_led = 0;
+  static led_t old_led_state = {0};
   _delay_ms(10);                            // gets rid of tick
   if (!is_playing_notes()) {
-    if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    if (led_state.caps_lock && !old_led_state.caps_lock) {
       // if capslock LED is turning on
       PLAY_SONG(song_caps_on);
     }
-    else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
+    else if (!led_state.caps_lock && old_led_state.caps_lock) {
       // if capslock LED is turning off
       PLAY_SONG(song_caps_off);
     }
   }
-  old_usb_led = usb_led;
+  old_led_state = led_state;
+  return false;
 }
 #endif
 
diff --git a/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c b/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c
index 9b441a8892..8ef6c0499d 100644
--- a/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c
+++ b/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c
@@ -17,20 +17,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 	KC_TRNS,          KC_TRNS, KC_TRNS,          KC_TRNS,          KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
 };
 
-void matrix_init_user(void) {
-}
-
-void matrix_scan_user(void) {
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-	return true;
-}
-
-void led_set_user(uint8_t usb_led) {
-	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+	if (led_state.caps_lock) {
 		DDRD |= (1 << 1); PORTD &= ~(1 << 1);
 	} else {
 		DDRD &= ~(1 << 1); PORTD &= ~(1 << 1);
 	}
+	return false;
 }
diff --git a/keyboards/playkbtw/pk60/keymaps/default/keymap.c b/keyboards/playkbtw/pk60/keymaps/default/keymap.c
index 65d3996a85..cc0276673a 100644
--- a/keyboards/playkbtw/pk60/keymaps/default/keymap.c
+++ b/keyboards/playkbtw/pk60/keymaps/default/keymap.c
@@ -20,12 +20,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     setPinOutput(F4);
     writePinLow(F4);
   } else {
     setPinInput(F4);
     writePinLow(F4);
   }
+  return false;
 }
diff --git a/keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c b/keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c
index cdd1b56430..a45a841285 100644
--- a/keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c
+++ b/keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c
@@ -100,13 +100,14 @@ layer_state_t layer_state_set_user(layer_state_t state) {
     return state;
 }
 
-void led_set_user(uint8_t usb_led) {
-    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         CAPS = 1;
     }
     else {
         CAPS = 0;
     }
+    return false;
 }
 
 void togg_indicator(uint8_t *state, uint8_t pin) {
diff --git a/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c b/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c
index f3228ec0d5..998046c6d7 100644
--- a/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c
+++ b/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c
@@ -91,8 +91,9 @@ layer_state_t layer_state_set_user(layer_state_t state) {
     return state;
 }
 
-void led_set_user(uint8_t usb_led) {
-    CAPS = IS_LED_ON(usb_led, USB_LED_CAPS_LOCK);
+bool led_update_user(led_t led_state) {
+    CAPS = led_state.caps_lock;
+    return false;
 }
 
 void togg_indicator(uint8_t *state, uint8_t pin) {
diff --git a/keyboards/shoc/keymaps/bongo/keymap.c b/keyboards/shoc/keymaps/bongo/keymap.c
index 14779f1d75..8f57181330 100644
--- a/keyboards/shoc/keymaps/bongo/keymap.c
+++ b/keyboards/shoc/keymaps/bongo/keymap.c
@@ -163,7 +163,7 @@ bool oled_task_user(void) {
     oled_set_cursor(0,6);
     oled_write_P(PSTR("       WPM: "), false);
     oled_write(get_u8_str(get_current_wpm(), '0'), false);
-    if(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)){
+    if(host_keyboard_led_state().caps_lock){
         oled_set_cursor(0,5);
         oled_write_P(PSTR("      CAPS  LOCK"), false);
     }
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/jockyxu1122_iso/keymap.c b/keyboards/thevankeyboards/bananasplit/keymaps/jockyxu1122_iso/keymap.c
index 1472f88212..5146c8f4f3 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/jockyxu1122_iso/keymap.c
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/jockyxu1122_iso/keymap.c
@@ -91,12 +91,13 @@ Capslock's led cannot be controlled separately on bananasplit and you can only t
   leds at once. If you only install led for capslock, it will look like capslock has toggable
   backlight.
 */
-void led_set_user(uint8_t usb_led) {
-  if (usb_led && (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     DDRB |= (1 << 7);
     PORTB |= (1 << 7);
   } else {
     DDRB &= ~(1 << 7);
     PORTB &= ~(1 << 7);
   }
+  return false;
 }
diff --git a/keyboards/uk78/keymaps/default/keymap.c b/keyboards/uk78/keymaps/default/keymap.c
index 2fa09f7d6d..e4bdf90508 100644
--- a/keyboards/uk78/keymaps/default/keymap.c
+++ b/keyboards/uk78/keymaps/default/keymap.c
@@ -75,12 +75,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     setPinOutput(A3);
     writePinHigh(A3);
   } else {
     setPinInput(A3);
     writePinLow(A3);
   }
+  return false;
 }
diff --git a/keyboards/uk78/keymaps/rask/keymap.c b/keyboards/uk78/keymaps/rask/keymap.c
index eaf8c117a2..01220a775e 100644
--- a/keyboards/uk78/keymaps/rask/keymap.c
+++ b/keyboards/uk78/keymaps/rask/keymap.c
@@ -74,10 +74,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     DDRA |= (1 << 3); PORTA |= (1 << 3);
   } else {
     DDRA &= ~(1 << 3); PORTA &= ~(1 << 3);
   }
+  return false;
 }
diff --git a/keyboards/v60_type_r/keymaps/followingghosts/keymap.c b/keyboards/v60_type_r/keymaps/followingghosts/keymap.c
index ab1fbd70d9..419c9ad5a7 100644
--- a/keyboards/v60_type_r/keymaps/followingghosts/keymap.c
+++ b/keyboards/v60_type_r/keymaps/followingghosts/keymap.c
@@ -95,8 +95,8 @@ WASD are Up Left Right Down respectively
 
 };
 
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
       // output low
       DDRE  |=  (1<<PE6);
       PORTE &= ~(1<<PE6);
@@ -106,4 +106,5 @@ void led_set_user(uint8_t usb_led) {
       DDRE  &= ~(1<<PE6);
       PORTE &= ~(1<<PE6);
   }
+  return false;
 }
diff --git a/keyboards/v60_type_r/keymaps/vimouse/keymap.c b/keyboards/v60_type_r/keymaps/vimouse/keymap.c
index f426a94044..2eb06c0503 100644
--- a/keyboards/v60_type_r/keymaps/vimouse/keymap.c
+++ b/keyboards/v60_type_r/keymaps/vimouse/keymap.c
@@ -97,8 +97,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         _____,   _____,   _____,               _____,                                                      _____,   _____,  _____,  _____),
 };
 
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         // output low
         DDRE  |=  (1<<PE6);
         PORTE &= ~(1<<PE6);
@@ -108,4 +108,5 @@ void led_set_user(uint8_t usb_led) {
         DDRE  &= ~(1<<PE6);
         PORTE &= ~(1<<PE6);
     }
+    return false;
 }
diff --git a/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c b/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c
index 98bfa70d2f..f2fd693ece 100644
--- a/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c
+++ b/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c
@@ -69,8 +69,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 };
 
 
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         // output low
         DDRE  |=  (1<<PE6);
         PORTE &= ~(1<<PE6);
@@ -80,6 +80,7 @@ void led_set_user(uint8_t usb_led) {
         DDRE  &= ~(1<<PE6);
         PORTE &= ~(1<<PE6);
     }
+    return false;
 }
 
 #define C_RED 0xFF, 0x00, 0x00
diff --git a/keyboards/work_louder/work_board/keymaps/drashna/keymap.c b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
index 1747ab638e..2c20225742 100644
--- a/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
+++ b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
@@ -110,7 +110,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
 
 bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
     uint8_t this_mod = get_mods();
-    uint8_t this_led = host_keyboard_leds();
+    led_t   this_led = host_keyboard_led_state();
     uint8_t this_osm = get_oneshot_mods();
 #define THUMB_LED                                   6
 #define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__)
@@ -134,7 +134,7 @@ bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
         }
     }
 
-    if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
+    if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led.caps_lock) {
         if (!layer_state_is(_ADJUST)) {
             RGB_MATRIX_INDICATOR_SET_COLOR(12, 0x00, 0xFF, 0x00);
             RGB_MATRIX_INDICATOR_SET_COLOR(13, 0x00, 0xFF, 0x00);
diff --git a/keyboards/xbows/woody/woody.c b/keyboards/xbows/woody/woody.c
index 9757bde9c9..fa0ba7f768 100644
--- a/keyboards/xbows/woody/woody.c
+++ b/keyboards/xbows/woody/woody.c
@@ -101,7 +101,7 @@ bool rgb_matrix_indicators_kb(void) {
     if (!rgb_matrix_indicators_user()) {
         return false;
     }
-    if (IS_LED_ON(host_keyboard_leds(), USB_LED_CAPS_LOCK)) {
+    if (host_keyboard_led_state().caps_lock) {
         rgb_matrix_set_color(30, 0xFF, 0x00, 0x00);
     }
     return true;
diff --git a/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c b/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c
index 64add732ad..02dbe01f17 100644
--- a/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c
@@ -130,16 +130,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     return true;
 }
 
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-
-}
-
-void led_set_user(uint8_t usb_led) {
-    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         capslock_led_on();
     } else {
         capslock_led_off();
@@ -149,4 +141,5 @@ void led_set_user(uint8_t usb_led) {
     } else {
         gp100_led_off();
     }
+    return false;
 }
diff --git a/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c
index 3af6af5091..37e459893c 100644
--- a/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c
+++ b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c
@@ -109,9 +109,9 @@ void update_led(void) {
     }
 }
 
-void led_set_user(uint8_t usb_led) {
+bool led_update_user(led_t led_state) {
     // Caps Lock Indicator
-    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+    if (led_state.caps_lock) {
         writePinLow(B2);
         rgblight_setrgb(255, 110, 0);
     }
@@ -133,6 +133,7 @@ void led_set_user(uint8_t usb_led) {
         }
         update_led();
     }
+    return false;
 }
 
 layer_state_t layer_state_set_user(layer_state_t state) {
diff --git a/layouts/community/ergodox/colemak_code_friendly/keymap.c b/layouts/community/ergodox/colemak_code_friendly/keymap.c
index ae5bdcc5b8..d9e3c9fa61 100644
--- a/layouts/community/ergodox/colemak_code_friendly/keymap.c
+++ b/layouts/community/ergodox/colemak_code_friendly/keymap.c
@@ -310,9 +310,6 @@ void matrix_init_user(void) {
 void matrix_scan_user(void) {
   uint8_t layer = get_highest_layer(layer_state);
 
-  //led 1, RED, Caps-Lock ON
-  //if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ergodox_right_led_1_on();
-
   //led 2, GREEN
   if (layer == LAYER_NUM)
       ergodox_right_led_2_on();
@@ -327,9 +324,10 @@ void matrix_scan_user(void) {
 };
 
 // Runs constantly in the background, in a loop.
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK))
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock)
         ergodox_right_led_1_on();
     else
         ergodox_right_led_1_off();
+    return false;
 }
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index 1853b70071..8d1449486a 100644
--- a/layouts/community/ergodox/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -212,9 +212,9 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 
 void housekeeping_task_keymap(void) {  // runs frequently to update info
 #ifdef KEYBOARD_ergodox_ez
-    uint8_t modifiers     = get_mods();
-    uint8_t led_usb_state = host_keyboard_leds();
-    uint8_t one_shot      = get_oneshot_mods();
+    uint8_t modifiers = get_mods();
+    led_t   led_state = host_keyboard_led_state();
+    uint8_t one_shot  = get_oneshot_mods();
 
     if (!skip_leds) {
         ergodox_board_led_off();
@@ -225,7 +225,7 @@ void housekeeping_task_keymap(void) {  // runs frequently to update info
         // Since we're not using the LEDs here for layer indication anymore,
         // then lets use them for modifier indicators.  Shame we don't have 4...
         // Also, no "else", since we want to know each, independently.
-        if ((modifiers | one_shot) & MOD_MASK_SHIFT || led_usb_state & (1 << USB_LED_CAPS_LOCK)) {
+        if ((modifiers | one_shot) & MOD_MASK_SHIFT || led_state.caps_lock) {
             ergodox_right_led_2_on();
             ergodox_right_led_2_set(50);
         }
diff --git a/layouts/community/ergodox/jjerrell/keymap.c b/layouts/community/ergodox/jjerrell/keymap.c
index 110a8aba63..48572d2de3 100644
--- a/layouts/community/ergodox/jjerrell/keymap.c
+++ b/layouts/community/ergodox/jjerrell/keymap.c
@@ -94,12 +94,12 @@ layer_state_t layer_state_set_keymap(layer_state_t state) {
 
 void matrix_scan_keymap(void) {
     uint8_t modifiers = get_mods();
-    uint8_t led_usb_state = host_keyboard_leds();
+    led_t   led_state = host_keyboard_led_state();
     uint8_t one_shot = get_oneshot_mods();
     uint8_t layer_is_workman = layer_state_is(_WORKMAN);
 
     if ((modifiers) && (layer_is_workman)) {
-        if (modifiers & MOD_MASK_SHIFT || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MOD_MASK_SHIFT) {
+        if (modifiers & MOD_MASK_SHIFT || led_state.caps_lock || one_shot & MOD_MASK_SHIFT) {
             ergodox_right_led_1_on();
             ergodox_right_led_1_set( 25 );
         } else {
diff --git a/layouts/community/ergodox/ordinary/keymap.c b/layouts/community/ergodox/ordinary/keymap.c
index 6c7586034c..c828c6fb97 100644
--- a/layouts/community/ergodox/ordinary/keymap.c
+++ b/layouts/community/ergodox/ordinary/keymap.c
@@ -238,7 +238,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 // Runs constantly in the background, in a loop.
 void matrix_scan_user(void) {
     // shift or caps lock turns on red light
-    if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
+    if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || host_keyboard_led_state().caps_lock) {
         ergodox_right_led_1_on();
     } else {
         ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/ordinary_osx/keymap.c b/layouts/community/ergodox/ordinary_osx/keymap.c
index f67a6d6da0..3de64f4994 100644
--- a/layouts/community/ergodox/ordinary_osx/keymap.c
+++ b/layouts/community/ergodox/ordinary_osx/keymap.c
@@ -238,7 +238,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 // Runs constantly in the background, in a loop.
 void matrix_scan_user(void) {
     // shift or caps lock turns on red light
-    if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
+    if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || host_keyboard_led_state().caps_lock) {
         ergodox_right_led_1_on();
     } else {
         ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/osx_neo2/keymap.c b/layouts/community/ergodox/osx_neo2/keymap.c
index 5b279073cc..079a92a97e 100644
--- a/layouts/community/ergodox/osx_neo2/keymap.c
+++ b/layouts/community/ergodox/osx_neo2/keymap.c
@@ -686,7 +686,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
   if ((capslock_state & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
     // CAPSLOCK is currently active, disable it
-    if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
+    if (host_keyboard_led_state().caps_lock) {
       unregister_code(KC_LOCKING_CAPS_LOCK);
     } else {
       register_code(KC_LOCKING_CAPS_LOCK);
@@ -697,11 +697,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   return process_record_user_shifted(keycode, record);
 };
 
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void){
-
-};
-
 // Runs constantly in the background, in a loop.
 void matrix_scan_user(void) {
   uint8_t layer = get_highest_layer(layer_state);
diff --git a/layouts/community/ergodox/software_neo2/keymap.c b/layouts/community/ergodox/software_neo2/keymap.c
index c191a034f2..1c68a68b0f 100644
--- a/layouts/community/ergodox/software_neo2/keymap.c
+++ b/layouts/community/ergodox/software_neo2/keymap.c
@@ -106,7 +106,7 @@ void matrix_scan_user(void) {
     ergodox_right_led_3_off();
     ergodox_board_led_off();
 
-    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+    if (host_keyboard_led_state().caps_lock) {
         ergodox_right_led_3_on();
     }
 
diff --git a/layouts/community/ergodox/swedish-lindhe/keymap.c b/layouts/community/ergodox/swedish-lindhe/keymap.c
index 1644512de7..376574f690 100644
--- a/layouts/community/ergodox/swedish-lindhe/keymap.c
+++ b/layouts/community/ergodox/swedish-lindhe/keymap.c
@@ -154,11 +154,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 ),
 };
 
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-};
-
 // Runs constantly in the background, in a loop.
 void matrix_scan_user(void) {
 
@@ -185,7 +180,7 @@ void matrix_scan_user(void) {
             break;
     }
 
-    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+    if (host_keyboard_led_state().caps_lock) {
         // if capslk is on, set led 1 on
         ergodox_right_led_1_on();
     } else {
diff --git a/layouts/community/ortho_4x12/brandonschlack/keymap.c b/layouts/community/ortho_4x12/brandonschlack/keymap.c
index 7361de1a03..04c83de9e9 100644
--- a/layouts/community/ortho_4x12/brandonschlack/keymap.c
+++ b/layouts/community/ortho_4x12/brandonschlack/keymap.c
@@ -100,12 +100,13 @@ void keyboard_post_init_keymap(void) {
 }
 
 // Use Green LED for Caps Lock
-void led_set_user(uint8_t usb_led) {
-    if (IS_LED_OFF(usb_led, USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+    if (led_state.caps_lock) {
         writePinLow(LED_GREEN);
     } else {
         writePinHigh(LED_GREEN);
     }
+    return false;
 }
 #endif
 
diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c
index 475ccc5c3a..cdf41fc5dc 100644
--- a/layouts/community/ortho_4x12/drashna/keymap.c
+++ b/layouts/community/ortho_4x12/drashna/keymap.c
@@ -184,7 +184,7 @@ led_config_t g_led_config = {
 
 bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
     uint8_t this_mod = get_mods();
-    uint8_t this_led = host_keyboard_leds();
+    led_t   this_led = host_keyboard_led_state();
     uint8_t this_osm = get_oneshot_mods();
 #    ifdef KEYBOARD_planck_ez
 #        define THUMB_LED 41
@@ -208,7 +208,7 @@ bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
             break;
     }
 
-    if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
+    if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led.caps_lock) {
         if (!layer_state_cmp(layer_state, _ADJUST)) {
             RGB_MATRIX_INDICATOR_SET_COLOR(24, 0x00, 0xFF, 0x00);
         }
diff --git a/platforms/avr/sleep_led.c b/platforms/avr/sleep_led.c
index b05431633b..ad6253be93 100644
--- a/platforms/avr/sleep_led.c
+++ b/platforms/avr/sleep_led.c
@@ -109,16 +109,19 @@ ISR(TIMERx_COMPA_vect) {
             uint8_t duration : 2;
             uint8_t index : 6;
         } pwm;
-    } timer = {.row = 0};
+    } timer                = {.row = 0};
+    static led_t led_state = {0};
 
     timer.row++;
 
     // LED on
     if (timer.pwm.count == 0) {
-        led_set(1 << USB_LED_CAPS_LOCK);
+        led_state.caps_lock = true;
+        led_set(led_state.raw);
     }
     // LED off
     if (timer.pwm.count == pgm_read_byte(&breathing_table[timer.pwm.index])) {
-        led_set(0);
+        led_state.caps_lock = false;
+        led_set(led_state.raw);
     }
 }
diff --git a/platforms/chibios/sleep_led.c b/platforms/chibios/sleep_led.c
index a777d60468..a35514bf2e 100644
--- a/platforms/chibios/sleep_led.c
+++ b/platforms/chibios/sleep_led.c
@@ -41,17 +41,20 @@ void sleep_led_timer_callback(void) {
             uint8_t duration : 2;
             uint8_t index : 6;
         } pwm;
-    } timer = {.row = 0};
+    } timer                = {.row = 0};
+    static led_t led_state = {0};
 
     timer.row++;
 
     // LED on
     if (timer.pwm.count == 0) {
-        led_set(1 << USB_LED_CAPS_LOCK);
+        led_state.caps_lock = true;
+        led_set(led_state.raw);
     }
     // LED off
     if (timer.pwm.count == breathing_table[timer.pwm.index]) {
-        led_set(0);
+        led_state.caps_lock = false;
+        led_set(led_state.raw);
     }
 }
 
@@ -190,7 +193,7 @@ void sleep_led_toggle(void) {
 void sleep_led_init(void) {}
 
 void sleep_led_enable(void) {
-    led_set(1 << USB_LED_CAPS_LOCK);
+    led_set(2); // Caps Lock
 }
 
 void sleep_led_disable(void) {
diff --git a/quantum/led.c b/quantum/led.c
index 42144566fd..8d86374a6f 100644
--- a/quantum/led.c
+++ b/quantum/led.c
@@ -153,14 +153,14 @@ __attribute__((weak)) void led_set(uint8_t usb_led) {
 /** \brief Trigger behaviour on transition to suspend
  */
 void led_suspend(void) {
-    uint8_t leds_off = 0;
+    led_t leds_off = {0};
 #ifdef BACKLIGHT_CAPS_LOCK
     if (is_backlight_enabled()) {
         // Don't try to turn off Caps Lock indicator as it is backlight and backlight is already off
-        leds_off |= (1 << USB_LED_CAPS_LOCK);
+        leds_off.caps_lock = true;
     }
 #endif
-    led_set(leds_off);
+    led_set(leds_off.raw);
 }
 
 /** \brief Trigger behaviour on transition from suspend
diff --git a/quantum/led.h b/quantum/led.h
index 679e743396..b9fad670ae 100644
--- a/quantum/led.h
+++ b/quantum/led.h
@@ -22,9 +22,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* FIXME: Add doxygen comments here. */
 
-/* keyboard LEDs */
-#define USB_LED_CAPS_LOCK 1
-
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/users/curry/rgb_lighting_user.c b/users/curry/rgb_lighting_user.c
index b8d519feca..34156744fe 100644
--- a/users/curry/rgb_lighting_user.c
+++ b/users/curry/rgb_lighting_user.c
@@ -11,9 +11,9 @@ void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight
  * This is especially useful for One Shot Mods, since it's not always obvious if they're still lit up.
  */
 #if defined(INDICATOR_LIGHTS)
-void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
+void set_rgb_indicators(uint8_t this_mod, led_t this_led, uint8_t this_osm) {
     if (userspace_config.rgb_layer_change && get_highest_layer(layer_state) == 0) {
-        if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
+        if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led.caps_lock) {
 #    ifdef SHFT_LED1
             rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
 #    endif  // SHFT_LED1
@@ -79,7 +79,7 @@ void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
 /* Function for the indicators */
 void matrix_scan_indicator(void) {
     if (has_initialized) {
-        set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
+        set_rgb_indicators(get_mods(), host_keyboard_led_state(), get_oneshot_mods());
     }
 }
 #endif  // INDICATOR_LIGHTS
diff --git a/users/turbomech/backupturbomech.c b/users/turbomech/backupturbomech.c
index 3671d27ab4..70d3d065c4 100644
--- a/users/turbomech/backupturbomech.c
+++ b/users/turbomech/backupturbomech.c
@@ -135,14 +135,15 @@ void matrix_init_user(void) {
 }
 
 static bool is_capslocked = false;
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+bool led_update_user(led_t led_state) {
+  if (led_state.caps_lock) {
     is_capslocked = true;
    //     DDRB |= (1 << 2); PORTB &= ~(1 << 2);
   } else {
     is_capslocked = false;
   //  DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
   }
+  return false;
 }
   //rgblight_set();