refactor: modular RGB effect registration API

Replace hardcoded effect enum/switch-case with STRUCT_SECTION_ITERABLE
registration. Effects register via ZMK_RGB_EFFECT_DEFINE macro.

Core API (rgb_effect.h):
- zmk_rgb_effect_ctx passed to render callbacks
- zmk_rgb_request_refresh() for static effects
- ZMK_RGB_EFFECT_STATIC flag skips animation timer
- on_select/on_deselect lifecycle hooks
- zmk_rgb_hsb_to_rgb/scale helpers now public

Built-in effects (solid/breathe/spectrum/swirl) use same API.
Per-key layer RGB, behaviors, DTS bindings extracted to external
zmk-rgb-effects module.
This commit is contained in:
afiqzudinhadi 2026-07-01 14:29:24 +08:00
parent d94d1597c1
commit 8f3c4d3929
16 changed files with 209 additions and 656 deletions

View file

@ -322,8 +322,8 @@ config ZMK_RGB_UNDERGLOW_SPD_START
range 1 5
config ZMK_RGB_UNDERGLOW_EFF_START
int "RGB underglow start effect int value related to the effect enum list"
range 0 4
int "RGB underglow start effect index (clamped to available effects at runtime)"
range 0 15
config ZMK_RGB_UNDERGLOW_ON_START
bool "RGB underglow starts on by default"
@ -335,10 +335,6 @@ config ZMK_RGB_UNDERGLOW_AUTO_OFF_USB
bool "Turn off RGB underglow when USB is disconnected"
depends on USB_DEVICE_STACK
config EXPERIMENTAL_RGB_LAYER
bool "Experimental per-key per-layer RGB underglow"
default n
endif # ZMK_RGB_UNDERGLOW
menuconfig ZMK_BACKLIGHT