Move HUB to layer 5 — fix hold-for-hub on non-CARP layers

ZMK layers have fixed priority by index. HUB at layer 1 was hidden
behind QWRT(2)/FPS(4). Moved HUB to layer 5 (highest) so &mo 5
always wins. Reordered: 0=CARP 1=QWRT 2=STEN 3=FPS 4=reserved 5=HUB.
This commit is contained in:
afiqzudinhadi 2026-06-20 22:48:59 +08:00
parent 1914bb946f
commit f7377f9f48
2 changed files with 48 additions and 63 deletions

View file

@ -42,7 +42,7 @@ This repository contains the custom keymaps for the Corne split keyboard. It als
| BLE Address | `E8:9F:65:F3:75:D5` |
| USB Vendor ID | `0x1D50` (OpenMoko) |
| USB Product ID | `0x615E` (ZMK default) |
| Device Name | `AfiqZudinCorne42` |
| Device Name | `Afiq Zudin Corne42` |
| Display | SSD1306 OLED 128x32 (nice_oled module) |
| LEDs | WS2812 RGB underglow, 27 LEDs |
| BT Profiles | 5 (BT0-BT4) |
@ -67,7 +67,7 @@ TAB D S T N R | I A E O H '
LSHFT Z X C V J | K P , . / RSHFT
ESC CTRL GUI | SPC ALT [HUB]
Combos (layers 0+2):
Combos (layers 0+1):
top+home row same col = 1-0, shift+combo = ! @ # $ % ^ & * ( )
E+O (K+L on QWRT) = BSPC
A+E (J+K on QWRT) = ENTER
@ -75,17 +75,7 @@ Combos (layers 0+2):
[HUB] = hold opens HUB layer, release goes back
```
### Layer 1: HUB
```
BT_CLR BT0 BT1 BT2 BT3 BT4 | + [ UP ] * =
USB/BT _ _ _ _ _ | - LEFT DOWN RIGHT / \
LSHFT Z X C V _ | ->CARP ->QWRT ->STEN ->FPS ->L5 RSHFT
ESC CTRL GUI | SPC ALT _
Combo: SPC+ALT = ENTER
```
### Layer 2: QWRT (QWERTY)
### Layer 1: QWRT (QWERTY)
```
` Q W E R T | Y U I O P ->HUB
TAB A S D F G | H J K L ; '
@ -96,7 +86,7 @@ Combos: same as CARP (top+home = 1-0, K+L = BSPC, J+K = ENTER, SPC+ALT = ENTER)
[HUB] = hold opens HUB layer, release goes back
```
### Layer 3: STEN (Plover keyboard mode)
### Layer 2: STEN (Plover keyboard mode)
```
_ # # # # # | # # # # # ->HUB
_ S T P H * | * F P L T D
@ -104,7 +94,7 @@ _ S K W R * | * R B G S Z
_ A O | E U _
```
### Layer 4: FPS (WASD shifted right for ortho)
### Layer 3: FPS (WASD shifted right for ortho)
```
1/ESC 2 Q [W] E/3 R/4 | 5 6 7 8 9 ->HUB
TAB SHFT [A] [S] [D] G | _ _ _ _ _ _
@ -116,7 +106,17 @@ Combo: SPC+ALT = ENTER (if ALT held via T)
[HUB] = hold opens HUB layer, release goes back
```
### Layer 5: Reserved (ZMK Studio)
### Layer 4: Reserved (ZMK Studio)
### Layer 5: HUB
```
BT_CLR BT0 BT1 BT2 BT3 BT4 | + [ UP ] * =
USB/BT _ _ _ _ _ | - LEFT DOWN RIGHT / \
LSHFT Z X C V _ | ->CARP ->QWRT ->STEN ->FPS ->L4 RSHFT
ESC CTRL GUI | SPC ALT _
Combo: SPC+ALT = ENTER
```
# Related Resources
@ -148,7 +148,7 @@ git clone git@github.com:afiqzudinhadi/zmk-config.git
ZMK Studio is enabled on this keyboard. You can edit the keymap live:
1. Go to [zmk.studio](https://zmk.studio/) in Chrome
2. Connect to `AfiqZudinCorne42` via USB or BLE
2. Connect to `Afiq Zudin Corne42` via USB or BLE
3. Edit layers visually — changes apply instantly
4. Changes persist on the keyboard (survives power cycle)
@ -221,7 +221,7 @@ If you changed the keyboard name or did a settings reset:
1. Open **System Settings → Bluetooth** on macOS
2. Remove the old keyboard entry (e.g. `Corne_Oled_RGB`)
3. Put the keyboard in pairing mode (it should be discoverable automatically)
4. Pair with `AfiqZudinCorne42`
4. Pair with `Afiq Zudin Corne42`
# Settings Reset

View file

@ -22,22 +22,22 @@
combos {
compatible = "zmk,combos";
// Top + home row combos = numbers (like ecosteno)
combo_1 { key-positions = <1 13>; bindings = <&kp N1>; layers = <0 2>; };
combo_2 { key-positions = <2 14>; bindings = <&kp N2>; layers = <0 2>; };
combo_3 { key-positions = <3 15>; bindings = <&kp N3>; layers = <0 2>; };
combo_4 { key-positions = <4 16>; bindings = <&kp N4>; layers = <0 2>; };
combo_5 { key-positions = <5 17>; bindings = <&kp N5>; layers = <0 2>; };
combo_6 { key-positions = <6 18>; bindings = <&kp N6>; layers = <0 2>; };
combo_7 { key-positions = <7 19>; bindings = <&kp N7>; layers = <0 2>; };
combo_8 { key-positions = <8 20>; bindings = <&kp N8>; layers = <0 2>; };
combo_9 { key-positions = <9 21>; bindings = <&kp N9>; layers = <0 2>; };
combo_0 { key-positions = <10 22>; bindings = <&kp N0>; layers = <0 2>; };
combo_1 { key-positions = <1 13>; bindings = <&kp N1>; layers = <0 1>; };
combo_2 { key-positions = <2 14>; bindings = <&kp N2>; layers = <0 1>; };
combo_3 { key-positions = <3 15>; bindings = <&kp N3>; layers = <0 1>; };
combo_4 { key-positions = <4 16>; bindings = <&kp N4>; layers = <0 1>; };
combo_5 { key-positions = <5 17>; bindings = <&kp N5>; layers = <0 1>; };
combo_6 { key-positions = <6 18>; bindings = <&kp N6>; layers = <0 1>; };
combo_7 { key-positions = <7 19>; bindings = <&kp N7>; layers = <0 1>; };
combo_8 { key-positions = <8 20>; bindings = <&kp N8>; layers = <0 1>; };
combo_9 { key-positions = <9 21>; bindings = <&kp N9>; layers = <0 1>; };
combo_0 { key-positions = <10 22>; bindings = <&kp N0>; layers = <0 1>; };
// K+L (QWRT) / E+O (CARP) = BSPC
combo_bspc { key-positions = <20 21>; bindings = <&kp BSPC>; layers = <0 2>; };
combo_bspc { key-positions = <20 21>; bindings = <&kp BSPC>; layers = <0 1>; };
// J+K (QWRT) / A+E (CARP) = ENTER
combo_enter { key-positions = <19 20>; bindings = <&kp RET>; layers = <0 2>; };
combo_enter { key-positions = <19 20>; bindings = <&kp RET>; layers = <0 1>; };
// SPC+ALT = ENTER (all layers except steno)
combo_thumb_enter { key-positions = <39 40>; bindings = <&kp RET>; layers = <0 1 2 4>; };
combo_thumb_enter { key-positions = <39 40>; bindings = <&kp RET>; layers = <0 5 1 3>; };
};
keymap {
@ -46,49 +46,27 @@
carpalx_layer {
display-name = "CARP";
bindings = <
&kp GRAVE &kp Q &kp G &kp M &kp L &kp W &kp Y &kp F &kp U &kp B &kp SEMI &to 1
&kp GRAVE &kp Q &kp G &kp M &kp L &kp W &kp Y &kp F &kp U &kp B &kp SEMI &to 5
&kp TAB &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
&kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &mo 1
>;
};
hub_layer {
display-name = "HUB";
// -----------------------------------------------------------------------------------------
// | STUDIO| BT_CLR| BT0 | BT1 | BT2 | BT3 | | HOME | UP | END | { | } | DEL |
// | ->BAS | CTRL | SHFT | ALT | GUI |->RAI | | LEFT | DOWN | RIGHT| [ | ] |->STN |
// | RESET | RGB_T | RGB_E| RGB- | RGB+ | | | ( | ) | \ | ` | ~ | |
// | | | | | | | |
// Press LSHFT position (->BAS) to go back to base
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
&out OUT_TOG &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 2 &to 3 &to 4 &to 5 &kp RSHFT
&kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none
&kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &mo 5
>;
};
qwerty_layer {
display-name = "QWRT";
bindings = <
&kp GRAVE &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &to 1
&kp GRAVE &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &to 5
&kp TAB &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
&kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &mo 1
&kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &mo 5
>;
};
steno_layer {
display-name = "STEN";
// Plover keyboard mode layout
// # bar: 1 2 3 4 5 | 6 7 8 9 0
// Upper steno: S T P H * | * F P L T D
// Lower steno: S K W R * | * R B G S Z
// Vowels: A O | E U
bindings = <
&none &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &to 1
&none &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &to 5
&none &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
@ -97,19 +75,26 @@
fps_layer {
display-name = "FPS";
// WASD shifted right 1 col for ortho comfort
// T, G, B remapped to left edge/thumbs
// Right side = macros (empty for now)
bindings = <
&mt ESC N1 &kp N2 &kp Q &kp W &mt N3 E &mt N4 R &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &to 1
&mt ESC N1 &kp N2 &kp Q &kp W &mt N3 E &mt N4 R &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &to 5
&kp TAB &kp LSHFT &kp A &kp S &kp D &kp G &none &none &none &none &none &none
&kp M &kp Z &kp X &kp C &kp V &kp F &none &none &none &none &none &none
&mt LALT T &kp LCTRL &kp SPACE &none &none &mo 1
&mt LALT T &kp LCTRL &kp SPACE &none &none &mo 5
>;
};
extra_1 {
status = "reserved";
};
hub_layer {
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
&out OUT_TOG &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 &to 4 &kp RSHFT
&kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none
>;
};
};
};