From 27f75032f90259464a1d1865279b19327b737b9d Mon Sep 17 00:00:00 2001
From: afiqzudinhadi <18133351+afiqzudinhadi@users.noreply.github.com>
Date: Mon, 22 Jun 2026 15:34:10 +0800
Subject: [PATCH] Add RGB, media, and output controls to HUB layer and thumbs
---
README.md | 27 +++++---
config/corne.keymap | 37 +++++++++--
keymap-drawer/corne.svg | 131 ++++++++++++++++++++++++++++++++++-----
keymap-drawer/corne.yaml | 40 ++++++------
4 files changed, 184 insertions(+), 51 deletions(-)
diff --git a/README.md b/README.md
index 5b0b588..698b106 100644
--- a/README.md
+++ b/README.md
@@ -65,7 +65,7 @@ Key positions reference:
` Q G M L W | Y F U B ; ->HUB
[HUB] D S T N R | I A E O H '
LSHFT Z X C V J | K P , . / RSHFT
- _ CTRL GUI | SPC ALT _
+ [RGB] CTRL GUI | SPC ALT MUTE/PP
Combos (layers 0+1):
top+home row same col = 1-0, shift+combo = ! @ # $ % ^ & * ( )
@@ -74,6 +74,8 @@ Combos (layers 0+1):
U+B (I+O on QWRT) = BSPC
E+O (K+L on QWRT) = ENTER
[HUB] = hold opens HUB layer, release goes back
+[RGB] = tap-dance: 1×=toggle, 2×=effect fwd, 3×=effect rev
+MUTE/PP = tap mute, hold play/pause
```
### Layer 1: QWRT (QWERTY)
@@ -81,10 +83,12 @@ Combos (layers 0+1):
` Q W E R T | Y U I O P ->HUB
[HUB] A S D F G | H J K L ; '
LSHFT Z X C V B | N M , . / RSHFT
- _ CTRL GUI | SPC ALT _
+ [RGB] CTRL GUI | SPC ALT MUTE/PP
Combos: same as CARP (top+home = 1-0, W+E = ESC, S+D = TAB, I+O = BSPC, K+L = ENTER)
[HUB] = hold opens HUB layer, release goes back
+[RGB] = tap-dance: 1×=toggle, 2×=effect fwd, 3×=effect rev
+MUTE/PP = tap mute, hold play/pause
```
### Layer 2: STEN (Plover keyboard mode)
@@ -92,7 +96,7 @@ Combos: same as CARP (top+home = 1-0, W+E = ESC, S+D = TAB, I+O = BSPC, K+L = EN
_ # # # # # | # # # # # ->HUB
[HUB] S T P H * | * F P L T D
_ S K W R * | * R B G S Z
- _ A O | E U _
+ [RGB] A O | E U MUTE/PP
```
### Layer 3: FPS (WASD shifted right for ortho)
@@ -105,13 +109,20 @@ M/ALT Z X C V G | _ _ _ _ _ _
Hold-taps: 1=tap/ESC=hold, E=tap/3=hold, R=tap/4=hold, M=tap/ALT=hold
```
-### Layer 4: HUB
+### Layer 4: HUB (Utility — BT, RGB, Media, Nav)
```
-BT_CLR BT0 BT1 BT2 BT3 BT4 | + [ UP ] * =
-_ _ _ _ _ _ | - LEFT DOWN RIGHT / \
-LSHFT Z X C V _ | ->CARP ->QWRT ->STEN ->FPS _ RSHFT
- ESC CTRL GUI | SPC ALT _
+BT_CLR BT0 BT1 BT2 BT3 BT4 | + [ UP ] * =
+OUT_TOG HUE+ SAT+ BRT+ SCRN+ VOL+ | - LEFT DOWN RIGHT / \
+LSHFT HUE- SAT- BRT- SCRN- VOL- | ->CARP ->QWRT ->STEN ->FPS [CLR] RSHFT
+ [RGB] CTRL GUI | SPC ALT MUTE/PP
+OUT_TOG = toggle USB/BLE output
+HUE/SAT/BRT = RGB underglow hue, saturation, brightness
+SCRN = display brightness (C_BRI_UP/DN)
+VOL = volume up/down
+[RGB] = tap-dance: 1×=toggle, 2×=effect fwd, 3×=effect rev
+[CLR] = tap-dance color presets: 1×=purple, 2×=white, 3×=red, 4×=blue, 5×=green
+MUTE/PP = tap mute, hold play/pause
```
# Related Resources
diff --git a/config/corne.keymap b/config/corne.keymap
index d8774d6..973f0c2 100644
--- a/config/corne.keymap
+++ b/config/corne.keymap
@@ -19,6 +19,31 @@
};
/ {
+ behaviors {
+ ht_mute_pp: ht_mute_pp {
+ compatible = "zmk,behavior-hold-tap";
+ #binding-cells = <2>;
+ tapping-term-ms = <200>;
+ bindings = <&kp>, <&kp>;
+ };
+ td_rgb: td_rgb {
+ compatible = "zmk,behavior-tap-dance";
+ #binding-cells = <0>;
+ tapping-term-ms = <300>;
+ bindings = <&rgb_ug RGB_TOG>, <&rgb_ug RGB_EFF>, <&rgb_ug RGB_EFR>;
+ };
+ td_colors: td_colors {
+ compatible = "zmk,behavior-tap-dance";
+ #binding-cells = <0>;
+ tapping-term-ms = <400>;
+ bindings = <&rgb_ug RGB_COLOR_HSB(270,89,90)>,
+ <&rgb_ug RGB_COLOR_HSB(0,0,100)>,
+ <&rgb_ug RGB_COLOR_HSB(0,100,100)>,
+ <&rgb_ug RGB_COLOR_HSB(240,100,100)>,
+ <&rgb_ug RGB_COLOR_HSB(120,100,100)>;
+ };
+ };
+
combos {
compatible = "zmk,combos";
// Top + home row combos = numbers (like ecosteno)
@@ -51,7 +76,7 @@
&kp GRAVE &kp Q &kp G &kp M &kp L &kp W &kp Y &kp F &kp U &kp B &kp SEMI &to 4
&mo 4 &kp D &kp S &kp T &kp N &kp R &kp I &kp A &kp E &kp O &kp H &kp SQT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp J &kp K &kp P &kp COMMA &kp DOT &kp FSLH &kp RSHFT
- &none &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none
+ &td_rgb &kp LCTRL &kp LGUI &kp SPACE &kp RALT &ht_mute_pp C_PLAY_PAUSE C_MUTE
>;
};
@@ -61,7 +86,7 @@
&kp GRAVE &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &to 4
&mo 4 &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT
- &none &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none
+ &td_rgb &kp LCTRL &kp LGUI &kp SPACE &kp RALT &ht_mute_pp C_PLAY_PAUSE C_MUTE
>;
};
@@ -71,7 +96,7 @@
&none &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &to 4
&mo 4 &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT
&none &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
- &none &kp C &kp V &kp N &kp M &none
+ &td_rgb &kp C &kp V &kp N &kp M &ht_mute_pp C_PLAY_PAUSE C_MUTE
>;
};
@@ -89,9 +114,9 @@
display-name = "HUB";
bindings = <
&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp PLUS &kp LBKT &kp UP &kp RBKT &kp ASTRK &kp EQUAL
-&none &none &none &none &none &none &kp MINUS &kp LEFT &kp DOWN &kp RIGHT &kp FSLH &kp BSLH
-&kp LSHFT &kp Z &kp X &kp C &kp V &none &to 0 &to 1 &to 2 &to 3 &none &kp RSHFT
- &kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none
+&out OUT_TOG &rgb_ug RGB_HUI &rgb_ug RGB_SAI &rgb_ug RGB_BRI &kp C_BRI_UP &kp C_VOL_UP &kp MINUS &kp LEFT &kp DOWN &kp RIGHT &kp FSLH &kp BSLH
+&kp LSHFT &rgb_ug RGB_HUD &rgb_ug RGB_SAD &rgb_ug RGB_BRD &kp C_BRI_DN &kp C_VOL_DN &to 0 &to 1 &to 2 &to 3 &td_colors &kp RSHFT
+ &td_rgb &kp LCTRL &kp LGUI &kp SPACE &kp RALT &ht_mute_pp C_PLAY_PAUSE C_MUTE
>;
};
diff --git a/keymap-drawer/corne.svg b/keymap-drawer/corne.svg
index c5fcf24..26a8ff4 100644
--- a/keymap-drawer/corne.svg
+++ b/keymap-drawer/corne.svg
@@ -15,6 +15,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/* end glyphs */