Add steno engine module + steno layer on Corne

This commit is contained in:
afiqzudinhadi 2026-06-24 21:51:55 +08:00
parent 887b987b87
commit af8df38322
5 changed files with 167 additions and 42 deletions

View file

@ -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

View file

@ -14,6 +14,8 @@
#include <dt-bindings/zmk/rgb.h>
#include <dt-bindings/zmk/reset.h>
#include <dt-bindings/zmk/rgb_colors.h>
#include <dt-bindings/zmk/steno_keys.h>
#include <behaviors/steno_engine.dtsi>
&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
>;
};

View file

@ -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

View file

@ -752,33 +752,63 @@ rect.held, rect.combo.held {
</g>
<g transform="translate(84, 49)" class="key keypos-1">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(140, 35)" class="key keypos-2">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(196, 28)" class="key keypos-3">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(252, 35)" class="key keypos-4">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(308, 42)" class="key keypos-5">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(532, 42)" class="key keypos-6">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(588, 35)" class="key keypos-7">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(644, 28)" class="key keypos-8">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(700, 35)" class="key keypos-9">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(756, 49)" class="key keypos-10">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 67%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">STENO_NUM</tspan>
</text>
</g>
<g transform="translate(812, 49)" class="key keypos-11">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
@ -793,90 +823,171 @@ rect.held, rect.combo.held {
</a></g>
<g transform="translate(84, 105)" class="key keypos-13">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_SL</tspan>
</text>
</g>
<g transform="translate(140, 91)" class="key keypos-14">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_TL</tspan>
</text>
</g>
<g transform="translate(196, 84)" class="key keypos-15">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_PL</tspan>
</text>
</g>
<g transform="translate(252, 91)" class="key keypos-16">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_HL</tspan>
</text>
</g>
<g transform="translate(308, 98)" class="key keypos-17">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 60%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 60%">STENO_STAR</tspan>
</text>
</g>
<g transform="translate(532, 98)" class="key keypos-18">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 60%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 60%">STENO_STAR</tspan>
</text>
</g>
<g transform="translate(588, 91)" class="key keypos-19">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_FR</tspan>
</text>
</g>
<g transform="translate(644, 84)" class="key keypos-20">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_PR</tspan>
</text>
</g>
<g transform="translate(700, 91)" class="key keypos-21">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_LR</tspan>
</text>
</g>
<g transform="translate(756, 105)" class="key keypos-22">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_TR</tspan>
</text>
</g>
<g transform="translate(812, 105)" class="key keypos-23">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_DR</tspan>
</text>
</g>
<g transform="translate(28, 161)" class="key keypos-24">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
</g>
<g transform="translate(84, 161)" class="key keypos-25">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_SL</tspan>
</text>
</g>
<g transform="translate(140, 147)" class="key keypos-26">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_KL</tspan>
</text>
</g>
<g transform="translate(196, 140)" class="key keypos-27">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_WL</tspan>
</text>
</g>
<g transform="translate(252, 147)" class="key keypos-28">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_RL</tspan>
</text>
</g>
<g transform="translate(308, 154)" class="key keypos-29">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 60%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 60%">STENO_STAR</tspan>
</text>
</g>
<g transform="translate(532, 154)" class="key keypos-30">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 60%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 60%">STENO_STAR</tspan>
</text>
</g>
<g transform="translate(588, 147)" class="key keypos-31">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_RR</tspan>
</text>
</g>
<g transform="translate(644, 140)" class="key keypos-32">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_BR</tspan>
</text>
</g>
<g transform="translate(700, 147)" class="key keypos-33">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_GR</tspan>
</text>
</g>
<g transform="translate(756, 161)" class="key keypos-34">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_SR</tspan>
</text>
</g>
<g transform="translate(812, 161)" class="key keypos-35">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 75%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 75%">STENO_ZR</tspan>
</text>
</g>
<g transform="translate(224, 205)" class="key keypos-36">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap"><tspan style="font-size: 86%">&amp;td_rgb</tspan></text>
</g>
<g transform="translate(286, 213) rotate(15.0)" class="key keypos-37">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 86%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 86%">STENO_A</tspan>
</text>
</g>
<g transform="translate(351, 224) rotate(30.0)" class="key keypos-38">
<rect rx="6" ry="6" x="-26" y="-40" width="52" height="80" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 86%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 86%">STENO_O</tspan>
</text>
</g>
<g transform="translate(489, 224) rotate(-30.0)" class="key keypos-39">
<rect rx="6" ry="6" x="-26" y="-40" width="52" height="80" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 86%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 86%">STENO_E</tspan>
</text>
</g>
<g transform="translate(554, 213) rotate(-15.0)" class="key keypos-40">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">
<tspan x="0" dy="-0.6em" style="font-size: 86%">&amp;steno</tspan><tspan x="0" dy="1.2em" style="font-size: 86%">STENO_U</tspan>
</text>
</g>
<g transform="translate(616, 205)" class="key keypos-41">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
<text x="0" y="0" class="key tap">MUTE</text>
<text x="0" y="24" class="key hold"><tspan style="font-size: 60%">PLAY PAUSE</tspan></text>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Before After
Before After

View file

@ -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'