diff --git a/quantum/led.c b/quantum/led.c index c5ddbc22c5..444d38f751 100644 --- a/quantum/led.c +++ b/quantum/led.c @@ -15,6 +15,7 @@ */ #include "led.h" #include "host.h" +#include "timer.h" #include "debug.h" #include "gpio.h" @@ -54,6 +55,14 @@ static void handle_backlight_caps_lock(led_t led_state) { } #endif +static uint32_t last_led_modification_time = 0; +uint32_t last_led_activity_time(void) { + return last_led_modification_time; +} +uint32_t last_led_activity_elapsed(void) { + return timer_elapsed32(last_led_modification_time); +} + /** \brief Lock LED set callback - keymap/user level * * \deprecated Use led_update_user() instead. @@ -174,7 +183,8 @@ void led_task(void) { // update LED uint8_t led_status = host_keyboard_leds(); if (last_led_status != led_status) { - last_led_status = led_status; + last_led_status = led_status; + last_led_modification_time = timer_read32(); if (debug_keyboard) { debug("led_task: "); diff --git a/quantum/led.h b/quantum/led.h index 934d25312c..b8262cbd8e 100644 --- a/quantum/led.h +++ b/quantum/led.h @@ -61,6 +61,9 @@ void led_set_kb(uint8_t usb_led); bool led_update_user(led_t led_state); bool led_update_kb(led_t led_state); +uint32_t last_led_activity_time(void); // Timestamp of the LED activity +uint32_t last_led_activity_elapsed(void); // Number of milliseconds since the last LED activity + #ifdef __cplusplus } #endif