Skip to content

配置机制与全局配置

高级主题

本文面向需要手动编辑配置文件的用户。普通用户通过设置工具即可完成配置,修改即时生效。

配置文件位置

清风输入法的数据分为漫游数据%APPDATA%,随用户配置文件漫游)与本机数据%LOCALAPPDATA%,缓存与运行时状态,不漫游)两部分。便携版下两者同指便携数据目录。

文件 / 目录位置说明
config.toml%APPDATA%\WindInput\全局配置(本文主题)
userdata.redb%APPDATA%\WindInput\用户词库、词频、候选调整、短语等用户数据(程序维护,勿手改)
schemas\*.schema.toml%APPDATA%\WindInput\用户方案覆盖(附加词库开关、双拼布局等;与程序 data\schemas\ 同名深合并)
schema_overrides\<方案ID>.toml%APPDATA%\WindInput\单方案的码表行为覆盖(设置工具维护,见方案配置详解
themes\<主题名>\theme.toml%APPDATA%\WindInput\用户主题(TOML 格式,见自定义主题
compat.toml%APPDATA%\WindInput\应用兼容性规则(见兼容性配置
system.phrases.toml%APPDATA%\WindInput\系统短语种子的用户覆盖(可选,系统种子随程序分发)
state.toml%LOCALAPPDATA%\WindInput\运行时状态(上次中英/标点状态、工具栏位置等;程序维护,勿手改)
cache\%LOCALAPPDATA%\WindInput\词库编译缓存
logs\%LOCALAPPDATA%\WindInput\日志文件

配置格式

全局配置为 TOML 格式,用户配置文件首行带版本号:

toml
version = 1

方案配置(*.schema.toml)与系统短语(system.phrases.toml)同样为 TOML 格式

词库文件为 YAML

RIME 词库文件(*.dict.yaml)为 YAML 格式——词库头部字段少、正文为缩进/制表分隔的词条表,YAML 编辑更直观,且可直接复用 Rime 生态的词库资源。

配置加载机制

配置采用三层合并机制,优先级从低到高:

  1. 代码默认值 — 程序内置的默认配置
  2. 系统预置配置 — 随程序分发的 data\config.toml
  3. 用户配置%APPDATA%\WindInput\config.toml

三层各自的表结构深合并:表递归合并(高层的键覆盖/新增低层同名键),标量与数组由高层整体覆盖。保存时采用 diff 保存:仅将与系统默认不同的字段写入用户配置文件,使未修改的字段能自动跟随系统默认值的更新。

INFO

如果你发现用户配置文件中只包含 version = 1 和少量字段,这是正常现象——只保存了与默认值不同的项。

顶层配置域

配置按七个正交大类组织:

内容
[schema]方案选择与全局引擎配置(码表/拼音/混输),详见方案配置详解
[input]输入行为:标点、智能符号、配对、临时英文/拼音、网址、简繁、命令栏、启动默认状态
[keys]全部按键:切换键、选择/翻页/以词定字键、功能快捷键、无效按键策略
[ui]外观:候选窗、字体、主题、模式指示、悬停提示、状态气泡、工具栏
[stats]输入统计开关
[compat]应用兼容性与宿主渲染
[debug]日志

方案 [schema]

toml
[schema]
active = "wubi86"                       # 当前方案
available = ["wubi86", "wubi86_pinyin"] # 可循环切换的方案列表(顺序即切换顺序)
primary_codetable = ""                  # 主码表方案 id(留空按 available 自动选)
primary_pinyin = ""                     # 主拼音方案 id

[schema] 下还有全局码表/拼音/混输配置([schema.codetable] / [schema.pinyin] / [schema.mix])与快捷输入、特殊模式等,字段较多,单独整理在方案配置详解

输入行为 [input]

toml
[input]
filter_mode = "smart"              # 候选检索范围:smart / general / gb18030
enter_behavior = "commit"          # 回车键:commit / clear / commit_and_input / ignore
space_on_empty_behavior = "commit" # 空码空格:commit / clear / commit_and_input / ignore
numpad_behavior = "direct"         # 数字小键盘:direct / follow_main

启动默认状态 [input.default]

toml
[input.default]
remember_last_state = false        # 记忆上次的中英/全半角/标点状态
chinese_mode = true                # 启动默认中文(remember 关时生效)
full_width = false                 # 启动默认半角
chinese_punct = true               # 启动默认中文标点
state_scope = "global"             # 中英状态作用域:global(全局统一)/ app(按应用独立,会话级)

标点 [input.punct]

toml
[input.punct]
follow_mode = false                # 标点随中英模式切换
smart_after_digit = true           # 数字后智能英文标点
smart_list = ".,:"                 # 参与数字后智能标点的集合
custom_enabled = false             # 启用自定义标点映射

# 自定义标点映射:key=源字符(引号用 "1/"2/'1/'2 区分左右),
# value=[中文半角, 英文全角, 中文全角, 英文半角](缺列/空串=回退默认转换)
[input.punct.custom_mappings]
'"1' = ["“", "\"", "“", "\""]

智能符号 [input.symbol]

toml
[input.symbol]
smart_mode = false                 # 连按两次同一中文标点转英文
smart_timeout_ms = 500             # 两次按键最大间隔(毫秒)
smart_chars = "。,?!:;、~¥·……——"  # 参与转换的中文标点集合

标点配对 [input.auto_pair]

toml
[input.auto_pair]
chinese = false                    # 中文标点自动配对
english = false                    # 英文标点自动配对
chinese_pairs = ["()", "【】", "{}", "《》", "〈〉", "「」", "『』"]
english_pairs = ["()", "[]", "{}"]

临时英文 [input.temp_english]

toml
[input.temp_english]
enabled = true                     # 临时英文总开关(不在设置工具中暴露)
show_candidates = true             # 显示英文候选
shift_behavior = "temp_english"    # temp_english(进入临时英文)/ direct_commit(直接上屏大写字母)
trigger_keys = []                  # 符号触发键(可选,留空仅 Shift+字母进入)
allow_symbols = false              # 允许输入下划线、点号等符号
space_as_input = false             # 空格作为输入字符(回车才上屏)

[input.capslock]
cancel_on_mode_switch = false      # 切换中英文模式时取消大写锁定

临时拼音 [input.temp_pinyin]

toml
[input.temp_pinyin]
enabled = true                     # 码表方案下启用临时拼音
schema = "pinyin"                  # 目标拼音方案 id(空=回退 pinyin)
trigger_keys = ["backtick"]        # 触发键(backtick / semicolon / z 等,可多选)
hotkey = ""                        # 专用直达热键(如 "ctrl+shift+p",空=不注册);
                                   # 与触发键共存,热键进入时组合区不写引导符

网址输入 [input.url]

toml
[input.url]
enabled = false                    # 启用网址输入模式
# 触发前缀(恰好匹配即进入网址模式)
prefixes = ["www.", "http", "https", "ftp.", "bbs."]

简入繁出 [input.s2t]

toml
[input.s2t]
enabled = false                    # 简入繁出总开关
variant = "s2t"                    # s2t / s2tw / s2twp / s2hk

命令栏 [input.cmdbar]

toml
[input.cmdbar]
candidate_prefix = "⚡"            # 副作用命令候选的前缀符号

命令栏始终开启,仅前缀可配。详见命令直通车

短语前缀列举 [input.phrase]

toml
[input.phrase]
min_prefix = 2                     # 触发短语前缀列举的最小输入长度
max_display_chars = 30             # 短语/命令候选显示文本最大字符数(0=不限)

按键 [keys]

toml
[keys]
# 中英文切换键(可多选):lshift, rshift, lctrl, rctrl, capslock
toggle_mode_keys = ["lshift", "rshift"]
commit_on_switch = true               # 切换中英文时将已有编码上屏

# 功能快捷键
switch_engine = "ctrl+shift+e"        # 切换输入方案
toggle_full_width = "shift+space"     # 全角/半角切换
toggle_punct = "ctrl+."               # 中英文标点切换
toggle_toolbar = 'ctrl+shift+\'       # 显示/隐藏工具栏
open_settings = "ctrl+shift+]"        # 打开设置工具
add_word = "ctrl+equal"               # 快捷加词
toggle_s2t = "ctrl+shift+j"           # 简入繁出开关切换
activate_ime = "ctrl+shift+["         # 切换到本输入法
take_screenshot = "ctrl+shift+f11"    # 界面截图
pin_candidate = "ctrl+number"         # 置顶候选词
delete_candidate = "ctrl+shift+number" # 删除候选词
global_hotkeys = []                   # 注册为全局热键的名称列表

# 候选选择与导航键(可多选)
select_key_groups = ["semicolon_quote"] # 次选/三选:semicolon_quote, comma_period, lrshift, lrctrl
page_keys = ["pageupdown", "minus_equal"] # 翻页:pageupdown, minus_equal, brackets, shift_tab, comma_period
highlight_keys = ["arrows", "tab"]    # 高亮移动:arrows, tab
select_char_keys = []                 # 以词定字:comma_period, minus_equal, brackets

# 候选无效按键策略:ignore / commit / commit_and_input
[keys.overflow]
number_key = "ignore"
select_key = "ignore"
select_char_key = "ignore"

各键的可选值与含义详见按键设置global_hotkeys 将指定功能键注册为系统级全局热键,即使其他应用聚焦也能响应,例如 ["open_settings", "take_screenshot"];支持的动作为 switch_enginetoggle_full_widthtoggle_puncttoggle_toolbaropen_settingstake_screenshottoggle_s2tactivate_ime 无需也不参与此列表——它经系统的输入法直接切换机制注册,天生全局。

外观 [ui]

候选窗口 [ui.candidate]

toml
[ui.candidate]
per_page = 7                       # 每页候选数
per_page_extended = 0              # 扩展档每页候选数(临拼/快捷等;0=同 per_page)
layout = "horizontal"             # horizontal / vertical
preedit_display = "app_inline"     # app_inline / candidate_top / candidate_inline
hide_window = false                # 隐藏候选窗
font_size = 18.0                   # 候选字号(font_size_follow_theme 关时生效)
font_size_follow_theme = true      # 字号跟随主题
pager_bar_display = ""             # 翻页栏:""跟随主题 / hide / auto / always
page_number_display = ""           # 页码:""跟随主题 / show / hide
max_chars = 16                     # 候选文本最大字数(0=不限)
index_labels = ""                  # 自定义序号标签(如 "asdfg";空=默认 1-9)
flip_when_above = false            # 候选窗在上方时反转候选顺序(可与编码栏置底叠加)
swap_preedit_when_above = false    # 候选窗在上方时编码栏置底(编码栏沉到底部贴近光标)
pager_in_preedit = false           # 翻页栏右对齐并入编码栏行(仅 preedit_display = "candidate_top" 时生效)

字体与主题 [ui.font] / [ui.theme]

toml
[ui.font]
family = ""                        # 候选窗字体(留空跟随主题)

[ui.theme]
name = "default"                   # 主题名(default / msime 或自定义主题目录名)
style = "system"                   # system / light / dark

模式指示 [ui.mode_indicator]

toml
[ui.mode_indicator]
style = "short"                    # short(短称)/ full(全称)/ none(不显示)

悬停提示 [ui.tooltip]

toml
[ui.tooltip]
delay = 200                        # 悬停延时(毫秒)
code_enabled = true                # 编码反查
pinyin_enabled = true              # 拼音反查
pinyin_heteronyms = true           # 显示多音字所有读音
chaizi_enabled = false             # 拆字反查
debug_enabled = false              # 调试信息

状态提示 [ui.status]

toml
[ui.status]
enabled = true                     # 启用状态提示气泡
duration = 800                     # 临时显示时长(毫秒)
display_mode = "temp"              # temp(临时)/ always(常驻)
schema_name_style = "full"         # full(全名)/ short(图标短称)
position_mode = "follow_caret"     # follow_caret(跟随光标)/ fixed(固定坐标)
offset_x = 0                       # follow_caret 下水平偏移
offset_y = 0                       # follow_caret 下垂直偏移
custom_x = 0                       # fixed 下固定屏幕 X
custom_y = 0                       # fixed 下固定屏幕 Y

状态气泡的纯视觉样式(颜色/字号/透明度/圆角)由主题决定,不在此配置。

工具栏 [ui.toolbar]

toml
[ui.toolbar]
visible = true                     # 显示工具栏
hide_in_fullscreen = true          # 前台应用全屏时自动隐藏
auto_hide = false                  # 无交互一段时间后淡出隐藏
auto_hide_delay = 5                # 自动隐藏延时(秒)

输入统计 [stats]

toml
[stats]
enabled = true                     # 启用输入统计
track_english = true               # 统计英文模式输入

兼容性与诊断 [compat] / [debug]

toml
[compat]
# 宿主渲染进程白名单(修改后需重启)
host_render_processes = ["SearchHost.exe"]

[debug]
log_level = "info"                 # error / warn / info / debug / trace(修改后需重启)

应用级候选定位兼容规则不在 config.toml 中,而在独立的 compat.toml,详见兼容性配置