From af8df3832231ae586ed491b77614b2fc555e6375 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Wed, 24 Jun 2026 21:51:55 +0800 Subject: [PATCH 01/11] Add steno engine module + steno layer on Corne --- config/corne.conf | 4 ++ config/corne.keymap | 14 +++-- config/west.yml | 4 ++ keymap-drawer/corne.svg | 111 +++++++++++++++++++++++++++++++++++++++ keymap-drawer/corne.yaml | 76 +++++++++++++-------------- 5 files changed, 167 insertions(+), 42 deletions(-) diff --git a/config/corne.conf b/config/corne.conf index 9b5f327..0227a92 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -117,6 +117,10 @@ CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=5 # ref: https://zmk.dev/docs/config/system#hid CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y +### STENO ENGINE +CONFIG_STENO_ENGINE=y +CONFIG_STENO_DICT_TEST=y + ### 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 8da5a66..e2727b3 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -14,6 +14,8 @@ #include #include #include +#include +#include &led_strip { chain-length = <27>; @@ -198,11 +200,15 @@ steno_layer { display-name = "STEN"; + // _ # # # # # | # # # # # ->HUB + // [HUB] S T P H * | * F P L T D + // _ S K W R * | * R B G S Z + // [RGB] A O | E U MUTE/PP bindings = < -&none &none &none &none &none &none &none &none &none &none &none &to 4 -&mo 4 &none &none &none &none &none &none &none &none &none &none &none -&none &none &none &none &none &none &none &none &none &none &none &none - &none &none &none &none &none &none +&none &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &steno STENO_NUM &to 4 +&mo 4 &steno STENO_SL &steno STENO_TL &steno STENO_PL &steno STENO_HL &steno STENO_STAR &steno STENO_STAR &steno STENO_FR &steno STENO_PR &steno STENO_LR &steno STENO_TR &steno STENO_DR +&none &steno STENO_SL &steno STENO_KL &steno STENO_WL &steno STENO_RL &steno STENO_STAR &steno STENO_STAR &steno STENO_RR &steno STENO_BR &steno STENO_GR &steno STENO_SR &steno STENO_ZR + &td_rgb &steno STENO_A &steno STENO_O &steno STENO_E &steno STENO_U &ht_mute_pp C_PLAY_PAUSE C_MUTE >; }; diff --git a/config/west.yml b/config/west.yml index 27c389f..cdb36e2 100644 --- a/config/west.yml +++ b/config/west.yml @@ -40,5 +40,9 @@ manifest: - name: zmk-oled-adapter remote: mctechnology17 revision: main + # Steno engine + - name: zmk-steno-engine + remote: afiqzudinhadi-zmk + revision: optimize-dict self: path: config diff --git a/keymap-drawer/corne.svg b/keymap-drawer/corne.svg index 887c9d8..32d1013 100644 --- a/keymap-drawer/corne.svg +++ b/keymap-drawer/corne.svg @@ -752,33 +752,63 @@ rect.held, rect.combo.held { + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + + +&stenoSTENO_NUM + @@ -793,90 +823,171 @@ rect.held, rect.combo.held { + +&stenoSTENO_SL + + +&stenoSTENO_TL + + +&stenoSTENO_PL + + +&stenoSTENO_HL + + +&stenoSTENO_STAR + + +&stenoSTENO_STAR + + +&stenoSTENO_FR + + +&stenoSTENO_PR + + +&stenoSTENO_LR + + +&stenoSTENO_TR + + +&stenoSTENO_DR + + +&stenoSTENO_SL + + +&stenoSTENO_KL + + +&stenoSTENO_WL + + +&stenoSTENO_RL + + +&stenoSTENO_STAR + + +&stenoSTENO_STAR + + +&stenoSTENO_RR + + +&stenoSTENO_BR + + +&stenoSTENO_GR + + +&stenoSTENO_SR + + +&stenoSTENO_ZR + +&td_rgb + +&stenoSTENO_A + + +&stenoSTENO_O + + +&stenoSTENO_E + + +&stenoSTENO_U + +MUTE +PLAY PAUSE diff --git a/keymap-drawer/corne.yaml b/keymap-drawer/corne.yaml index 9dffbde..b152cff 100644 --- a/keymap-drawer/corne.yaml +++ b/keymap-drawer/corne.yaml @@ -88,47 +88,47 @@ layers: - {t: MUTE, h: PLAY PAUSE} STEN: - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' + - '&steno STENO_NUM' - {t: HUB, h: toggle} - HUB + - '&steno STENO_SL' + - '&steno STENO_TL' + - '&steno STENO_PL' + - '&steno STENO_HL' + - '&steno STENO_STAR' + - '&steno STENO_STAR' + - '&steno STENO_FR' + - '&steno STENO_PR' + - '&steno STENO_LR' + - '&steno STENO_TR' + - '&steno STENO_DR' - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' + - '&steno STENO_SL' + - '&steno STENO_KL' + - '&steno STENO_WL' + - '&steno STENO_RL' + - '&steno STENO_STAR' + - '&steno STENO_STAR' + - '&steno STENO_RR' + - '&steno STENO_BR' + - '&steno STENO_GR' + - '&steno STENO_SR' + - '&steno STENO_ZR' + - '&td_rgb' + - '&steno STENO_A' + - '&steno STENO_O' + - '&steno STENO_E' + - '&steno STENO_U' + - {t: MUTE, h: PLAY PAUSE} FPS: - {t: '1', h: Esc} - '2' From 9a8bc62868ea73d427929ff998dfd81c629af7fc Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Wed, 24 Jun 2026 21:52:48 +0800 Subject: [PATCH 02/11] Enable USB logging on left half via snippet + cmake-args --- build.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.yaml b/build.yaml index 8da0aa2..90eae80 100644 --- a/build.yaml +++ b/build.yaml @@ -4,6 +4,8 @@ include: ### CORNE START ### - board: nice_nano_v2 shield: corne_left nice_oled + snippet: zmk-usb-logging + cmake-args: -DCONFIG_ZMK_USB_LOGGING=y -DCONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000 artifact-name: nice_corne_left_oled_rgb - board: nice_nano_v2 shield: corne_right nice_oled From 3f4f8c4c4ba4223e33afe14ff51858867696715c Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Wed, 1 Jul 2026 23:12:07 +0800 Subject: [PATCH 03/11] README: fix stale rgb-layer branch reference --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a74d8d..37a17d1 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ The BLE name is cached in device settings. Do a [Settings Reset](#settings-reset ### Hardware -54 WS2812 LEDs total — 6 underglow + 21 per-key per half. `chain-length = <27>` set in both `config/nice_nano_v2.overlay` and `corne.keymap` (the [ZMK fork](https://github.com/afiqzudinhadi/zmk/tree/rgb-layer)'s shield overlay defaults to 10, so keymap override is required). +54 WS2812 LEDs total — 6 underglow + 21 per-key per half. `chain-length = <27>` set in both `config/nice_nano_v2.overlay` and `corne.keymap` (the [ZMK fork](https://github.com/afiqzudinhadi/zmk/tree/rgb-modular-v1.1)'s shield overlay defaults to 10, so keymap override is required). ### LED Chain Order (Foostan Corne v1.1) From d627a76292a6f465df95ee93b00777c2498cac9a Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Wed, 1 Jul 2026 23:14:11 +0800 Subject: [PATCH 04/11] Revert "README: fix stale rgb-layer branch reference" This reverts commit 3f4f8c4c4ba4223e33afe14ff51858867696715c. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 37a17d1..7a74d8d 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ The BLE name is cached in device settings. Do a [Settings Reset](#settings-reset ### Hardware -54 WS2812 LEDs total — 6 underglow + 21 per-key per half. `chain-length = <27>` set in both `config/nice_nano_v2.overlay` and `corne.keymap` (the [ZMK fork](https://github.com/afiqzudinhadi/zmk/tree/rgb-modular-v1.1)'s shield overlay defaults to 10, so keymap override is required). +54 WS2812 LEDs total — 6 underglow + 21 per-key per half. `chain-length = <27>` set in both `config/nice_nano_v2.overlay` and `corne.keymap` (the [ZMK fork](https://github.com/afiqzudinhadi/zmk/tree/rgb-layer)'s shield overlay defaults to 10, so keymap override is required). ### LED Chain Order (Foostan Corne v1.1) From a2559b591358f74092488e32e188b50e38894ffd Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 00:05:28 +0800 Subject: [PATCH 05/11] Retrigger: fix infinite recursion in steno From 468d4a77c21ccefa3e114df3a7d17844d7f7dda2 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 00:47:04 +0800 Subject: [PATCH 06/11] Switch to Plover MPHF dict (44.5K entries) --- config/corne.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/corne.conf b/config/corne.conf index 0227a92..a3e7544 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -119,7 +119,7 @@ CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y ### STENO ENGINE CONFIG_STENO_ENGINE=y -CONFIG_STENO_DICT_TEST=y +CONFIG_STENO_DICT_PLOVER=y ### DEBUG OPTIONS # CONFIG_ZMK_USB_LOGGING=y From 70d48a62fde9a2dc8deee41049bf189d3b0c81c2 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 01:23:20 +0800 Subject: [PATCH 07/11] Retrigger: block-compressed MPHF (61.7K entries) From ba4d802b246daf38748a25c4319f66768b490158 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 01:27:47 +0800 Subject: [PATCH 08/11] Retrigger: 420KB dict budget From b94abfad25c1ae28cb5cbf223e2fade96abdfc7d Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 09:13:13 +0800 Subject: [PATCH 09/11] Switch to split-combined branch, remove USB logging for full dict budget --- build.yaml | 2 -- config/west.yml | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/build.yaml b/build.yaml index 90eae80..8da0aa2 100644 --- a/build.yaml +++ b/build.yaml @@ -4,8 +4,6 @@ include: ### CORNE START ### - board: nice_nano_v2 shield: corne_left nice_oled - snippet: zmk-usb-logging - cmake-args: -DCONFIG_ZMK_USB_LOGGING=y -DCONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000 artifact-name: nice_corne_left_oled_rgb - board: nice_nano_v2 shield: corne_right nice_oled diff --git a/config/west.yml b/config/west.yml index cdb36e2..7b7dbe4 100644 --- a/config/west.yml +++ b/config/west.yml @@ -43,6 +43,6 @@ manifest: # Steno engine - name: zmk-steno-engine remote: afiqzudinhadi-zmk - revision: optimize-dict + revision: split-combined self: path: config From aafce376b00b392d1e65d533d93332c23194f496 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 09:17:17 +0800 Subject: [PATCH 10/11] Retrigger: dict embed fix From ab732e0800623881273b071f2cf3d59b350dba0a Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Mon, 6 Jul 2026 09:08:41 +0800 Subject: [PATCH 11/11] Enable STENO_SPLIT_DICT required by v4 dict format --- config/corne.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/config/corne.conf b/config/corne.conf index a3e7544..359567e 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -120,6 +120,7 @@ CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y ### STENO ENGINE CONFIG_STENO_ENGINE=y CONFIG_STENO_DICT_PLOVER=y +CONFIG_STENO_SPLIT_DICT=y ### DEBUG OPTIONS # CONFIG_ZMK_USB_LOGGING=y