diff options
Diffstat (limited to 'keyboards')
-rwxr-xr-x | keyboards/keychron/bluetooth/indicator.c | 30 | ||||
-rwxr-xr-x | keyboards/keychron/bluetooth/indicator.h | 1 |
2 files changed, 19 insertions, 12 deletions
diff --git a/keyboards/keychron/bluetooth/indicator.c b/keyboards/keychron/bluetooth/indicator.c index 7a6a54510c..4348460700 100755 --- a/keyboards/keychron/bluetooth/indicator.c +++ b/keyboards/keychron/bluetooth/indicator.c @@ -476,7 +476,7 @@ void indicator_task(void) { } #if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) -static void os_state_indicate(void) { +__attribute__((weak)) void os_state_indicate(void) { # if defined(NUM_LOCK_INDEX) if (host_keyboard_led_state().num_lock) { SET_LED_ON(NUM_LOCK_INDEX); @@ -559,18 +559,24 @@ bool LED_INDICATORS_KB(void) { } bool led_update_kb(led_t led_state) { - if (!LED_DRIVER_IS_ENABLED()) { -# if defined(LED_MATRIX_DRIVER_SHUTDOWN_ENABLE) || defined(RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE) - LED_DRIVER.exit_shutdown(); -# endif - SET_ALL_LED_OFF(); - os_state_indicate(); - LED_DRIVER.flush(); -# if defined(LED_MATRIX_DRIVER_SHUTDOWN_ENABLE) || defined(RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE) - if (LED_DRIVER_ALLOW_SHUTDOWN()) LED_DRIVER.shutdown(); -# endif + bool res = led_update_user(led_state); + if (res) { + led_update_ports(led_state); + + if (!LED_DRIVER_IS_ENABLED()) { + # if defined(LED_MATRIX_DRIVER_SHUTDOWN_ENABLE) || defined(RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE) + LED_DRIVER.exit_shutdown(); + # endif + SET_ALL_LED_OFF(); + os_state_indicate(); + LED_DRIVER.flush(); + # if defined(LED_MATRIX_DRIVER_SHUTDOWN_ENABLE) || defined(RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE) + if (LED_DRIVER_ALLOW_SHUTDOWN()) LED_DRIVER.shutdown(); + # endif + } } - return true; + + return res; } void LED_NONE_INDICATORS_KB(void) { diff --git a/keyboards/keychron/bluetooth/indicator.h b/keyboards/keychron/bluetooth/indicator.h index d1345d2235..a2eb3f019c 100755 --- a/keyboards/keychron/bluetooth/indicator.h +++ b/keyboards/keychron/bluetooth/indicator.h @@ -106,6 +106,7 @@ void indicator_stop(void); void indicator_eeconfig_reload(void); bool indicator_is_enabled(void); bool indicator_is_running(void); +void os_state_indicate(void); #ifdef BAT_LOW_LED_PIN void indicator_battery_low_enable(bool enable); |