Skip to content

兼容性与自定义主题

兼容性配置

兼容性规则用于修复特定应用中候选框定位、光标获取等问题。规则文件为 TOML 的 [[apps]] 数组表,加载顺序为系统预置<安装目录>\data\compat.toml)→ 用户覆盖%APPDATA%\WindInput\compat.toml),用户层同进程名规则覆盖系统层。

toml
[[apps]]
process = "Weixin.exe"        # 进程名(不区分大小写)
comment = "微信 - 使用 rect.top 定位候选框"
caret_use_top = true          # 使用 caret rect 的 top 而非 bottom 定位候选框

字段说明

字段类型说明
processstring进程名,不区分大小写,如 Notepad.exe
commentstring备注说明,仅用于文档与可读性
caret_use_topbool使用 caret rect 的 top 而非 bottom 定位候选框

caret_use_top 适用于 GetTextExt 返回的 height 不稳定的 WebView 应用(如微信的 Qt WebView 输入框,height 在 1↔20px 间跳变导致 bottom 漂移,但 top 始终稳定)。

清风输入法内置了微信的兼容性规则,会自动修正候选框定位。如果其他应用也有类似问题,可在用户 compat.toml 中添加规则;修改后通过托盘菜单的重载配置即可生效。

自定义主题

将主题文件放入以下目录,即可在设置工具的「外观」页选择:

  • Windows%APPDATA%\WindInput\themes\<主题名>\theme.toml
  • macOS~/Library/Application Support/WindInput/themes/<主题名>/theme.toml

主题文件为 TOML 格式

主题文件为 TOML 格式(v3)theme.toml)。制作主题最省事的方式是继承一个内置主题,只覆盖需要改动的部分;复杂的几何与配色建议直接用主题编辑器可视化制作。

主题文件结构

主题由若干顶层块组成,均可选,未写的部分从被继承主题回退:

toml
# 继承内置主题(未写的字段从它继承);内置基础主题以 _ 前缀命名(如 _base / _qingfeng)
base = "default"

[meta]
name = "我的主题"        # 必填
version = "1.0"          # 可选
author = "作者"          # 可选

[colors]
# 颜色 token 表(扁平):支持亮暗分设与 ${token} 引用
primary = "#3b82f6"
bg = { light = "#FFFFFF", dark = "#121826" }   # 亮/暗分设
text = { light = "#1A1D24", dark = "#F2F3F7" }
accent = "${primary}"                          # 引用其他 token

[behavior]
# 主题给用户的推荐默认,用户可在设置工具「外观」页单独覆盖
always_show_pager = false
show_page_number = true

各顶层块职责:

说明
base继承的内置主题名(default / msime 或内置基础主题 _base / _qingfeng
[meta]元信息:name(必填)、versionauthor
[colors]颜色 token 表(扁平),语义色的唯一来源,[views] 通过 ${token} 引用
[resources]图片资源引用(可选,支持亮暗分设)
[views]几何与布局(候选窗 / 工具栏 / 菜单的盒模型)
[behavior]主题推荐的行为默认(见下表)

快速上手:继承内置主题

最简单的方式是声明 base 并只写要改的颜色,其余从内置主题继承:

toml
base = "default"

[meta]
name = "我的蓝色主题"

[colors]
primary = "#0066CC"     # 只改主色,其余外观沿用 default

颜色系统

[colors] 块是所有颜色的唯一来源。

亮暗分设: 值写成 { light = "...", dark = "..." } 表示亮暗使用不同颜色;写成单个字符串则亮暗共用;只写一侧时另一侧自动回退到已写的一侧。

token 引用: "${tokenName}" 引用同表中另一个 token 的值。

颜色格式: "#RGB" / "#RRGGBB" / "#RRGGBBAA"(支持 alpha 透明度)/ "transparent"

behavior 字段

[behavior] 中的值是主题给用户的推荐默认,用户可在设置工具「外观」页单独覆盖,覆盖跨主题切换保持。

字段类型说明
font_sizenumber候选字号基准(pt)
always_show_pagerbool始终显示翻页栏(即使只有一页)
hide_pagerbool隐藏整个翻页栏(含箭头)
show_page_numberbool显示页码文字
pager_alignstring独立翻页栏行的水平对齐(left / center / right,默认 center);仅竖排独立翻页栏生效,翻页栏并入编码栏时固定右对齐
vertical_max_widthnumber竖排模式最大宽度(像素)

views 几何

[views]具名节点描述各窗口的盒模型(内外边距、边框、圆角、背景色/渐变/图、字体、阴影、覆盖图层等):

节点说明
window / preedit_bar / candidate_list / item / index / text / comment候选窗骨架:窗口容器、编码栏、候选列表、单个候选、序号、词条文本、注释
accent_bar / footer_bar选中候选左侧强调条;底部翻页栏(可自定义翻页箭头图/字符)
mode_label模式指示标签(临拼/临英等)
status / tooltip / toast状态气泡、候选悬停提示框、toast 通知
toolbar工具栏:背景/边框 + 高度、按钮宽度/内边距/圆角等几何 + 按钮中英状态覆盖 + 设置齿轮
menu右键弹出菜单:容器、菜单项(含 hover/disabled)、分隔线

通用约定:

  • 尺寸单位 — 裸数字或 "8dp" 为密度无关像素(随 DPI 缩放);"1px" 为设备像素(发丝边框不随 DPI 加粗);"50%" 为百分比(仅覆盖图偏移等少数字段)。
  • 状态覆盖item 等节点可写 selected / hover / disabled 子表覆盖颜色、背景、字重等(不覆盖几何,避免候选框跳动)。
  • 图片资源 — 背景图与覆盖图经 ref 引用顶层 [resources] 中登记的图片(支持亮暗分设、九宫格拉伸、单色染色随主题变色)。

字段较多且随版本演进,制作或调整几何时,建议直接以内置主题文件为模板,或使用主题编辑器可视化编辑,避免逐字段手写出错。

内置主题参考

清风输入法内置五个可选主题,可作为模板起点:

  • 清风·蓝default)— 默认主题,清风设计体系,主色现代蓝
  • 清风·绿jade)/ 清风·橙amber)/ 清风·紫violet)— 同体系配色变体,只覆盖主色相关 token,是「继承 + 改色」的最小示例
  • 微软风格msime)— 微软蓝主色、紧凑布局、文字序号、左侧强调条

内置主题文件位于安装目录下的 data\themes\ 文件夹(含以 _ 前缀命名、不在列表显示的内置基础主题 _base / _qingfeng)。你也可以在设置工具中选中一个内置主题后查看其外观,作为自定义的参考。