进阶配置文件

引导键特殊模式

用引导键临时进入自建小码表(快符、生僻字等)的配置方法、退出条件与候选行为

在码表方案下,按一个「引导键」临时进入另一套独立的小型码表,完成后自动退出回到原方案。常见用途:快速符号(俗称「快符」)、生僻字、专业术语缩写等。它属于 [schema] 域的 [[schema.special_modes]]方案文件与词库要自己准备,引导键与码表行为则可以在设置工具里配。

特殊模式默认为空,需要你自己配置

schema.special_modes 出厂是空列表,安装后没有任何可用的特殊模式——包括「快符」。它不是一个开箱即用的功能,而是一套让你自建小码表的机制。

启用需要你准备两样东西config.toml 里的 [[schema.special_modes]] 配置块,以及它引用的方案文件与词库。唯一预置的引导键模式是 ; 触发的「快捷」混输模式,见快捷输入

引导键可以在设置工具里配

方案文件准备好之后,引导键这一项不必手写:在方案页勾选「显示特殊方案」让它出现在列表里,选中后 设置 → 进入方式 → 引导键 即可勾选。设置工具会按需新建 [[schema.special_modes]] 条目,并保留你手写的其它字段。

条目的其余字段(show_all_on_entercandidate_layout、注释模板等)仍需手写。

工作原理:

  1. 按下配置的引导键(如 \)进入对应特殊模式:编码为空时直接进入;已有候选时先上屏当前高亮候选,再进入模式
  2. 候选窗口显示模式徽标(如「快符」),此时输入的字符在该模式的码表中检索
  3. 上屏一个候选后自动退出,回到原方案;也可按 Esc 手动退出

若引导键引用的方案加载失败,该键不会被拦截,会按普通标点处理——这是判断配置是否生效的快捷方法:按下引导键却打出了标点,说明方案没加载上。

和快捷输入的区别

快捷输入(; 触发)内置了数字转换、计算器、日期等功能,使用内置逻辑处理;特殊模式则是完全自定义的码表,适合放置任意词条,更灵活。

配置

特殊模式通过全局配置文件 config.toml[[schema.special_modes]] 数组配置,可定义多组。每个特殊模式条目只描述「用哪个引导键、显示什么名字、触发哪个方案」,真正的码表和全码上屏策略都定义在被引用的方案文件 <方案id>.schema.toml 里。

[[schema.special_modes]]
id = "quick_symbols"             # 模式唯一 ID(必填)
name = "快符"                    # 候选窗口显示的模式名(必填)
short_name = "符"                # 模式指示短称(可选;留空取 name 首字)
trigger_keys = ["backslash"]     # 引导键列表(必填,至少一个)
schema = "quick_symbols"         # 引用的方案 id(必填)
hotkey = ""                      # 专用直达热键(可选,如 "ctrl+shift+u";空=不注册)
show_all_on_enter = false        # 进入模式即展示候选(可选,默认 false,见下文)
candidate_layout = "follow"      # 候选窗布局(可选,默认 follow,见下文)

引导键取键名,支持常用符号键,也支持单个字母 az

键名按键
backslash\
backtick / grave`
semicolon;
quote'
comma,
period.
slash/
lbracket[
rbracket]
minus-
equal=

按键冲突

若引导键已被次选键、临时拼音等功能占用,设置工具会提示冲突。同一个键只能分配给一项功能。

多个特殊模式按配置顺序匹配,首个命中者生效——两个模式配了同一个引导键时,后面那个永远进不去。

退出方式

特殊模式的退出条件比"选中候选"要多,完整清单:

操作行为
选中候选(空格 / 数字键 / 次选键)上屏并退出
Esc丢弃输入,退出
退格 / 删除把编码删空退出(编码已空时按退格也退出)
空格且当前无候选退出
Enter 且编码非空上屏编码原文
Enter 且编码为空上屏引导符本身并退出(回车行为设为「清空」时则只退出)
再按一次引导键(编码为空时)输出该标点并退出
输入其他标点上屏当前高亮候选 + 转换后的标点,退出
切换焦点 / 切换模式自动退出

此外,被引用方案的全码策略触发时会自动上屏并退出,见下文自动上屏策略

直达热键

除引导键外,每个特殊模式还可配置一个专用直达热键hotkey,形如 "ctrl+shift+u"),与引导键共存:按热键直接进入该模式,且组合区不写入引导符(引导键进入时首位是引导符,热键进入则从空编码开始)。仅中文模式下生效。

自动上屏策略

特殊模式输入时是否自动上屏,由被引用方案[engine.codetable] 全码策略决定,与该方案作为普通方案使用时一致:

  • 全码唯一自动上屏:候选唯一且无更长前缀时自动上屏,适合符号、常用词
  • 固定码长自动上屏:达到指定码长且候选唯一时自动上屏,适合定长码表
  • 手动选择:始终按数字 / 空格选择,适合需要精确控制时

被引用的方案不会出现在正常的方案切换列表中,只在按下引导键时懒加载触发。方案文件与码表词库的写法见输入方案管理

精确匹配与空码补全

特殊模式的候选检索是否走精确匹配、以及空码时是否补全后续编码,同样由被引用方案的 [engine.codetable] 决定,规则与该方案作普通方案时完全一致(见码表引擎配置):

  • single_code_input:精确匹配模式,关闭前缀枚举,只显示编码完全匹配的候选
  • single_code_complete:精确匹配下当前编码无精确候选、但更长前缀有候选时,补一条「首位后续码」。任意未满码长都会补(不限某个具体码长),只有打满全码仍无候选时才不补

这些项在设置工具里也能配

不必手写:在方案页勾选「显示特殊方案」,选中该方案 → 设置 → 码表配置,打开「自定义码表配置」即可逐项调整(顶码上屏、精确匹配、调频等)。见方案级码表配置

写进的是用户覆盖层 schema_overrides/<方案id>.toml,与本页说的 [engine.codetable] 是同一组字段、同样的语义。

特殊方案不继承全局码表配置

特殊方案(方案文件标了 hidden = true 的那些)折叠 [engine.codetable]以内置默认值为基线,不叠加全局 schema.codetable。它们是几十条的小符号表,而全局基线是按五笔那种数万条全码表调的——共用一份的后果是「改五笔的精准匹配,快符跟着变」,而改的人根本意识不到自己动了另一个表。

所以设置工具里对五笔开启的「精准匹配」不会流到特殊模式,特殊模式也不会拿到全局的 punct_commitz_key_repeat 等出厂值。要什么就在它引用的方案上显式写:方案文件 <方案id>.schema.toml[engine.codetable] 段,或用户覆盖层 schema_overrides/<方案id>.toml[codetable] 段。

特殊方案没写时用的基线,与全局出厂值只有一处不同:

字段特殊方案基线全局出厂值
top_code_committruetrue
punct_committruetrue
single_code_completetruetrue
single_code_inputfalsefalse
show_code_hinttruetrue
z_key_repeatfalsetrue

z_key_repeat(z 键重复上一次上屏)对小符号表没有意义——z 在那里多半是个正经编码,故基线关掉它。

其余项与出厂值一致:「不继承全局」的意义是你改了全局之后特殊方案不跟着变,而不是让它的出厂表现与普通方案不同。需要与基线不同的就显式写:

[engine.codetable]
single_code_input = true

进入即展示候选

默认情况下,进入特殊模式后候选窗为空,敲入编码才出候选。把该模式的 show_all_on_enter 设为 true,则一进入就展示被引用方案码表的候选,可直接翻页浏览——适合快符、生僻字分类符号这类小码表

展示数量遵循该方案的 single_code_input

  • 非精确匹配模式:展示码表首页候选,按每页候选数分页浏览
  • 精确匹配模式:最多展示 1 条(与 single_code_complete「取首位后续码」同语义)

仅宜小码表

show_all_on_enter 面向小符号表。若引用的是大码表(成千上万条),进入时会遍历整表取首页,有一定开销,不建议开启。

候选窗布局

candidate_layout 决定进入本模式期间候选窗的排列方向,退出后自动恢复:

取值含义
follow(默认)跟随全局 ui.candidate.layout——你改全局,本模式跟着改
vertical本模式期间强制竖排
horizontal本模式期间强制横排

每个特殊模式各设各的:快符表可以竖排、生僻字表可以横排,互不影响。

followvertical 的区别只在全局本身是竖排时才显现——前者跟着全局变,后者恒定竖排。搭配 show_all_on_enter = true 时通常设 vertical:一进入就铺开的符号表,竖排一屏能看到更多条目。

这是所有模式共用的机制

临时拼音、临时英文、快捷输入也各有同名的 candidate_layout,取值与语义完全一致,只是那三个在设置工具里有下拉可选。特殊模式因为是用户自建的列表,这一项只能在配置文件里写(引导键除外,见页首)。

候选行为

特殊模式的候选与主方案完全隔离:

  • 调频与候选调整归属特殊方案自身 —— 见下方调频
  • 不做简繁变体展开 —— 即使开启了简繁转换,特殊模式的候选也不会展开繁体变体(临时拼音与快捷输入模式则会)

调频

特殊模式的词频记账、候选调整(置顶/删除)、用户词库都记在被引用方案自己名下,与主方案互不干扰——它与五笔是同一层级的东西,只是用特殊按键进入。

所以设置工具的词库管理里能直接选中特殊方案,管它自己的用户词库、词频与候选调整。

默认不开。小符号表的顺序往往是作者精心排过的,调频会打乱它。

要开,在设置工具里是 选中方案 → 设置 → 码表配置 → 自定义码表配置 → 设置 → 词频调整;手写则是被引用方案的 [engine.codetable.frequency] 段:

[engine.codetable.frequency]
enabled = true
strategy = "position"    # 建议:每用一次前移一半,久不用回落

该段逐字段稀疏:写出来的覆盖基线,没写的跟随。取值语义与码表调频完全一致。

这是所有码表方案都有的能力

[engine.codetable.frequency] 不是特殊方案专属——任何码表方案都能用它给自己单独设一套调频。普通方案的基线是全局 schema.codetable.frequency,特殊方案的基线是内置默认。

想调整的是初始顺序而非使用频率,用该方案自己的 base_sort / base_order / default_weight

引导符只作显示,不参与检索:按 \ 后输入 bd,查询的是 bd 而不是 \bd

词库条目里的 $CC / $AA / $SS 语法在特殊模式下同样有效,见命令直通车

本页目录