文件

41 行
3.1 KiB
Markdown

# 14键拼音
1.1.0新增离线14键模式。布局参考华为手表输入法的公开演示;当前没有公开可核对的华为内部词库、消歧模型或实现源码。本项目自行实现编码、词库索引、候选排序和前缀消费,不声称复现其内部算法。
## 公开参考与布局
- [公开演示一](https://www.bilibili.com/video/BV1YFCEB7EkW/):已核对约34~35秒出现的14键页面。
- [公开演示二](https://www.bilibili.com/video/BV18t1nB9EwD/):作为交互参考。
```text
QW ER TY UI OP
AS DF GH JK L
ZX CV BN M
```
14个原生按钮覆盖全部26个字母,没有重排QWERTY字母顺序。每次点击表示该组中的一个字母,`L`、`M`为单字母键;`V`可用于拼音中的`ü`。模式栏“14键”直接进入,选中时显示蓝色。26键全拼和英文使用独立的标准10/9/7三排。
## 编码与候选
`ime-engine.js`中`KEY14_GROUPS`定义分组,`0123456789abcd`为内部token;每次点击只追加一个token,一段最多32位。原始词库每个拼音/缩写映射为相同分组编码,按输入前缀筛选所有真实候选。三位前缀分片减少单次解析和资源文件数量;一位/两位编码另建短索引。
例如`nihao`和`buhao`都映射为`c3754`,按键显示`BN UI GH AS OP`,因此“你好”和“不好”都应出现。候选先按本地已选偏好(默认关闭),再按匹配消费长度和jieba词频排序,不硬编码“你好”第一。保留原始候选,按四项分页访问全部结果。
连续输入`nihaoshijie`时,选择“你好”只消费对应的五次点击,剩余`shijie`编码继续查词。存在未确认编码时阻止模式切换与完成;内部token不能作为正文提交。退格先删除组合编码,再删除正文。
组合栏最多展示最近六个字母组,更长时加省略标记;原始编码与候选不因显示省略而丢失。只将前三个推荐候选及展开页的四个候选放入响应式状态。
## 词库、缓存和学习
原始41个CrabKeyboard V5文件不变,104,837组索引、163,238个候选项。生成器为14键建立2585个分片,加上4194个九宫/全拼分片,共6779个;最大116,686字节。生成后分别回读两套索引,与全部原始条目逐项比较,生成文件不提交Git。
解码缓存最多四项、JSON文本合计不超过90,000字符,超过上限的分片不驻留。模拟器沿用8192 KiB内存配置;没有通过增加内存通过验收。
14键学习使用`k14:<token串>`独立键空间,与全拼/九宫隔离;合计仍最多100组、每组三个真实已选候选。私密输入不学习、不持久化,隐藏时清除编辑状态。
## 验收范围
逻辑回归验证分组覆盖、编码、歧义、词库完整性、连续前缀消费和学习隔离。四配置原生回归实际点击14个按钮,检查“你好/不好”共存、未确认组合保护、连续输入和候选前后翻页;视觉回归覆盖14键与14键完整候选页。具体结果见[1.1.0验收](./VALIDATION_1.1.0.md)。
公开演示仅用于布局参考;未测得华为算法内部参数,也没有真机延迟、帧率或功耗结论。