Files
msime-windows/docs/custom-shuangpin.example.toml
fanlusky c9b86e0026 feat(engine): 支持用户自定义双拼方案
用户在数据目录 shuangpin\custom\ 下放 TOML 文件,在设置页以 custom/<文件名>
选用。零声母规则从 o、a、first_letter、full_pinyin 四种里选,声母和韵母
映射由文件指定,可用 [zero_initials] 覆盖个别零声母音节。

- 引擎:新增 CustomShuangpinLayout 与 BuildCustomShuangpinProfile,校验缺键、
  声母撞键,并对全部音节做往返解码,冲突时给出可读的错误信息;新增运行时
  方案注册表,按需加载。
- Server:扫描并解析自定义方案,配置快照带上方案列表与目录;文件缺失或无效
  时回退到小鹤。
- 设置页:仿照自定义辅助码,新增打开目录和刷新按钮;无效方案列出但禁用,
  悬停时显示错误。
- 安装器:覆盖安装与迁移数据目录时保留 shuangpin 目录。
- 文档:docs/custom-shuangpin.example.toml 提供带详细注释的示例。
2026-09-29 11:33:23 +08:00

209 lines
8.5 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================================
# 水杉输入法 · 自定义双拼方案示例
# ============================================================================
#
# 这份文件是一个完整、可以直接使用的自定义双拼方案,按键布局与内置的「小鹤双拼」
# 完全一致。你可以复制它,改成自己习惯的键位。
#
# ---------------------------------------------------------------------------
# 一、放在哪里、怎么启用
# ---------------------------------------------------------------------------
#
# 1. 打开「设置 → 输入 → 自定义双拼」,点「打开目录」。目录是:
#
# <数据目录>\shuangpin\custom\
#
# 默认的数据目录是 %LOCALAPPDATA%\metasequoiaime;安装时改过数据目录的,
# 以设置页上显示的路径为准。
#
# 2. 把本文件复制进去,改个名字,比如「我的双拼.toml」。
# - 扩展名必须是 .toml;
# - 文件必须以 UTF-8 编码保存(Windows 记事本默认就是 UTF-8);
# - 文件名不能以「.」开头,也不能含有 / \ : * ? " < > | 这些字符。
#
# 3. 回到设置页点「刷新方案」,新方案会出现在「双拼方案」下拉框的最下面,
# 选中它即可使用。
#
# - 方案在配置文件里记作 custom/<文件名>,例如 custom/我的双拼。
# 改文件名等于换了一个方案,需要重新选一次。
# - 方案有错误时,下拉框里会显示为灰色、不能选,把鼠标停在上面可以看到
# 具体是哪个声母、韵母或音节出了问题(TOML 语法写错时会指出第几行)。
# - 修改正在使用的方案文件后,需要在下拉框里切换一次方案(切走再切回来),
# 或者重启输入法,改动才会生效。
# - 正在使用的方案文件被删除或改坏了,下次启动时会自动退回小鹤双拼。
#
# ---------------------------------------------------------------------------
# 二、TOML 写法速览
# ---------------------------------------------------------------------------
#
# - 「#」之后到行尾是注释,随便写;
# - 所有的值都要用英文双引号括起来,例如 zh = "v";
# - 声母、韵母和按键都不区分大小写,但建议统一用小写;
# - 方括号 [xxx] 开始一个新的分组,下面的内容都属于这个分组,直到下一个
# 方括号为止。所以 name 等顶层设置必须写在第一个 [ ] 之前。
#
# ============================================================================
# ----------------------------------------------------------------------------
# 方案名称(可选)
# ----------------------------------------------------------------------------
#
# name 是设置页下拉框里显示的名字。不写时用 name_en;两个都不写时用文件名。
# name_en 目前用作鼠标悬停时的提示。
name = "我的小鹤双拼"
name_en = "My Xiaohe Shuangpin"
# ----------------------------------------------------------------------------
# 零声母规则(必填)
# ----------------------------------------------------------------------------
#
# 零声母音节就是没有声母、直接以 a / o / e 开头的音节,共 12 个:
#
# a ai an ang ao e ei en eng er o ou
#
# 双拼每个音节固定敲两个键,这些音节没有声母键可用,所以要约定第一个键敲什么。
# 下面四种规则对应常见双拼方案的做法,选一个填进 zero_initial_rule:
#
# "o" 第一键固定是 O,第二键是韵母键。
# 微软、紫光、搜狗、智能ABC 用的是这种。
# 例:韵母 ang 在 H 键上,则 ang = oh;an 在 J 键上,则 an = oj。
#
# "a" 第一键固定是 A,第二键是韵母键。
# 国标双拼用的是这种。
# 例:ang = ah,an = aj。
#
# "first_letter" 第一键是韵母的首字母,第二键是韵母键。
# 拼音加加用的是这种。
# 例:ang 在 H 键上 → ah;eng 在 G 键上 → eg;a 在 A 键上 → aa。
#
# "full_pinyin" 两个字母的韵母(ai an ao ei en er ou)直接按全拼敲,
# 其余的(a e o ang eng)按「韵母首字母 + 韵母键」敲。
# 自然码、小鹤用的是这种。
# 例:ai → ai,ou → ou,ang → ah,eng → eg,a → aa,e → ee。
#
# 个别音节和规则算出来的不一样时,可以在文件末尾的 [zero_initials] 里单独指定。
zero_initial_rule = "full_pinyin"
# ----------------------------------------------------------------------------
# [initials] 声母键位
# ----------------------------------------------------------------------------
#
# 翘舌音 zh、ch、sh 是两个字母,必须各自指定一个键,这三项必填。
#
# 其他单字母声母(b p m f d t n l g k h j q x r z c s y w)默认就在自己的
# 字母键上,不用写;想把它挪到别的键,也可以在这里写,例如 j = "q"。
# 挪走之后原来的键就空出来了,可以留给别的声母用。
#
# 按键只能是 a-z 中的一个字母。两个声母不能放在同一个键上,否则敲出来分不清
# 是哪个声母,设置页会提示「声母 X 和 Y 都在 K 键上」。
[initials]
zh = "v"
ch = "i"
sh = "u"
# ----------------------------------------------------------------------------
# [finals] 韵母键位
# ----------------------------------------------------------------------------
#
# 下面 33 个韵母每个都要指定一个键,缺了哪个设置页会列出来:
#
# a o e i u v
# ai ei ui ao ou iu ie ue ve
# an en in un ang eng ing ong
# ia iao ian iang iong ua uo uai uan uang
#
# 说明:
#
# - 按键可以是 a-z 中的一个字母,也可以是分号「;」。
# 例如微软双拼把 ing 放在分号上: ing = ";"
#
# - v 表示 ü,比如 lü(绿)、nü(女)的韵母。
#
# - ue 和 ve 都表示 üe:j q x y 后面写作 ue(jue 觉、que 缺),
# l n 后面写作 ve(lve 略、nve 虐)。大多数方案两者在同一个键上,
# 只写其中一个时另一个会自动用同一个键;要分开就两个都写。
#
# - 多个韵母可以共用一个键,只要它们不会和同一个声母拼出同一个音节。
# 例如 ing 和 uai 都在 K 上:bing 有、buai 没有;huai 有、hing 没有,
# 所以 bk 只能是 bing,hk 只能是 huai,不会混淆。
# 如果真的冲突了(比如把 ang 和 ong 放在同一个键上,gang 和 gong 就分不清),
# 设置页会提示
# 「音节 X 按 YY 输入时会被读成 Z」,把其中一个韵母换个键即可。
#
# - er 是可选的,只影响零声母的「儿、耳、二」这类字。
# 不写时 er 的韵母键默认是 R;它最终怎么敲取决于零声母规则,
# 比如规则是 "o" 时 er = or,规则是 "full_pinyin" 时 er = er。
[finals]
# 单韵母:在自己的字母键上
a = "a"
o = "o"
e = "e"
i = "i"
u = "u"
v = "v" # ü
# 复韵母
ai = "d"
ei = "w"
ui = "v" # 和 v 共用:ü 只跟 l n 拼,ui 从不跟 l n 拼,不冲突
ao = "c"
ou = "z"
iu = "q"
ie = "p"
ue = "t" # üe,也可以只写 ue / ve 其中一个
ve = "t"
# 鼻韵母
an = "j"
en = "f"
in = "b"
un = "y"
ang = "h"
eng = "g"
ing = "k"
ong = "s"
# 介音 i / u 开头的韵母
ia = "x"
iao = "n"
ian = "m"
iang = "l"
iong = "s" # 和 ong 共用 S
ua = "x" # 和 ia 共用 X
uo = "o" # 和 o 共用 O
uai = "k" # 和 ing 共用 K
uan = "r"
uang = "l" # 和 iang 共用 L
# er = "r" # 可选,默认就是 R
# ----------------------------------------------------------------------------
# [zero_initials] 单独指定零声母编码(可选)
# ----------------------------------------------------------------------------
#
# 零声母规则算出来的编码大多数时候就够用了。个别音节想换一种敲法时,在这里
# 覆盖它,没写到的音节仍按规则计算。
#
# - 可以写的只有这 12 个:a ai an ang ao e ei en eng er o ou;
# - 编码必须正好两个键:第一个是字母,第二个是字母或分号;
# - 12 个零声母音节的编码不能重复;也不要和「声母键 + 韵母键」拼出来的
# 其他音节撞车,否则设置页会提示哪个音节会被读错。
#
# 例:规则选 "o",但想让 er 敲成 er 而不是 or:
#
# [zero_initials]
# er = "er"
#
# 本示例按小鹤双拼的习惯,全部交给 full_pinyin 规则,所以留空。
[zero_initials]