diff --git a/README.md b/README.md index a19a920..0d24370 100644 --- a/README.md +++ b/README.md @@ -266,3 +266,45 @@ ZMK Studio is disabled by default in this config. To enable live keymap editing: **Limitations:** Cannot add combos, custom behaviors, or change display/RGB config. **Warning:** ZMK Studio saves changes to flash storage. These override the compiled keymap. If layers behave unexpectedly after flashing, do a [Settings Reset](#settings-reset). + +# Per-Key RGB Layer Indicators + +Uses [darknao's per-key RGB patches](https://github.com/darknao/zmk) cherry-picked onto ZMK v0.3.0 at [afiqzudinhadi/zmk@rgb-layer](https://github.com/afiqzudinhadi/zmk/tree/rgb-layer). + +Effect #4 (Layer Indicators) shows different per-key colors based on active keymap layer. Colors are defined as hex RGB values in `corne.keymap` under the `underglow-layer` node. + +### LED Chain Order (Foostan Corne v1.1) + +Column-by-column snake, not row-by-row: +``` +Chain 0-5: Underglow (6 LEDs) +Chain 6-9: Thumb outer → bottom/home/top col0 +Chain 10-12: Top/home/bottom col1 +Chain 13-14: Thumb mid → Thumb inner +Chain 15-17: Bottom/home/top col2 +Chain 18-20: Top/home/bottom col3 +Chain 21-23: Bottom/home/top col4 +Chain 24-26: Top/home/bottom col5 +``` + +### Changing Layer Colors + +Edit `underglow-layer` bindings in `config/corne.keymap`. Each layer has 42 entries (one per key position): + +```dts +carp_rgb { + layer-id = <0>; + bindings = <&ug GREEN &ug BLUE ...>; // 42 entries +}; +``` + +Available colors (`dt-bindings/zmk/rgb_colors.h`): `GREEN` `RED` `BLUE` `TEAL` `ORANGE` `YELLOW` `GOLD` `PURPLE` `PINK` `WHITE` `___` (off) + +Custom colors: `#define CYAN 0x00ffff` then `&ug CYAN` + +### Notes + +- **`chain-length = <27>`** must be set in `corne.keymap` — the fork's shield overlay defaults to 10. +- **Underglow LEDs** turn off on effect #4 (mapped to `255` in pixel-lookup). To give them layer colors, map to key positions instead of `255`. +- Brightness/hue/saturation controls don't affect layer indicator colors ([#1](https://github.com/afiqzudinhadi/zmk/issues/1), [#4](https://github.com/afiqzudinhadi/zmk/issues/4)). +- Custom RGB effects can be added in the [ZMK fork](https://github.com/afiqzudinhadi/zmk/tree/rgb-layer) (`app/src/rgb_underglow.c`). diff --git a/config/corne.conf b/config/corne.conf index 254d2b5..756099e 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -72,12 +72,12 @@ CONFIG_ZMK_EXT_POWER=y ### RGB UNDERGLOW CONFIG_ZMK_RGB_UNDERGLOW=y -CONFIG_ZMK_RGB_UNDERGLOW_ON_START=n +CONFIG_ZMK_RGB_UNDERGLOW_ON_START=y CONFIG_WS2812_STRIP=y # 0=Solid 1=Breathe 2=Spectrum 3=Swirl -CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=3 +CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=4 CONFIG_ZMK_RGB_UNDERGLOW_BRT_STEP=1 -CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y +CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=n CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=n ### PER-KEY RGB LAYER (darknao fork) diff --git a/config/corne.keymap b/config/corne.keymap index 19b4f4d..8da5a66 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -15,6 +15,10 @@ #include #include +&led_strip { + chain-length = <27>; +}; + / { behaviors { ht_mute_pp: ht_mute_pp { @@ -81,12 +85,20 @@ */ underglow-layer { compatible = "zmk,underglow-layer"; + /* Foostan Corne v1.1 LED chain (left half): + * Column-by-column snake with interleaved thumbs. + * chain 0-5: underglow (skip) + * chain 6-8: thumb0 → bottom/home/top col0 + * chain 9-12: top/home/bottom col1 → thumb1 → thumb2 + * chain 13-17: bottom/home/top col2 → top/home/bottom col3 + * chain 18-22: bottom/home/top col4 → top/home/bottom col5 + */ 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 + 36 24 12 0 1 13 + 25 37 38 26 14 2 + 3 15 27 28 16 4 + 5 17 29 >; carp_rgb {