Initial: modular per-key RGB layer effect for ZMK
ZMK module providing per-key per-layer RGB effects via the modular effect API (zmk_rgb_effect). Extracted from darknao's fork patches. Contents: - Layer effect: registers via ZMK_RGB_EFFECT_DEFINE, renders per-key colors based on active keymap layer - Behaviors: underglow_color, underglow_battery, underglow_indicators - DTS bindings: zmk,underglow-layer + behavior bindings - Event: underglow_color_changed for reactive refresh Requires: ZMK core with rgb-modular branch (effect registration API)
This commit is contained in:
commit
569dc85e0c
15 changed files with 557 additions and 0 deletions
16
include/zmk/events/underglow_color_changed.h
Normal file
16
include/zmk/events/underglow_color_changed.h
Normal 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);
|
||||
31
include/zmk/rgb_underglow_layer.h
Normal file
31
include/zmk/rgb_underglow_layer.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (c) 2020 The ZMK Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <zmk/keymap.h>
|
||||
|
||||
#define ZMK_RGB_CHILD_LEN_PLUS_ONE(node) 1 +
|
||||
|
||||
#define ZMK_RGBMAP_LAYERS_LEN \
|
||||
(DT_FOREACH_CHILD(DT_INST(0, zmk_underglow_layer), ZMK_RGB_CHILD_LEN_PLUS_ONE) 0)
|
||||
|
||||
#define ZMK_RGBMAP_EXTRACT_BINDING(idx, drv_inst) \
|
||||
{ \
|
||||
.behavior_dev = DEVICE_DT_NAME(DT_PHANDLE_BY_IDX(drv_inst, bindings, idx)), \
|
||||
.param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(drv_inst, bindings, idx, param1), (0), \
|
||||
(DT_PHA_BY_IDX(drv_inst, bindings, idx, param1))), \
|
||||
.param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(drv_inst, bindings, idx, param2), (0), \
|
||||
(DT_PHA_BY_IDX(drv_inst, bindings, idx, param2))), \
|
||||
}
|
||||
|
||||
const int rgb_pixel_lookup(int idx);
|
||||
const int zmk_rgbmap_id(uint8_t layer);
|
||||
const int zmk_rgbmap_fade_delay(uint8_t layer);
|
||||
|
||||
const struct zmk_behavior_binding *rgb_underglow_get_bindings(uint8_t layer);
|
||||
|
||||
uint8_t rgb_underglow_top_layer_with_state(uint32_t state_to_test);
|
||||
uint8_t rgb_underglow_top_layer(void);
|
||||
Loading…
Add table
Add a link
Reference in a new issue