From 3fd9bc6dbe57ec6e6123cb998656182112026dd4 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 15:02:10 +0800 Subject: [PATCH 01/13] Add zmk-steno-engine module (split-combined branch) --- config/west.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/west.yml b/config/west.yml index 27c389f..79fe2a0 100644 --- a/config/west.yml +++ b/config/west.yml @@ -24,6 +24,10 @@ manifest: - name: zmk-rgb-effects remote: afiqzudinhadi-zmk revision: v1.1.1 + # Steno engine module (split-dict partition) + - name: zmk-steno-engine + remote: afiqzudinhadi-zmk + revision: split-combined # dongle_display - name: zmk-dongle-display remote: englmaxi From 71132375112ad9a78b5d47b700defa19b8d65498 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Thu, 2 Jul 2026 15:19:02 +0800 Subject: [PATCH 02/13] Enable steno engine with right-heavy split-dict partition --- config/corne.conf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/corne.conf b/config/corne.conf index 9b5f327..7c59bf9 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -117,6 +117,13 @@ 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 (split-dict: partition across both halves) +CONFIG_STENO_ENGINE=y +CONFIG_STENO_DICT_PLOVER=y +CONFIG_STENO_SPLIT_DICT=y +CONFIG_STENO_DICT_LEFT_MAX_SIZE=153600 +CONFIG_STENO_DICT_RIGHT_MAX_SIZE=512000 + ### DEBUG OPTIONS # CONFIG_ZMK_USB_LOGGING=y # CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000 From c9b4f12449bbfd99e54aa434811643894388765f Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 01:35:35 +0800 Subject: [PATCH 03/13] Steno v4: both dicts, rebalanced budgets (left 430KB, right 499KB) --- config/corne.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/corne.conf b/config/corne.conf index 7c59bf9..193de5d 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -117,12 +117,12 @@ 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 (split-dict: partition across both halves) +### STENO ENGINE (v4 union split-section: both dicts, both halves) CONFIG_STENO_ENGINE=y -CONFIG_STENO_DICT_PLOVER=y +CONFIG_STENO_DICT_BOTH=y CONFIG_STENO_SPLIT_DICT=y -CONFIG_STENO_DICT_LEFT_MAX_SIZE=153600 -CONFIG_STENO_DICT_RIGHT_MAX_SIZE=512000 +CONFIG_STENO_DICT_LEFT_MAX_SIZE=440320 +CONFIG_STENO_DICT_RIGHT_MAX_SIZE=511000 ### DEBUG OPTIONS # CONFIG_ZMK_USB_LOGGING=y From 5d8a49044dbd80a62239a52dd2fef7c08982a1f7 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 10:42:49 +0800 Subject: [PATCH 04/13] Debug: enable USB logging --- config/corne.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/corne.conf b/config/corne.conf index 193de5d..5db0d09 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -125,5 +125,5 @@ CONFIG_STENO_DICT_LEFT_MAX_SIZE=440320 CONFIG_STENO_DICT_RIGHT_MAX_SIZE=511000 ### DEBUG OPTIONS -# CONFIG_ZMK_USB_LOGGING=y +CONFIG_ZMK_USB_LOGGING=y # CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000 From 100da2e3c1476942d10c1c84bc41991b7d7ea9d8 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 10:47:34 +0800 Subject: [PATCH 05/13] Debug: USB logging needs CONFIG_SERIAL --- config/corne.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/config/corne.conf b/config/corne.conf index 5db0d09..931a8f0 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -126,4 +126,5 @@ CONFIG_STENO_DICT_RIGHT_MAX_SIZE=511000 ### DEBUG OPTIONS CONFIG_ZMK_USB_LOGGING=y +CONFIG_SERIAL=y # CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000 From d4a6c030c3d5b4b0c0901ae71db7b533794dde7b Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 10:50:21 +0800 Subject: [PATCH 06/13] Debug: revert conf logging hacks (snippet instead) --- config/corne.conf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/corne.conf b/config/corne.conf index 931a8f0..193de5d 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -125,6 +125,5 @@ CONFIG_STENO_DICT_LEFT_MAX_SIZE=440320 CONFIG_STENO_DICT_RIGHT_MAX_SIZE=511000 ### DEBUG OPTIONS -CONFIG_ZMK_USB_LOGGING=y -CONFIG_SERIAL=y +# CONFIG_ZMK_USB_LOGGING=y # CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000 From d50f4db658c38d99de184a72b3479ddab87c1475 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 10:50:38 +0800 Subject: [PATCH 07/13] Debug: zmk-usb-logging snippet on corne_left --- build.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/build.yaml b/build.yaml index 8da0aa2..03bcca0 100644 --- a/build.yaml +++ b/build.yaml @@ -4,6 +4,7 @@ include: ### CORNE START ### - board: nice_nano_v2 shield: corne_left nice_oled + snippet: zmk-usb-logging artifact-name: nice_corne_left_oled_rgb - board: nice_nano_v2 shield: corne_right nice_oled From 0dc88b002b5205de70ad26abec3b32b2df41aac3 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 11:02:58 +0800 Subject: [PATCH 08/13] Debug: bisect matrix for left-half boot crash --- build.yaml | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/build.yaml b/build.yaml index 03bcca0..4a9571e 100644 --- a/build.yaml +++ b/build.yaml @@ -1,19 +1,28 @@ --- include: - ### CORNE START ### + ### BISECT MATRIX (left half, usb logging snippet on all) ### - board: nice_nano_v2 shield: corne_left nice_oled snippet: zmk-usb-logging - artifact-name: nice_corne_left_oled_rgb + cmake-args: -DCONFIG_STENO_ENGINE=n + artifact-name: bisect_A_nosteno - board: nice_nano_v2 - shield: corne_right nice_oled - cmake-args: -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_CAT=n -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_KM=y - artifact-name: nice_corne_right_oled_rgb - ### CORNE END ### - - ### SETTINGS_RESET START ### + shield: corne_left nice_oled + snippet: zmk-usb-logging + artifact-name: bisect_B_full - board: nice_nano_v2 - shield: settings_reset - artifact-name: nice_settings_reset - ### SETTINGS_RESET END ### + shield: corne_left nice_oled + snippet: zmk-usb-logging + cmake-args: -DCONFIG_STENO_DEBUG_NO_GATT=y + artifact-name: bisect_C_nogatt + - board: nice_nano_v2 + shield: corne_left nice_oled + snippet: zmk-usb-logging + cmake-args: -DCONFIG_STENO_DEBUG_NO_EMBED=y + artifact-name: bisect_D_noembed + - board: nice_nano_v2 + shield: corne_left nice_oled + snippet: zmk-usb-logging + cmake-args: -DCONFIG_STENO_DEBUG_NO_GATT=y -DCONFIG_STENO_DEBUG_NO_EMBED=y + artifact-name: bisect_E_nogatt_noembed From 1167984fc9e8e284faf2f217484f99d2e7b9d4c9 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 11:26:25 +0800 Subject: [PATCH 09/13] Restore build matrix after bootloader bisect (root cause: bootloader 0.6.0 corrupts large flashes) --- build.yaml | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/build.yaml b/build.yaml index 4a9571e..8da0aa2 100644 --- a/build.yaml +++ b/build.yaml @@ -1,28 +1,18 @@ --- include: - ### BISECT MATRIX (left half, usb logging snippet on all) ### + ### CORNE START ### - board: nice_nano_v2 shield: corne_left nice_oled - snippet: zmk-usb-logging - cmake-args: -DCONFIG_STENO_ENGINE=n - artifact-name: bisect_A_nosteno + artifact-name: nice_corne_left_oled_rgb - board: nice_nano_v2 - shield: corne_left nice_oled - snippet: zmk-usb-logging - artifact-name: bisect_B_full + shield: corne_right nice_oled + cmake-args: -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_CAT=n -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_KM=y + artifact-name: nice_corne_right_oled_rgb + ### CORNE END ### + + ### SETTINGS_RESET START ### - board: nice_nano_v2 - shield: corne_left nice_oled - snippet: zmk-usb-logging - cmake-args: -DCONFIG_STENO_DEBUG_NO_GATT=y - artifact-name: bisect_C_nogatt - - board: nice_nano_v2 - shield: corne_left nice_oled - snippet: zmk-usb-logging - cmake-args: -DCONFIG_STENO_DEBUG_NO_EMBED=y - artifact-name: bisect_D_noembed - - board: nice_nano_v2 - shield: corne_left nice_oled - snippet: zmk-usb-logging - cmake-args: -DCONFIG_STENO_DEBUG_NO_GATT=y -DCONFIG_STENO_DEBUG_NO_EMBED=y - artifact-name: bisect_E_nogatt_noembed + shield: settings_reset + artifact-name: nice_settings_reset + ### SETTINGS_RESET END ### From 8cf31de9e18100dc6963fd3e169e4fd1a396fe04 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi <18133351+afiqzudinhadi@users.noreply.github.com> Date: Fri, 3 Jul 2026 11:37:09 +0800 Subject: [PATCH 10/13] Wire steno layer: standard steno layout on corne, tall-S both rows --- config/corne.keymap | 10 +++-- keymap-drawer/corne.svg | 87 ++++++++++++++++++++++++++++++++++++++-- keymap-drawer/corne.yaml | 56 +++++++++++++------------- 3 files changed, 118 insertions(+), 35 deletions(-) diff --git a/config/corne.keymap b/config/corne.keymap index 8da5a66..d622148 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -13,6 +13,8 @@ #include #include #include +#include +#include #include &led_strip { @@ -199,10 +201,10 @@ steno_layer { display-name = "STEN"; 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 +&steno STENO_NUM &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 +&mo 4 &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 +&none &none &none &none &none &none &none &none &none &none &none &to 4 + &none &steno STENO_A &steno STENO_O &steno STENO_E &steno STENO_U &none >; }; diff --git a/keymap-drawer/corne.svg b/keymap-drawer/corne.svg index 887c9d8..9a49bb7 100644 --- a/keymap-drawer/corne.svg +++ b/keymap-drawer/corne.svg @@ -749,42 +749,75 @@ rect.held, rect.combo.held { + +&stenoSTENO_NUM + + +&stenoSTENO_SL + + +&stenoSTENO_TL + + +&stenoSTENO_PL + + +&stenoSTENO_HL + + +&stenoSTENO_STAR + + +&stenoSTENO_STAR + + +&stenoSTENO_FR + + +&stenoSTENO_PR + + +&stenoSTENO_LR + + +&stenoSTENO_TR + - -HUB -toggle + +&stenoSTENO_DR + @@ -793,36 +826,69 @@ rect.held, rect.combo.held { + +&stenoSTENO_SL + + +&stenoSTENO_KL + + +&stenoSTENO_WL + + +&stenoSTENO_RL + + +&stenoSTENO_STAR + + +&stenoSTENO_STAR + + +&stenoSTENO_RR + + +&stenoSTENO_BR + + +&stenoSTENO_GR + + +&stenoSTENO_SR + + +&stenoSTENO_ZR + @@ -859,21 +925,36 @@ rect.held, rect.combo.held { + +HUB +toggle + +&stenoSTENO_A + + +&stenoSTENO_O + + +&stenoSTENO_E + + +&stenoSTENO_U + diff --git a/keymap-drawer/corne.yaml b/keymap-drawer/corne.yaml index 9dffbde..9222e85 100644 --- a/keymap-drawer/corne.yaml +++ b/keymap-drawer/corne.yaml @@ -87,6 +87,30 @@ layers: - $$mdi:apple-keyboard-option$$ - {t: MUTE, h: PLAY PAUSE} STEN: + - '&steno STENO_NUM' + - '&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' + - HUB + - '&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' - '' - '' - '' @@ -99,35 +123,11 @@ layers: - '' - '' - {t: HUB, h: toggle} - - HUB - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - - '' - '' + - '&steno STENO_A' + - '&steno STENO_O' + - '&steno STENO_E' + - '&steno STENO_U' - '' FPS: - {t: '1', h: Esc} From d1fda0f9558708210fddb6677a91fd30a9163433 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 15:51:06 +0800 Subject: [PATCH 11/13] Debug: logging snippet on left --- build.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/build.yaml b/build.yaml index 8da0aa2..03bcca0 100644 --- a/build.yaml +++ b/build.yaml @@ -4,6 +4,7 @@ include: ### CORNE START ### - board: nice_nano_v2 shield: corne_left nice_oled + snippet: zmk-usb-logging artifact-name: nice_corne_left_oled_rgb - board: nice_nano_v2 shield: corne_right nice_oled From 297e414e5add51646a93bec77b50707f10bf9b70 Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 16:07:53 +0800 Subject: [PATCH 12/13] Shift 8KB dict weight right: bootloader app ceiling is 0xEA000 --- config/corne.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/corne.conf b/config/corne.conf index 193de5d..f9d943c 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -122,7 +122,7 @@ CONFIG_STENO_ENGINE=y CONFIG_STENO_DICT_BOTH=y CONFIG_STENO_SPLIT_DICT=y CONFIG_STENO_DICT_LEFT_MAX_SIZE=440320 -CONFIG_STENO_DICT_RIGHT_MAX_SIZE=511000 +CONFIG_STENO_DICT_RIGHT_MAX_SIZE=519168 ### DEBUG OPTIONS # CONFIG_ZMK_USB_LOGGING=y From ec947a645205587999660211ffec80854cdee8ad Mon Sep 17 00:00:00 2001 From: afiqzudinhadi Date: Fri, 3 Jul 2026 16:19:28 +0800 Subject: [PATCH 13/13] Steno BLE timeout 50->250ms: round trip spans 2-4 conn intervals --- config/corne.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/config/corne.conf b/config/corne.conf index f9d943c..e42ab1c 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -123,6 +123,7 @@ CONFIG_STENO_DICT_BOTH=y CONFIG_STENO_SPLIT_DICT=y CONFIG_STENO_DICT_LEFT_MAX_SIZE=440320 CONFIG_STENO_DICT_RIGHT_MAX_SIZE=519168 +CONFIG_STENO_SPLIT_TIMEOUT_MS=250 ### DEBUG OPTIONS # CONFIG_ZMK_USB_LOGGING=y