Steno engine with BLE split-storage architecture

Full steno engine: chord detection, MPHF/trie dict lookup, Plover
formatter (18 commands), undo (ring buffer), HID + Unicode output.

Split-storage specific:
- BLE GATT service for dict queries (query/prefix/batch)
- LRU cache on central side (CONFIG_STENO_SPLIT_CACHE_SIZE)
- Dict embedded on peripheral, engine runs on central
- 3-way dispatch: split_dict / MPHF / simple trie

Build system: auto-fetch Plover dict, MPHF compiler with block
compression (~56K entries in 420KB), CMake integration.
This commit is contained in:
afiqzudinhadi 2026-07-02 02:06:37 +08:00
parent 234bc8d731
commit 2af45eafce
36 changed files with 5969 additions and 0 deletions

View file

@ -0,0 +1,53 @@
/*
* Copyright (c) 2024 Afiq Zudin Hadi
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
*
* Standard steno key layout. Each key = bit position in uint32_t chord.
* Bit assignments match the compiler's STENO_KEYS bitmask exactly.
*
* Layout (standard steno order):
* S T K P W H R A O * E U F R P B L G T S D Z #
* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
*/
#ifndef DT_BINDINGS_ZMK_STENO_KEYS_H_
#define DT_BINDINGS_ZMK_STENO_KEYS_H_
/* Left hand consonants */
#define STENO_SL 0 /* S- (left) */
#define STENO_TL 1 /* T- */
#define STENO_KL 2 /* K- */
#define STENO_PL 3 /* P- */
#define STENO_WL 4 /* W- */
#define STENO_HL 5 /* H- */
#define STENO_RL 6 /* R- (left) */
/* Vowels */
#define STENO_A 7 /* A */
#define STENO_O 8 /* O */
/* Center */
#define STENO_STAR 9 /* * */
/* Vowels (right) */
#define STENO_E 10 /* E */
#define STENO_U 11 /* U */
/* Right hand consonants */
#define STENO_FR 12 /* -F */
#define STENO_RR 13 /* -R (right) */
#define STENO_PR 14 /* -P (right) */
#define STENO_BR 15 /* -B */
#define STENO_LR 16 /* -L */
#define STENO_GR 17 /* -G */
#define STENO_TR 18 /* -T (right) */
#define STENO_SR 19 /* -S (right) */
#define STENO_DR 20 /* -D */
#define STENO_ZR 21 /* -Z */
/* Number bar */
#define STENO_NUM 22 /* # */
#define STENO_KEY_COUNT 23
#endif /* DT_BINDINGS_ZMK_STENO_KEYS_H_ */