No description
| dicts | ||
| dts | ||
| include | ||
| src | ||
| tools/dict_compiler | ||
| zephyr | ||
| .gitignore | ||
| CMakeLists.txt | ||
| Kconfig | ||
| README.md | ||
zmk-javelin-steno
ZMK module that integrates the Javelin steno engine for on-board stenography on ZMK keyboards.
Status
Work in progress. Engine compiles and initializes. Dictionary auto-downloads and compiles during build. Requires sufficient flash for the compiled dictionary (~3-4MB for full Plover/Lapwing). Currently focused on nRF52840 boards with 1MB flash (nice_nano_v2). Not yet tested on boards with more flash or external QSPI.
Requirements
- ZMK v0.3.0
- nRF52840-based board (nice_nano_v2, etc.)
- Split keyboard: steno runs on central half only
Setup
Add to your west.yml:
manifest:
remotes:
- name: afiqzudinhadi
url-base: https://github.com/afiqzudinhadi
- name: jthlim
url-base: https://github.com/jthlim
projects:
- name: zmk-javelin-steno
remote: afiqzudinhadi
revision: main
- name: javelin-steno
remote: jthlim
revision: main
path: zmk-javelin-steno/javelin
Add to your .conf:
CONFIG_ZMK_JAVELIN_STENO=y
CONFIG_ZMK_JAVELIN_STENO_DICT_PLOVER=y
CONFIG_CPLUSPLUS=y
CONFIG_LIB_CPLUSPLUS=y
CONFIG_HEAP_MEM_POOL_SIZE=32768
Add to your .keymap (see steno_keys.h for all available key bindings):
#include <dt-bindings/zmk/javelin_steno.h>
#include <behaviors/javelin_steno.dtsi>
steno_layer {
bindings = <
&javsteno STENO_S1 &javsteno STENO_TL &javsteno STENO_PL ...
>;
};
Known Issues
- Plover and Lapwing dictionaries exceed nRF52840 flash (1MB). Dictionary embedding works but linker rejects due to flash overflow.
- Boards with external QSPI flash (like the original Javelin hardware) would not have this limitation.
License
This module is a bridge layer. The Javelin steno engine itself is licensed under PolyForm Noncommercial 1.0.0.