From 7041dbccd5beb7bfa40be1b69b755f50bf8b76ac Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Mon, 22 Jun 2026 15:34:10 +0800 Subject: [PATCH 01/10] Add RGB, media, and output controls to HUB layer and thumbs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - HUB layer: RGB hue/sat/brightness, volume, screen brightness, OUT_TOG - Tap-dance td_rgb on thumb: 1×=toggle, 2×=effect fwd, 3×=effect rev - Tap-dance td_colors on HUB pos 34: 5 color presets (purple/white/red/blue/green) - Hold-tap mute/play-pause on right outer thumb (CARP/QWRT/STEN/HUB) - Update README with new layer diagrams and legends Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 27 +++++++++++++++++++-------- config/corne.keymap | 37 +++++++++++++++++++++++++++++++------ 2 files changed, 50 insertions(+), 14 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 >; }; From b894e53a360b9e09f07f6e0a08847b86547103e7 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Tue, 23 Jun 2026 01:05:27 +0800 Subject: [PATCH 02/10] Integrate zmk-javelin-steno module - west.yml: add zmk-javelin-steno module + javelin-steno source - corne.conf: enable steno engine with Plover + Lapwing dicts - corne.keymap: replace steno layer with &javsteno behavior bindings --- config/corne.conf | 8 ++ config/corne.keymap | 10 +- config/west.yml | 15 +++ keymap-drawer/corne.svg | 272 +++++++++++++++++++++++++++++++-------- keymap-drawer/corne.yaml | 108 ++++++++-------- 5 files changed, 302 insertions(+), 111 deletions(-) diff --git a/config/corne.conf b/config/corne.conf index c10e7a9..a1bcaec 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -126,6 +126,14 @@ CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=5 # ref: https://zmk.dev/docs/config/system#hid CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y +### JAVELIN STENO ENGINE +CONFIG_ZMK_JAVELIN_STENO=y +CONFIG_ZMK_JAVELIN_STENO_DICT_PLOVER=y +CONFIG_ZMK_JAVELIN_STENO_DICT_LAPWING=y +CONFIG_CPLUSPLUS=y +CONFIG_LIB_CPLUSPLUS=y +CONFIG_HEAP_MEM_POOL_SIZE=32768 + ### DEBUG OPTIONS # CONFIG_ZMK_USB_LOGGING=y # CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000 diff --git a/config/corne.keymap b/config/corne.keymap index 973f0c2..0ec9836 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -13,6 +13,8 @@ #include #include #include +#include +#include &led_strip { chain-length = <27>; @@ -93,10 +95,10 @@ steno_layer { display-name = "STEN"; bindings = < -&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 - &td_rgb &kp C &kp V &kp N &kp M &ht_mute_pp C_PLAY_PAUSE C_MUTE +&none &javsteno STENO_NUM1 &javsteno STENO_NUM2 &javsteno STENO_NUM3 &javsteno STENO_NUM4 &javsteno STENO_NUM5 &javsteno STENO_NUM6 &javsteno STENO_NUM7 &javsteno STENO_NUM8 &javsteno STENO_NUM9 &javsteno STENO_NUM10 &to 4 +&mo 4 &javsteno STENO_S1 &javsteno STENO_TL &javsteno STENO_PL &javsteno STENO_HL &javsteno STENO_STAR1 &javsteno STENO_STAR3 &javsteno STENO_FR &javsteno STENO_PR &javsteno STENO_LR &javsteno STENO_TR &javsteno STENO_DR +&none &javsteno STENO_S2 &javsteno STENO_KL &javsteno STENO_WL &javsteno STENO_RL &javsteno STENO_STAR2 &javsteno STENO_STAR4 &javsteno STENO_RR &javsteno STENO_BR &javsteno STENO_GR &javsteno STENO_SR &javsteno STENO_ZR + &none &javsteno STENO_A &javsteno STENO_O &javsteno STENO_E &javsteno STENO_U &none >; }; diff --git a/config/west.yml b/config/west.yml index 1c4f319..8a02c72 100644 --- a/config/west.yml +++ b/config/west.yml @@ -11,6 +11,12 @@ manifest: # fork of zmk-nice-oled with custom KM medal animation - name: KeebMaker url-base: https://github.com/KeebMaker + # javelin steno engine module + - name: afiqzudinhadi + url-base: https://github.com/afiqzudinhadi + # javelin steno engine source + - name: jthlim + url-base: https://github.com/jthlim 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 @@ -36,5 +42,14 @@ manifest: - name: zmk-oled-adapter remote: mctechnology17 revision: main + # javelin steno engine module + - name: zmk-javelin-steno + remote: afiqzudinhadi + revision: main + # javelin steno engine source (fetched into module's javelin/ dir) + - name: javelin-steno + remote: jthlim + revision: main + path: zmk-javelin-steno/javelin self: path: config diff --git a/keymap-drawer/corne.svg b/keymap-drawer/corne.svg index c5fcf24..82e3be7 100644 --- a/keymap-drawer/corne.svg +++ b/keymap-drawer/corne.svg @@ -15,6 +15,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* end glyphs */