Files
qingjian/docs/user/input/aux-code.md
T
yenharvey d54dbf57e4 feat(platform): 随包笔画表按每字首笔给表外的词算码
- 笔画表只收了基础词库的词,自造词、导入词库与学到的词在辅码态会被藏起来;装随包 stroke.qj 时挂上与 dict-convert 打包同一条词码规则(每字首笔,四字以上取前三字与末字),表外的词现算
- 首右不做:sysrf.cn 的私有方案,字根图无授权、自己生成也对不上官方码;设计文档记下理由
- 待办记下「整句 + 辅码」,先不做
2026-10-20 14:39:25 +08:00

100 lines
5.7 KiB
Markdown

---
title: 辅码
order: 5
description: 拼音之后补充字母缩小候选范围;触发键、码表导入、自定义辅码方案与候选上的码。
---
翻页找词很费事。辅码是在拼音之后补充几个字母,把候选范围直接缩小到想要的词。
辅码缺省关闭:在「设置 → 输入 → 辅码」里打开「启用」(配置文件 `[aux_code]` 分节的 `enabled`)。打开但没有可用码表时,触发键不生效,`;` 仍按原有行为工作。
同一时间只用一套辅码,在「设置 → 输入 → 辅码 → 辅码方案」里选(配置文件 `[aux_code] scheme`,写码表的文件名或方案的文件夹名)。没选过时用随包的笔画,在配置文件里写作 `stroke`。
几套混着用时,同一个字母在不同方案里意思不同,候选反而筛不干净,所以不支持叠加。
## 用法
先按平常的方式输入拼音,再按触发键(缺省 `;`)进入辅码状态:此时候选不变,拼音行末尾多一个 `;`。
接着输入码表里的码字母,候选随每多一个字母即时收窄,剩下的词就是码以所输字母开头的词。
例如码表里「开发」的码是 `kf`,输入 `kaifa` 后按 `;` 再输入 `kf`,候选只剩「开发」。
- 码只筛词,不改变拼音的输入方式,也不影响整句转换。
- 码表未收录的词在辅码状态下不显示。把码删空后仍停留在辅码状态,候选全部回来;再按一次退格才退出辅码(配置 `[general] aux_code_keep_empty` 改为 `false` 可回到删空即退出)。
- 码不需要敲满:敲到候选合适即可按空格或数字上屏。
- `Backspace` 删除码的最后一个字母,删空后仍停留在辅码状态,再按一次才退出;`Esc` 直接清掉码。
- 配置 `[general] shift_letter = "compose"` 时,辅码状态里输入大写字母等同于先按 `Esc`:清掉码回到拼音状态,字母照常参与组句。
- 辅码状态下选择过的词同样会被记住,下次纯拼音输入它会更靠前。
## 触发键
缺省为 `;`,在「设置 → 输入 → 辅码」中修改。可改为 `/` 或反引号等单个可见字符。
双拼的微软方案与搜狗方案用 `;` 表示韵母 ing:拼音末尾有落单的声母时,`;` 作为拼音使用(`x;` 得到 xing),其他情况下才是触发键。
## 码表
码表需自行导入:「设置 → 输入 → 码表 → 导入码表」,接受 Rime 的 `.dict.yaml` 与现成的 `.qj`。
导入完成后显示读入条数、有码条数、无码条数与跳过条数。随包只提供笔画表,第三方码表由用户自行取得。
随包的笔画:横 `h`、竖 `s`、撇 `p`、点与捺 `n`、折 `z`。单字取前四笔加最后一笔;词取每个字的第一笔,四字及更长的词取前三个字与最后一个字。自己造的词、导入词库里的词也按这条规则算码。
导入的码表列在「设置 → 输入」页的「码表」组中,可以移除;导入完成后自动改用刚导入的那张,想换回来在「辅码方案」里选。
### 文件格式
最小的一份 `my.dict.yaml`(正文每行是「词 + 制表符 + 码」):
```yaml
---
name: 我的码表
version: "1"
...
开发 kf
开放 kf
鹤 hn
```
- 码只用小写字母 a–z;同一个词写多行就有多条码,码列里也可用空格分隔多个码。
- 头部 `---` 到 `...` 之间可写 `name`(码表列表里显示的名字)、`version`、`columns` 列名与 `import_tables` 合表;没有头、直接每行「词 + 制表符 + 码」的纯文本也接受。
- 形码码表(如小鹤形)由用户从其官方渠道取得,按上述格式整理后导入。
## 自定义辅码方案
导入的码表只认码表里写了的词。很多辅码码表只收单字,想让词也能筛,就把它做成方案:
在数据目录的 `schemes/` 下建一个文件夹(文件夹名就是方案的 id,只用小写字母、数字、`-`、`_`),放进 `scheme.toml` 与码表:
```
schemes/
shouyou/
scheme.toml
table.tsv
```
```toml
type = "aux"
name = "我的首右"
author = "……"
version = "1"
description = "偏旁部首的拼音首字母"
license = "CC-BY-4.0"
table = "table.tsv" # 可省略,缺省 table.tsv;也可以是 .dict.yaml 或导入过的 .qj
[words]
2 = "AaBa" # 两字词:每个字各取第一码
3 = "AaBaCa"
4 = "AaBaCaZa" # 四字及更长:前三字与最后一字各取第一码
```
- `scheme.toml` 必须有,`type = "aux"` 必须写;`author`、`version`、`description`、`license` 都可省略,分享方案时写上,别人知道是谁的、能不能再分发。
- `[words]` 是词码规则:码表里没有这个词时,按词长挑一条规则,从每个字的码里拼出词的码;最长的那条也管更长的词。码表里写了的词仍用自己的码。
- 规则里大写字母选字:`A` 是第一个字、`B` 第二个……`Z` 是最后一个字、`Y` 倒数第二个;小写字母选这个字码里的第几个字母,`a` 第一个、`z` 最后一个。与 Rime 的 `encoder` 写法一致。
- 字有几条码时,词按各种组合都算,敲哪一条都能筛到。
- 不写 `[words]` 就和导入的码表一样,只认码表里写了的词。
方案和导入的码表一起列在「码表」组里,在「辅码方案」里选它才生效;不用了直接删掉文件夹。改了方案文件,输入法过一两秒自动重读。
## 候选上显示码
开启「设置 → 输入 → 辅码 → 候选上显示码」后,码用方括号紧跟在候选词后面显示,例如 `鹤[rbm] crane`。不进辅码也能看:纯拼音打字时候选就带着每个词的码(首条),方便边打边记;进了辅码显示的则是命中当前输入的那条码。