fix: RGB_TOG also toggle underglow-layer

This commit is contained in:
darknao 2024-05-20 19:51:09 +02:00 committed by afiqzudinhadi
parent 9308ba806a
commit 886cd1025d

View file

@ -82,6 +82,7 @@ struct rgb_underglow_state {
uint16_t animation_step; uint16_t animation_step;
bool on; bool on;
bool status_active; bool status_active;
bool layer_enabled;
uint16_t status_animation_step; uint16_t status_animation_step;
}; };
@ -475,7 +476,7 @@ static void zmk_rgb_underglow_apply_rgbmap(uint32_t rgbmap[], size_t rgbmap_len)
} }
static void zmk_rgb_underglow_set_layer(uint8_t layer) { static void zmk_rgb_underglow_set_layer(uint8_t layer) {
if (state.current_effect != UNDERGLOW_EFFECT_LAYER_INDICATORS) if (!state.layer_enabled)
return; return;
uint32_t *rgbmap = rgb_underglow_get_bindings(layer); uint32_t *rgbmap = rgb_underglow_get_bindings(layer);
@ -607,7 +608,7 @@ int zmk_rgb_underglow_get_state(bool *on_off) {
if (!led_strip) if (!led_strip)
return -ENODEV; return -ENODEV;
*on_off = state.on; *on_off = state.on || state.layer_enabled;
return 0; return 0;
} }
@ -647,6 +648,9 @@ void zmk_rgb_set_ext_power(void) {
int zmk_rgb_underglow_on(void) { int zmk_rgb_underglow_on(void) {
zmk_rgb_underglow_transient_on(); zmk_rgb_underglow_transient_on();
if (state.current_effect == UNDERGLOW_EFFECT_LAYER_INDICATORS) {
state.layer_enabled = true;
}
return zmk_rgb_underglow_save_state(); return zmk_rgb_underglow_save_state();
} }
@ -674,6 +678,7 @@ K_WORK_DEFINE(underglow_off_work, zmk_rgb_underglow_off_handler);
int zmk_rgb_underglow_off(void) { int zmk_rgb_underglow_off(void) {
zmk_rgb_underglow_transient_off(); zmk_rgb_underglow_transient_off();
state.layer_enabled = false;
return zmk_rgb_underglow_save_state(); return zmk_rgb_underglow_save_state();
} }
@ -704,7 +709,7 @@ int zmk_rgb_underglow_select_effect(int effect) {
state.current_effect = effect; state.current_effect = effect;
state.animation_step = 0; state.animation_step = 0;
state.layer_enabled = (effect == UNDERGLOW_EFFECT_LAYER_INDICATORS);
return zmk_rgb_underglow_save_state(); return zmk_rgb_underglow_save_state();
} }