feat(underglow): add underglow_color_changed event

This commit is contained in:
darknao 2026-01-15 21:34:03 +01:00
parent 3672cc4989
commit 240e57b391
No known key found for this signature in database
4 changed files with 39 additions and 0 deletions

View File

@ -90,6 +90,7 @@ endif()
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c)
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_underglow_color.c)
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/events/underglow_color_changed.c)
target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/behaviors/behavior_backlight.c)
target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/events/battery_state_changed.c)

View File

@ -0,0 +1,16 @@
/*
* Copyright (c) 2024 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#pragma once
#include <zmk/event_manager.h>
struct zmk_underglow_color_changed {
uint32_t layers;
bool wakeup;
};
ZMK_EVENT_DECLARE(zmk_underglow_color_changed);

View File

@ -0,0 +1,10 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <zephyr/kernel.h>
#include <zmk/events/underglow_color_changed.h>
ZMK_EVENT_IMPL(zmk_underglow_color_changed);

View File

@ -29,6 +29,8 @@
#include <zmk/event_manager.h>
#include <zmk/events/activity_state_changed.h>
#include <zmk/events/usb_conn_state_changed.h>
#include <zmk/events/underglow_color_changed.h>
#include <zmk/workqueue.h>
#include <zmk/events/split_peripheral_layer_changed.h>
@ -666,6 +668,15 @@ static int rgb_underglow_event_listener(const zmk_event_t *eh) {
zmk_rgb_underglow_set_layer(layer, true);
return 0;
}
if (as_zmk_underglow_color_changed(eh)) {
const struct zmk_underglow_color_changed *ev = as_zmk_underglow_color_changed(eh);
uint8_t layer = rgb_underglow_top_layer();
LOG_DBG("refresh layers %d, current: %d, wakeup: %d", ev->layers, layer, ev->wakeup);
if ((ev->layers & (BIT(layer))) == BIT(layer)) {
zmk_rgb_underglow_set_layer(rgb_underglow_top_layer(), ev->wakeup);
}
return 0;
}
#endif /* UNDERGLOW_LAYER_ENABLED */
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_USB)
@ -692,6 +703,7 @@ ZMK_SUBSCRIPTION(rgb_underglow, zmk_usb_conn_state_changed);
#if IS_ENABLED(UNDERGLOW_LAYER_ENABLED)
ZMK_SUBSCRIPTION(rgb_underglow, zmk_split_peripheral_layer_changed);
ZMK_SUBSCRIPTION(rgb_underglow, zmk_underglow_color_changed);
#endif
SYS_INIT(zmk_rgb_underglow_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY);