# Copyright (c) 2024 Afiq Zudin Hadi # SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0 menuconfig STENO_ENGINE bool "Steno Engine" default n help Enable the stenography engine for ZMK. if STENO_ENGINE # ────────────────────────────────────────────── # Dictionary selection # ────────────────────────────────────────────── choice STENO_DICT prompt "Steno dictionary" default STENO_DICT_PLOVER config STENO_DICT_PLOVER bool "Plover main dictionary (MPHF compressed)" help Use Plover main.json via MPHF compression (~44K entries in 453KB). config STENO_DICT_LAPWING bool "Lapwing dictionary (MPHF compressed)" config STENO_DICT_TEST bool "Test dictionary (46 entries, simple format)" help Small built-in test dictionary for development. endchoice config STENO_DICT_MPHF bool default y if STENO_DICT_PLOVER || STENO_DICT_LAPWING help Use MPHF (minimal perfect hash) dictionary format. Auto-selected for Plover/Lapwing dicts. # ────────────────────────────────────────────── # Unicode output mode # ────────────────────────────────────────────── choice STENO_UNICODE_MODE prompt "Unicode output mode" default STENO_UNICODE_MODE_NONE config STENO_UNICODE_MODE_NONE bool "None (HID only)" config STENO_UNICODE_MODE_LINUX bool "Linux (IBus)" config STENO_UNICODE_MODE_MACOS bool "macOS" config STENO_UNICODE_MODE_WINC bool "Windows (WinCompose)" endchoice config STENO_HISTORY_SIZE int "Stroke history size (undo depth)" default 100 range 10 500 config STENO_KEY_DELAY_MS int "Key output delay (ms)" default 0 range 0 50 config STENO_MULTI_STROKE_TIMEOUT_MS int "Multi-stroke timeout (ms)" default 500 range 100 5000 config STENO_DICT_MAX_SIZE int "Max dictionary binary size (bytes)" default 473088 help Max compiled dict size. 473088 = 462KB (left half flash budget). The MPHF compiler auto-trims to fit. # ────────────────────────────────────────────── # Split keyboard dictionary storage # ────────────────────────────────────────────── menuconfig STENO_SPLIT_DICT bool "Split dictionary storage on peripheral" default n help Store the steno dictionary on the peripheral half and perform lookups over BLE. This frees flash on the central side at the cost of added lookup latency. if STENO_SPLIT_DICT config STENO_SPLIT_CACHE_SIZE int "LRU cache entries on central side" default 64 range 16 512 help Number of recently looked-up dictionary entries cached on the central side to avoid repeated BLE round-trips. config STENO_SPLIT_PREFETCH bool "Prefetch common follow-up strokes" default y help After a successful lookup, speculatively prefetch dictionary entries for statistically common follow-up strokes. Reduces perceived latency for multi-stroke words. config STENO_SPLIT_TIMEOUT_MS int "BLE lookup timeout (ms)" default 50 range 10 500 help Maximum time in milliseconds to wait for a dictionary lookup response from the peripheral over BLE before falling back to a cache miss / no-op. endif # STENO_SPLIT_DICT endif # STENO_ENGINE