Files
qingjian/docs/user/advanced/custom-schemes.md
T
yenharvey a20a38acaf docs(user): 用户文档按用户要做的事重新分组
功能越加越多,原来按早期设置页搭的结构塞不下:几个大页(按键、拼音方案、主题)越写越长,同一功能散在几页。
现在分为开始使用、打字、学语言、个性化、AI 服务、各平台、隐私与帮助、进阶八组,一个功能只在一页讲全,别处一句话加链接。
配置键名、文件路径、文件格式只放进阶组,其他页只写「设置 → 某页 → 某项」,面向普通用户不出现实现词。
设置程序的 ⓘ 链接表、各 README、issue 模板与代码注释里指向旧页面的链接一并改到新地址。
2026-10-21 20:06:25 +08:00

6.0 KiB

title, order, description
title order description
自制方案与码表 4 自己写双拼方案、形码方案与辅码方案,以及辅码码表的文件格式。macOS 与 Windows 支持。

自制方案放在数据文件夹的 schemes 文件夹里,每个方案一个子文件夹,文件夹名就是方案的标识:只能用小写字母、数字、- 与 _,不能与内置方案的写法(如 xiaohe、pinyin)重名。 子文件夹里必须有一个 scheme.toml,没有它的文件夹不算方案。以下几项各种方案通用,都可省略,分享方案时写上,别人知道是谁的、能不能再分发:

name = "我的方案"       # 设置与状态条里显示的名字,省略时用文件夹名
author = "某某"
version = "1.0"
description = "一两句话说这套方案是什么"
license = "CC-BY-4.0"

macOS 与 Windows 支持,Linux 暂不支持。

自制双拼方案

scheme.toml 里写:

type = "shuangpin"     # 必须写,表示这是双拼方案
name = "我的小鹤"
base = "xiaohe"        # 拿哪套内置方案当底子,只写要改的键;省略时从空白开始

[finals]               # 韵母键:键 = 韵母,一个键放几个韵母时写成列表
k = "uai"
";" = "ing"            # ; 要加引号

[initials]             # 翘舌声母:键 = zh / ch / sh
v = "zh"

[zero]                 # 零声母:音节 = 两键写法,几种写法时写成列表,第一种是主写法
ang = ["ah", "ag"]
  • base 可以是 xiaohe(小鹤)、ziranma(自然码)、microsoft(微软)、sogou(搜狗)、abc(智能ABC)、xiaolang(小浪)、shoudao(首道)、jiajia(拼音加加)、ziguang(紫光)。
  • 三张表都按「键」(零声母按音节)整条替换底子里的那一条。要把一个韵母挪到别的键,原来那个键也要重写,否则两个键都能打出它;写成空的(k = "")就是撤掉这个键上的韵母。
  • 声母键只放 zh、ch、sh,其余声母就是字母本身,所以不能放在 b、p、m 这类本身就是声母的键上。
  • ; 只能当韵母键(第二个键),和微软双拼的 ing 一样:前面有落单的声母时它是拼音,否则仍是标点。
  • 写错了(键不是字母、韵母不存在、零声母写法不是两个键)的方案不会出现在设置里;有音节打不出来时照样能用,运行日志里会列出是哪些。

放好之后切回设置窗口,在「设置 → 输入 → 拼音」里选它,内置双拼排在前面、自己的方案紧随其后。模糊音、「输入框显示按键」、键位提示与内置双拼一样可用。

自制形码方案

schemes/
└── huma/
    ├── scheme.toml   (方案说明,必须有)
    └── table.tsv     (码表)

码表是纯文本,每行「词、编码、词频」,以 Tab 分隔,词频可省略;# 开头的行是注释:

一	ggll	90000
开发	gant	900
  • 编码只能是英文字母,不区分大小写;编码里有其他符号的行会被跳过。
  • 词组的编码需在码表里写全,青简不会由单字编码推出词组编码。
  • 满码长度按码表里最常见的编码长度算(五笔是 4),个别更长的编码不影响。

scheme.toml 里除了通用的几项,还可以写:

table = "table.tsv"   # 码表文件名,省略时为 table.tsv
auto_commit = true    # 满码唯一自动上屏的缺省值,省略时为开
top = true            # 顶字的缺省值,省略时为开
code_length = 4       # 满码几个字母,省略时按码表里最常见的编码长度

auto_commit 与 top 只是缺省值,在设置里改过的以设置为准。空的 scheme.toml 也行。

放好之后重新打开设置,在「设置 → 输入 → 形码」里选它。文件夹名为 wubi86 的方案会替换随包的五笔,可以用来换一份五笔码表。 只想加几个自己的词,不用换码表,见 导入五笔词库。

辅码码表

从「设置 → 输入 → 码表 → 导入码表」导入的码表,最小的一份 my.dict.yaml(正文每行是「词、Tab、码」):

---
name: 我的码表
version: "1"
...

开发	kf
开放	kf
鹤	hn
  • 码只用小写字母 a–z;同一个词写多行就有多条码,码列里也可用空格分隔多个码。
  • 头部 --- 到 ... 之间可写 name(码表列表里显示的名字)、version、columns 列名与 import_tables 合表;没有头、直接每行「词、Tab、码」的纯文本也接受。
  • 第三方码表(如小鹤形)由用户从其官方渠道取得,按上述格式整理后导入。

自制辅码方案

导入的码表只认码表里写了的词。很多辅码码表只收单字,想让词也能筛,就把它做成方案:

schemes/
  shouyou/
    scheme.toml
    table.tsv
type = "aux"           # 必须写
name = "我的首右"
table = "table.tsv"    # 可省略,缺省 table.tsv;也可以是 .dict.yaml 或导入过的 .qj

[words]
2 = "AaBa"             # 两字词:每个字各取第一码
3 = "AaBaCa"
4 = "AaBaCaZa"         # 四字及更长:前三字与最后一字各取第一码
  • [words] 是词码规则:码表里没有这个词时,按词长挑一条规则,从每个字的码里拼出词的码;最长的那条也管更长的词。码表里写了的词仍用自己的码。
  • 规则里大写字母选字:A 是第一个字、B 第二个……Z 是最后一个字、Y 倒数第二个;小写字母选这个字码里的第几个字母,a 第一个、z 最后一个。与 Rime 的写法一致。
  • 字有几条码时,词按各种组合都算,敲哪一条都能筛到。
  • 不写 [words] 就和导入的码表一样,只认码表里写了的词。

方案和导入的码表一起列在「码表」组里,在「辅码方案」里选它才生效;不用了直接删掉文件夹。改了方案文件,输入法过一两秒自动重读。