summaryrefslogtreecommitdiff
path: root/app/src/behaviors/behavior_rgb_underglow.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/behaviors/behavior_rgb_underglow.c')
-rw-r--r--app/src/behaviors/behavior_rgb_underglow.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/app/src/behaviors/behavior_rgb_underglow.c b/app/src/behaviors/behavior_rgb_underglow.c
index f9eaa13..fe33e04 100644
--- a/app/src/behaviors/behavior_rgb_underglow.c
+++ b/app/src/behaviors/behavior_rgb_underglow.c
@@ -20,6 +20,27 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
static int behavior_rgb_underglow_init(const struct device *dev) { return 0; }
+static int
+on_keymap_binding_convert_central_state_dependent_params(struct zmk_behavior_binding *binding,
+ struct zmk_behavior_binding_event event) {
+ switch (binding->param1) {
+ case RGB_TOG_CMD: {
+ bool state;
+ int err = zmk_rgb_underglow_get_state(&state);
+ if (err) {
+ LOG_ERR("Failed to get RGB underglow state (err %d)", err);
+ return err;
+ }
+
+ binding->param1 = state ? RGB_OFF_CMD : RGB_ON_CMD;
+ LOG_DBG("RGB relative toggle convert to absolute %s", state ? "OFF" : "ON");
+ return 0;
+ }
+ default:
+ return 0;
+ }
+};
+
static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding,
struct zmk_behavior_binding_event event) {
switch (binding->param1) {
@@ -63,6 +84,8 @@ static int on_keymap_binding_released(struct zmk_behavior_binding *binding,
}
static const struct behavior_driver_api behavior_rgb_underglow_driver_api = {
+ .binding_convert_central_state_dependent_params =
+ on_keymap_binding_convert_central_state_dependent_params,
.binding_pressed = on_keymap_binding_pressed,
.binding_released = on_keymap_binding_released,
};