diff --git a/config/corne.conf b/config/corne.conf index 72ae7ff..8e4987d 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -79,6 +79,9 @@ CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=3 CONFIG_ZMK_RGB_UNDERGLOW_BRT_STEP=1 CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=n + +### PER-KEY RGB LAYER (darknao fork) +CONFIG_EXPERIMENTAL_RGB_LAYER=y # CONFIG_ZMK_RGB_UNDERGLOW_HUE_STEP=30 # CONFIG_ZMK_RGB_UNDERGLOW_SAT_STEP=2 # CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=240 diff --git a/config/corne.keymap b/config/corne.keymap index eee5b69..19b4f4d 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -13,10 +13,7 @@ #include #include #include - -&led_strip { - chain-length = <27>; -}; +#include / { behaviors { @@ -67,6 +64,103 @@ combo_tab { key-positions = <14 15>; bindings = <&kp TAB>; layers = <0 1>; }; }; + /* + * Per-key RGB layer colors (darknao fork). + * + * pixel-lookup maps LED chain index → key position. + * Current mapping assumes left-half serpentine wiring: + * underglow(6) → row0(L→R) → row1(R→L) → row2(L→R) → thumbs(R→L) + * Right half will mirror left colors until per-half overlays are added. + * Adjust pixel-lookup if LEDs map to wrong keys on your PCB. + * + * Key positions: + * 0 1 2 3 4 5 | 6 7 8 9 10 11 + * 12 13 14 15 16 17 | 18 19 20 21 22 23 + * 24 25 26 27 28 29 | 30 31 32 33 34 35 + * 36 37 38 | 39 40 41 + */ + underglow-layer { + compatible = "zmk,underglow-layer"; + pixel-lookup = < + 255 255 255 255 255 255 + 0 1 2 3 4 5 + 17 16 15 14 13 12 + 24 25 26 27 28 29 + 38 37 36 + >; + + carp_rgb { + layer-id = <0>; + bindings = < + &ug WHITE &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug TEAL + &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug WHITE + &ug WHITE &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug TEAL + &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug WHITE + &ug WHITE &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug TEAL + &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug TEAL &ug WHITE + &ug PURPLE &ug WHITE &ug WHITE + &ug WHITE &ug WHITE &ug PURPLE + >; + }; + + qwrt_rgb { + layer-id = <1>; + bindings = < + &ug WHITE &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug BLUE + &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug WHITE + &ug WHITE &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug BLUE + &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug WHITE + &ug WHITE &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug BLUE + &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug WHITE + &ug PURPLE &ug WHITE &ug WHITE + &ug WHITE &ug WHITE &ug PURPLE + >; + }; + + sten_rgb { + layer-id = <2>; + bindings = < + &ug ___ &ug RED &ug RED &ug RED &ug RED &ug RED + &ug RED &ug RED &ug RED &ug RED &ug RED &ug WHITE + &ug WHITE &ug RED &ug RED &ug RED &ug RED &ug RED + &ug RED &ug RED &ug RED &ug RED &ug RED &ug RED + &ug ___ &ug RED &ug RED &ug RED &ug RED &ug RED + &ug RED &ug RED &ug RED &ug RED &ug RED &ug RED + &ug ___ &ug RED &ug RED + &ug RED &ug RED &ug ___ + >; + }; + + fps_rgb { + layer-id = <3>; + bindings = < + &ug ORANGE &ug ORANGE &ug BLUE &ug GREEN &ug BLUE &ug BLUE + &ug ___ &ug ___ &ug ___ &ug ___ &ug ___ &ug WHITE + &ug BLUE &ug ORANGE &ug GREEN &ug GREEN &ug GREEN &ug BLUE + &ug ___ &ug ___ &ug ___ &ug ___ &ug ___ &ug ___ + &ug ORANGE &ug BLUE &ug BLUE &ug BLUE &ug BLUE &ug BLUE + &ug ___ &ug ___ &ug ___ &ug ___ &ug ___ &ug ___ + &ug BLUE &ug ORANGE &ug GREEN + &ug ___ &ug ___ &ug ___ + >; + }; + + hub_rgb { + layer-id = <4>; + bindings = < + &ug RED &ug PURPLE &ug PURPLE &ug PURPLE &ug PURPLE &ug PURPLE + &ug BLUE &ug YELLOW &ug YELLOW &ug YELLOW &ug BLUE &ug BLUE + &ug ORANGE &ug ORANGE &ug ORANGE &ug ORANGE &ug TEAL &ug TEAL + &ug BLUE &ug YELLOW &ug YELLOW &ug YELLOW &ug BLUE &ug BLUE + &ug WHITE &ug ORANGE &ug ORANGE &ug ORANGE &ug TEAL &ug TEAL + &ug GREEN &ug GREEN &ug GREEN &ug GREEN &ug GOLD &ug WHITE + &ug PURPLE &ug WHITE &ug WHITE + &ug WHITE &ug WHITE &ug PURPLE + >; + fade-delay = <15>; + }; + }; + keymap { compatible = "zmk,keymap"; diff --git a/config/west.yml b/config/west.yml index 1c4f319..6f1aeb3 100644 --- a/config/west.yml +++ b/config/west.yml @@ -2,6 +2,9 @@ manifest: remotes: - name: zmkfirmware url-base: https://github.com/zmkfirmware + # ZMK fork with per-key RGB layer support (darknao's patches on v0.3.0) + - name: afiqzudinhadi-zmk + url-base: https://github.com/afiqzudinhadi # dongle_display - name: englmaxi url-base: https://github.com/englmaxi @@ -12,13 +15,11 @@ manifest: - name: KeebMaker url-base: https://github.com/KeebMaker projects: - # Pinned to v0.3.0 instead of `main`: ZMK main tracks Zephyr 4.1, whose - # board-model rewrite renamed `nice_nano_v2` (now `nice_nano//zmk`) and - # split the `WS2812_STRIP` Kconfig symbol per-driver. Bumping this back to - # `main` will break every build.yaml entry below until those are updated. + # Personal fork of ZMK v0.3.0 + darknao's per-key RGB layer patches. + # Base is v0.3.0 (not main) — see commit history for patch attribution. - name: zmk - remote: zmkfirmware - revision: v0.3.0 + remote: afiqzudinhadi-zmk + revision: rgb-layer import: app/west.yml # dongle_display - name: zmk-dongle-display