按键配置
keys 域全部配置项——中英切换、候选选择与翻页、以词定字、功能快捷键、全局热键
高级主题
普通用户在设置工具的"快捷键"页即可完成全部按键设置,修改即时生效。本页面向手动编辑 config.toml 的用户,逐项列出 [keys] 域的类型、可选值与默认值。
[keys] 域收纳输入法的全部按键绑定:中英切换键、引擎切换与状态切换快捷键、候选选择/翻页/高亮/以词定字键组、功能快捷键,以及全局热键。该域是扁平结构——除无效按键策略下沉到 [keys.overflow] 一层子表外,其余字段都直接挂在 [keys] 下。
字段分两类:
- 热键字符串(如
switch_engine):单个组合键,格式见下方"热键字符串格式"。 - 键组数组(如
page_keys):值不是键名而是键组常量(一个常量代表一对物理按键),可多选、以数组给出。每个这类字段下方都附一张"可选值 → 物理按键"对照表。
热键字符串格式
热键字符串由修饰键 + + + 主键组成,大小写不敏感、可含空格。
- 修饰键:
ctrl(=control)、shift、alt、win(=super)。 - 主键:字母
a–z;数字0–9;功能键f1–f12;space/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 / false | true | 从中文切到英文时若有未上屏的组合:true=上屏原始编码,false=直接丢弃 |
toggle_mode_keys 可选值对照:
| 可选值 | 物理按键 |
|---|---|
lshift | 左 Shift |
rshift | 右 Shift |
lctrl | 左 Ctrl |
rctrl | 右 Ctrl |
capslock | Caps 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+number | ctrl+number | 对当前页第 N 个候选执行置顶。number 占位符展开为数字键 0–9 |
delete_candidate | 热键字符串(模板) | ctrl+number / ctrl+shift+number | ctrl+shift+number | 对当前页第 N 个候选执行删词。number 占位符展开为数字键 0–9 |
这两项只认固定模板
pin_candidate / delete_candidate 只识别 ctrl+number 与 ctrl+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+A、Shift+字母 这类组合才不会被误判成选候选。
如果同一个键同时配成了中英文切换键(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 可选值对照:
| 可选值 | 上一页 | 下一页 |
|---|---|---|
pageupdown | PageUp | PageDown |
minus_equal | - | = |
brackets | [ | ] |
comma_period | , | . |
shift_tab | Shift+Tab | Tab |
highlight_keys 可选值对照:
| 可选值 | 上移 | 下移 |
|---|---|---|
arrows | ↑ | ↓ |
tab | Shift+Tab | Tab |
以词定字
[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_input | ignore | 数字键位次超出当前页候选数量时的行为 |
select_key | 枚举 | ignore / commit / commit_and_input | ignore | 次选/三选键(见 select_key_groups)候选不足时的行为 |
select_char_key | 枚举 | ignore / commit / commit_and_input | ignore | 以词定字键(见 select_char_keys)候选词长度不足时的行为 |
枚举取值行为:
| 取值 | 行为 |
|---|---|
ignore | 吞掉该键,不做任何操作(默认) |
commit | 上屏当前高亮的候选 |
commit_and_input | 上屏当前高亮候选,并把该按键对应的字符追加输入 |