进阶配置文件

按键配置

keys 域全部配置项——中英切换、候选选择与翻页、以词定字、功能快捷键、全局热键

高级主题

普通用户在设置工具的"快捷键"页即可完成全部按键设置,修改即时生效。本页面向手动编辑 config.toml 的用户,逐项列出 [keys] 域的类型、可选值与默认值。

[keys] 域收纳输入法的全部按键绑定:中英切换键、引擎切换与状态切换快捷键、候选选择/翻页/高亮/以词定字键组、功能快捷键,以及全局热键。该域是扁平结构——除无效按键策略下沉到 [keys.overflow] 一层子表外,其余字段都直接挂在 [keys] 下。

字段分两类:

  • 热键字符串(如 switch_engine):单个组合键,格式见下方"热键字符串格式"。
  • 键组数组(如 page_keys):值不是键名而是键组常量(一个常量代表一对物理按键),可多选、以数组给出。每个这类字段下方都附一张"可选值 → 物理按键"对照表。

热键字符串格式

热键字符串由修饰键 + + + 主键组成,大小写不敏感、可含空格。

  • 修饰键:ctrl(= control)、shiftaltwin(= super)。
  • 主键:字母 az;数字 09;功能键 f1f12space / enter / tab / esc / backspace / delete / home / end / pageup / pagedown / 方向键 up/down/left/right;标点符号可用符号本身或英文名,如 .(= period)、,(= comma)、;(= semicolon)、'(= quote)、/(= slash)、\(= backslash)、[(= lbracket)、](= rbracket)、-(= minus)、=(= equal)、`(= grave)。
  • 空串或 none 表示不绑定该功能。
  • 只允许一个主键;写多个主键会被判为无效并忽略。

TOML 里的反斜杠

toggle_toolbar 默认值含反斜杠,在 TOML 中需用单引号字符串写成 'ctrl+shift+\',否则双引号里的 \ 会被当作转义符。

中英切换

[keys]
toggle_mode_keys = ["lshift", "rshift"]  # 中英切换键(键松开时触发)
commit_on_switch = true                  # 切到英文时是否上屏未完成的组合
类型可选值默认说明
toggle_mode_keys字符串数组lshift / rshift / lctrl / rctrl / capslock["lshift", "rshift"]单击并松开这些修饰键即切换中/英文模式。可多选,空数组=禁用点击切换
commit_on_switch布尔true / falsetrue从中文切到英文时若有未上屏的组合:true=上屏原始编码,false=直接丢弃

toggle_mode_keys 可选值对照:

可选值物理按键
lshift左 Shift
rshift右 Shift
lctrl左 Ctrl
rctrl右 Ctrl
capslockCaps Lock

状态切换快捷键

[keys]
switch_engine = "ctrl+shift+e"    # 循环切换输入方案
toggle_full_width = "shift+space" # 全角/半角切换
toggle_punct = "ctrl+."           # 中文/英文标点切换
toggle_s2t = "ctrl+shift+j"       # 简体/繁体输出切换
类型默认说明
switch_engine热键字符串ctrl+shift+e[schema].available 列表内循环切换当前方案
toggle_full_width热键字符串shift+space切换全角/半角字符输出
toggle_punct热键字符串ctrl+.切换中文/英文标点(仅中文模式下生效)
toggle_s2t热键字符串ctrl+shift+j切换简体/繁体输出(仅中文模式下生效)
schema_hotkeys表(方案 id → 热键字符串){}方案直达热键,见下

方案直达热键

switch_engine 是循环切换,方案多了就要按好几次。schema_hotkeys 给单个方案绑一个键,按下直接切过去:

[keys]
schema_hotkeys = { english = "ctrl+shift+n", wubi86 = "ctrl+shift+w" }

key 是方案 id(与 [schema].available 里的写法一致),value 是热键字符串。设置工具里的位置:方案 → 输入方案 → 选中方案 → 设置 → 进入方式

行为与 switch_engine 完全一致——同样遵循「切换时是否上屏」,同样把选择持久化到 schema.active两种模式下都生效,这一点和其它中文态专属的快捷键不同:切到英文方案之后,还得能按键切回来。

指向不存在或未启用方案的条目会被安静忽略,不影响其它绑定;目标方案正在后台预热时提示「准备中…」并保持当前方案不变。

与特殊模式热键的区别

[[schema.special_modes]]hotkey 进的是临时模式——打完一段自动退回原方案。schema_hotkeys换方案,不再按一次不会回来。要「临时打几个字符就回来」用前者,要「切过去待一会儿」用后者。

功能快捷键

[keys]
toggle_toolbar = 'ctrl+shift+\'       # 显示/隐藏工具栏
open_settings = "ctrl+shift+]"        # 打开设置工具
add_word = "ctrl+equal"               # 就地加词(从当前组合造词)
open_add_word_dialog = "ctrl+shift+equal" # 打开加词小窗
activate_ime = "ctrl+shift+["         # 切换到本输入法(系统级)
类型默认说明
toggle_toolbar热键字符串ctrl+shift+\显示/隐藏常驻工具栏
open_settings热键字符串ctrl+shift+]打开设置工具窗口
add_word热键字符串ctrl+equal就地加词,仅中文模式生效。该键额外走系统级全局拦截,规避 QQNT / Tabby 等宿主的加速键双处理
open_add_word_dialog热键字符串ctrl+shift+equal打开独立加词小窗,仅中文模式生效,同样走全局拦截
activate_ime热键字符串ctrl+shift+[切换到本输入法。经 Windows DirectSwitchHotkeys 注册表交由系统 ctfmon 原生处理(per-app 切换),不经引擎按键分发

take_screenshot(隐藏字段)

keys.take_screenshot(默认 ctrl+shift+f11)是有效但未在设置界面暴露的字段,也不写入随程序分发的 data\config.toml——它只有代码默认值。按下时触发截图(trigger_screenshot),并可作为全局热键动作。需自定义时只能手动写入 config.toml

[keys]
take_screenshot = "ctrl+shift+f11"  # 隐藏字段,设置界面无对应项

候选置顶与删除

[keys]
pin_candidate = "ctrl+number"           # 置顶候选(Ctrl+数字)
delete_candidate = "ctrl+shift+number"  # 删除候选(Ctrl+Shift+数字)
类型可选值默认说明
pin_candidate热键字符串(模板)ctrl+number / ctrl+shift+numberctrl+number对当前页第 N 个候选执行置顶。number 占位符展开为数字键 0–9
delete_candidate热键字符串(模板)ctrl+number / ctrl+shift+numberctrl+shift+number对当前页第 N 个候选执行删词。number 占位符展开为数字键 0–9

这两项只认固定模板

pin_candidate / delete_candidate 只识别 ctrl+numberctrl+shift+number 两种写法(number 代表数字键组);填其它值会被判为无效并忽略,等同于不绑定。

候选选择键组

[keys]
select_key_groups = ["semicolon_quote"]  # 次选/三选键组
类型可选值默认说明
select_key_groups字符串数组semicolon_quote / comma_period / lrshift / lrctrl["semicolon_quote"]除数字键外的候选快捷选择键组:每组第 1 键选第 2 个候选、第 2 键选第 3 个候选。可多选,空数组=仅用数字键选词

select_key_groups 可选值对照:

可选值第 2 候选键第 3 候选键
semicolon_quote;'
comma_period,.
lrshift左 Shift右 Shift
lrctrl左 Ctrl右 Ctrl

修饰键组(lrshift / lrctrl)在松开时才选词,且只认「轻敲」——按住超过 500 毫秒、 或按下期间碰了别的键,都不算选词。这样 Ctrl+AShift+字母 这类组合才不会被误判成选候选。

如果同一个键同时配成了中英文切换键(toggle_mode_keys),裁决是:有候选时选词, 无候选时切中英文;候选数量不足以命中该位次时吞掉该键,既不上屏也不切换 (修饰键没有对应字符,故不套用 [keys.overflow] 的策略)。

翻页与高亮导航

[keys]
page_keys = ["pageupdown", "minus_equal"]  # 候选翻页键组
highlight_keys = ["arrows", "tab"]         # 候选高亮移动键组
类型可选值默认说明
page_keys字符串数组pageupdown / minus_equal / brackets / comma_period / shift_tab["pageupdown", "minus_equal"]候选窗上一页/下一页键组,可多选
highlight_keys字符串数组arrows / tab["arrows", "tab"]候选高亮上移/下移键组,可多选

page_keys 可选值对照:

可选值上一页下一页
pageupdownPageUpPageDown
minus_equal-=
brackets[]
comma_period,.
shift_tabShift+TabTab

highlight_keys 可选值对照:

可选值上移下移
arrows
tabShift+TabTab

以词定字

[keys]
select_char_keys = []  # 以词定字键组,默认禁用
类型可选值默认说明
select_char_keys字符串数组comma_period / minus_equal / brackets[]用成对标点键从当前高亮候选词中逐字上屏:第 1 键取第 1 字、第 2 键取第 2 字。空数组=禁用。词长不足时按 [keys.overflow].select_char_key 策略处理

select_char_keys 可选值对照:

可选值取第 1 字取第 2 字
comma_period,.
minus_equal-=
brackets[]

全局热键

[keys]
global_hotkeys = []  # 提升为系统级全局热键的动作名列表
类型默认说明
global_hotkeys字符串数组[]列出的动作名将经 Win32 RegisterHotKey 注册为系统级热键,使其在任意应用中生效。填的是动作名而非键值,键值仍取各功能字段自身的绑定

global_hotkeys 支持的动作名:

动作名对应功能
switch_engine切换方案
toggle_full_width全/半角切换
toggle_punct中/英标点切换
toggle_toolbar显示/隐藏工具栏
open_settings打开设置
take_screenshot截图
toggle_s2t简/繁切换

不支持的动作会被忽略

只有上表 7 个动作可放进 global_hotkeys;填写其它名字(含 add_word / activate_ime 等)会被判为不支持并忽略。其中 activate_ime 另有专属系统级通道(DirectSwitchHotkeys 注册表),无需也不能列在此处;add_word 需要当前组合上下文,不参与全局注册。

无效按键策略(keys.overflow)

当按下选择/翻页/以词定字类按键,但候选数量或词长不足以命中目标位次时的处理方式。三项共用同一套枚举。

[keys.overflow]
number_key = "ignore"       # 数字键超出当前页候选数量时
select_key = "ignore"       # 次选/三选键候选不足时
select_char_key = "ignore"  # 以词定字键候选词长度不足时
类型可选值默认说明
number_key枚举ignore / commit / commit_and_inputignore数字键位次超出当前页候选数量时的行为
select_key枚举ignore / commit / commit_and_inputignore次选/三选键(见 select_key_groups)候选不足时的行为
select_char_key枚举ignore / commit / commit_and_inputignore以词定字键(见 select_char_keys)候选词长度不足时的行为

枚举取值行为:

取值行为
ignore吞掉该键,不做任何操作(默认)
commit上屏当前高亮的候选
commit_and_input上屏当前高亮候选,并把该按键对应的字符追加输入

相关阅读

本页目录