Custom Corne layout: Carpalx QGMLWY + QWERTY + Steno + FPS

- Rename keyboard to AfiqZudinCorne42
- Layer 0: Carpalx QGMLWY (primary)
- Layer 1: HUB (nav, BT, layer switcher)
- Layer 2: QWERTY (fallback)
- Layer 3: Steno (Plover keyboard mode)
- Layer 4: FPS (WASD shifted right for ortho, TBD)
- Number combos: top+home row same column
- I+P combo for backspace (RSI accommodation)
- Preserve vendor README as VENDOR_README.md
- New README with hardware info and setup guide
This commit is contained in:
afiqzudinhadi 2026-06-20 02:30:24 +08:00
parent 99033fe515
commit f612c760df
3 changed files with 695 additions and 46 deletions

View file

@ -19,66 +19,93 @@
};
/ {
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>; };
// I+P = BSPC (reduce right pinky usage)
combo_bspc { key-positions = <8 10>; bindings = <&kp BSPC>; layers = <0 2>; };
};
keymap {
compatible = "zmk,keymap";
default_layer {
display-name = "BAS";
// -----------------------------------------------------------------------------------------
// | ESC | Q | W | E | R | T | | Y | U | I | O | P | BKSP |
// | SHFT | A | S | D | F | G | | H | J | K | L | ; | ' |
// | ALT | Z | X | C | V | B | | N | M | , | . | / | GUI |
// | TAB | LWR | ENT | | SPC | RSE | ALT |
carpalx_layer {
display-name = "CARP";
bindings = <
&kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp DEL
&mt LSHFT TAB &kp A &kp S &kp D &lt 2 F &kp G &kp H &kp J &kp K &kp L &kp SEMI &mt RSHFT SQT
&kp LALT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp BSLH
&kp LWIN &mt LCTRL TAB &lt 1 RET &lt 2 SPACE &mt RCTRL BSPC &kp RWIN
&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 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 RET &kp RALT
>;
};
lower_layer {
display-name = "LOW";
hub_layer {
display-name = "HUB";
// -----------------------------------------------------------------------------------------
// | TAB | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BKSP |
// | LCTRL| BTCLR | BT0 | BT1 | BT2 | BT3 | | | | UP | | | |
// | ESC | | HOME| PGUP| PGDN| END | | | LFT | DWN | RGT | | |
// | GUI | | SPC | | ENT | | ALT |
// | 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 = <
&studio_unlock &bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &trans &kp HOME &kp UP &kp END &kp LS(LBKT) &trans
&sys_reset &kp LCTRL &kp LSHFT &kp LALT &kp LGUI &trans &trans &kp LEFT &kp DOWN &kp RIGHT &kp LS(RBKT) &trans
&trans &rgb_ug RGB_TOG &rgb_ug RGB_EFF &rgb_ug RGB_BRD &rgb_ug RGB_BRI &trans &trans &kp LPAR &kp RPAR &kp LBKT &kp RBKT &trans
&trans &trans &trans &trans &trans &trans
&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 2 &to 3 &to 4 &to 5 &none &kp RSHFT
&kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RET &kp RALT
>;
};
raise_layer {
display-name = "RAI";
// -----------------------------------------------------------------------------------------
// | TAB | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BKSP |
// | CTRL |RGB_TOG|RGB_HUI|RGB_SAI|RGB_VAI| | | - | = | [ | ] | \ | ` |
// | SHFT |RGB_MOD|RGB_HUD|RGB_SAD|RGB_VAD|QK_BOOT| | _ | + | { | } | "|" | ~ |
// | GUI | | SPC | | ENT | | ALT |
qwerty_layer {
display-name = "QWRT";
bindings = <
&trans &kp GRAVE &kp PRCNT &kp PIPE &kp AMPS &kp EQUAL &trans &kp N7 &kp N8 &kp N9 &kp F1 &kp F2
&trans &kp EXCL &kp AT &kp HASH &kp DLLR &kp LS(DOT) &trans &kp N4 &kp N5 &kp N6 &kp F3 &kp F4
&trans &kp CARET &kp ASTRK &kp LS(MINUS) &kp LS(EQUAL) &kp MINUS &trans &kp N1 &kp N2 &kp N3 &kp F5 &kp F6
&trans &trans &trans &kp RET &kp N0 &trans
&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 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 RET &kp RALT
>;
};
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 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
>;
};
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 = <
&kp ESC &kp N1 &kp Q &kp W &kp E &kp R &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &to 1
&kp TAB &kp LSHFT &kp A &kp S &kp D &kp F &none &none &none &none &none &none
&kp LCTRL &kp G &kp Z &kp X &kp C &kp V &none &none &none &none &none &none
&kp T &kp B &kp SPACE &none &none &none
>;
};
extra_1 {
status = "reserved";
};
extra_2 {
status = "reserved";
};
extra_3 {
status = "reserved";
};
};
};