配置机制与全局配置
高级主题
本文面向需要手动编辑配置文件的用户。普通用户通过设置工具即可完成配置,修改即时生效。
配置文件位置
清风输入法的数据分为漫游数据(%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 格式,用户配置文件首行带版本号:
version = 1方案配置(*.schema.toml)与系统短语(system.phrases.toml)同样为 TOML 格式。
词库文件为 YAML
RIME 词库文件(*.dict.yaml)为 YAML 格式——词库头部字段少、正文为缩进/制表分隔的词条表,YAML 编辑更直观,且可直接复用 Rime 生态的词库资源。
配置加载机制
配置采用三层合并机制,优先级从低到高:
- 代码默认值 — 程序内置的默认配置
- 系统预置配置 — 随程序分发的
data\config.toml - 用户配置 —
%APPDATA%\WindInput\config.toml
三层各自的表结构深合并:表递归合并(高层的键覆盖/新增低层同名键),标量与数组由高层整体覆盖。保存时采用 diff 保存:仅将与系统默认不同的字段写入用户配置文件,使未修改的字段能自动跟随系统默认值的更新。
INFO
如果你发现用户配置文件中只包含 version = 1 和少量字段,这是正常现象——只保存了与默认值不同的项。
顶层配置域
配置按七个正交大类组织:
| 域 | 内容 |
|---|---|
[schema] | 方案选择与全局引擎配置(码表/拼音/混输),详见方案配置详解 |
[input] | 输入行为:标点、智能符号、配对、临时英文/拼音、网址、简繁、命令栏、启动默认状态 |
[keys] | 全部按键:切换键、选择/翻页/以词定字键、功能快捷键、无效按键策略 |
[ui] | 外观:候选窗、字体、主题、模式指示、悬停提示、状态气泡、工具栏 |
[stats] | 输入统计开关 |
[compat] | 应用兼容性与宿主渲染 |
[debug] | 日志 |
方案 [schema]
[schema]
active = "wubi86" # 当前方案
available = ["wubi86", "wubi86_pinyin"] # 可循环切换的方案列表(顺序即切换顺序)
primary_codetable = "" # 主码表方案 id(留空按 available 自动选)
primary_pinyin = "" # 主拼音方案 id[schema] 下还有全局码表/拼音/混输配置([schema.codetable] / [schema.pinyin] / [schema.mix])与快捷输入、特殊模式等,字段较多,单独整理在方案配置详解。
输入行为 [input]
[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]
[input.default]
remember_last_state = false # 记忆上次的中英/全半角/标点状态
chinese_mode = true # 启动默认中文(remember 关时生效)
full_width = false # 启动默认半角
chinese_punct = true # 启动默认中文标点
state_scope = "global" # 中英状态作用域:global(全局统一)/ app(按应用独立,会话级)标点 [input.punct]
[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]
[input.symbol]
smart_mode = false # 连按两次同一中文标点转英文
smart_timeout_ms = 500 # 两次按键最大间隔(毫秒)
smart_chars = "。,?!:;、~¥·……——" # 参与转换的中文标点集合标点配对 [input.auto_pair]
[input.auto_pair]
chinese = false # 中文标点自动配对
english = false # 英文标点自动配对
chinese_pairs = ["()", "【】", "{}", "《》", "〈〉", "「」", "『』"]
english_pairs = ["()", "[]", "{}"]临时英文 [input.temp_english]
[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]
[input.temp_pinyin]
enabled = true # 码表方案下启用临时拼音
schema = "pinyin" # 目标拼音方案 id(空=回退 pinyin)
trigger_keys = ["backtick"] # 触发键(backtick / semicolon / z 等,可多选)
hotkey = "" # 专用直达热键(如 "ctrl+shift+p",空=不注册);
# 与触发键共存,热键进入时组合区不写引导符网址输入 [input.url]
[input.url]
enabled = false # 启用网址输入模式
# 触发前缀(恰好匹配即进入网址模式)
prefixes = ["www.", "http", "https", "ftp.", "bbs."]简入繁出 [input.s2t]
[input.s2t]
enabled = false # 简入繁出总开关
variant = "s2t" # s2t / s2tw / s2twp / s2hk命令栏 [input.cmdbar]
[input.cmdbar]
candidate_prefix = "⚡" # 副作用命令候选的前缀符号命令栏始终开启,仅前缀可配。详见命令直通车。
短语前缀列举 [input.phrase]
[input.phrase]
min_prefix = 2 # 触发短语前缀列举的最小输入长度
max_display_chars = 30 # 短语/命令候选显示文本最大字符数(0=不限)按键 [keys]
[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_engine、toggle_full_width、toggle_punct、toggle_toolbar、open_settings、take_screenshot、toggle_s2t。activate_ime 无需也不参与此列表——它经系统的输入法直接切换机制注册,天生全局。
外观 [ui]
候选窗口 [ui.candidate]
[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]
[ui.font]
family = "" # 候选窗字体(留空跟随主题)
[ui.theme]
name = "default" # 主题名(default / msime 或自定义主题目录名)
style = "system" # system / light / dark模式指示 [ui.mode_indicator]
[ui.mode_indicator]
style = "short" # short(短称)/ full(全称)/ none(不显示)悬停提示 [ui.tooltip]
[ui.tooltip]
delay = 200 # 悬停延时(毫秒)
code_enabled = true # 编码反查
pinyin_enabled = true # 拼音反查
pinyin_heteronyms = true # 显示多音字所有读音
chaizi_enabled = false # 拆字反查
debug_enabled = false # 调试信息状态提示 [ui.status]
[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]
[ui.toolbar]
visible = true # 显示工具栏
hide_in_fullscreen = true # 前台应用全屏时自动隐藏
auto_hide = false # 无交互一段时间后淡出隐藏
auto_hide_delay = 5 # 自动隐藏延时(秒)输入统计 [stats]
[stats]
enabled = true # 启用输入统计
track_english = true # 统计英文模式输入兼容性与诊断 [compat] / [debug]
[compat]
# 宿主渲染进程白名单(修改后需重启)
host_render_processes = ["SearchHost.exe"]
[debug]
log_level = "info" # error / warn / info / debug / trace(修改后需重启)应用级候选定位兼容规则不在 config.toml 中,而在独立的 compat.toml,详见兼容性配置。
