应用兼容性规则
compat.toml 的全部字段、候选窗首显的三档策略、应用独立初始状态、宿主渲染模式,以及合并语义的坑
有些程序对输入法不太友好:候选框飘到错误的位置、候选窗被盖住看不见、或者你每次进去都要手动切一次英文。这些都靠 compat.toml 里的逐应用规则修正。
多数人不用读这一页
最常见的两件事——给某个程序设初始英文、调候选窗首显——直接在那个程序里打开功能主菜单 → 应用独立配置点两下就行,菜单会替你写规则。本页面向要手工写规则、或想知道每一档到底在做什么的用户。
文件位置与合并
规则文件为 TOML 的 [[apps]] 数组表,按下面的顺序逐层叠加,靠后的层优先:
| 层 | 位置 | 谁维护 |
|---|---|---|
| 系统预置 | <安装目录>\data\compat.toml | 随程序分发,升级时整体替换。顶部有完整的字段注释,值得一读 |
| 定制层 | <安装目录>\data_custom\compat.toml | 只有定制版才有,由定制作者随包分发 |
| 用户覆盖 | %APPDATA%\WindInput\compat.toml | 你自己写,或由右键菜单自动管理 |
用窗口管理,不用手写 0.124 新增
成批查看、修改内置规则、新增、禁用、还原、导入导出,都可以在设置的「高级 → 应用兼容性与独立配置」打开的应用兼容性与独立配置窗口里点着完成,不用手写文件。窗口与右键菜单写的是同一份用户层。
合并语义:字段级叠加,用户层只记差异 0.124 新增
三层按顺序逐字段叠加,靠后的层优先。同名进程(不区分大小写)的规则不是整条替换,而是字段级合并:
- 用户层那条写了的字段,覆盖前面层的值;
- 没写的字段,继承前面层的值——所以你只给
Weixin.exe写一条initial_mode,系统层给它的caret_use_top、stale_probe_guard照常生效; - 想取消前面层设的某个字段(回到「跟随全局」),在用户层写
unset:unset = ["caret_use_top"]; - 想关掉前面层打开的开关,显式写
false; - 想禁用整条前面层的规则,写
disabled = true(字段保留,整条不生效)。
# 用户层:只记相对系统层的差异
[[apps]]
process = "Weixin.exe"
initial_mode = "english" # 新增一项,系统层的 caret_use_top 等照旧继承
unset = ["stale_probe_guard"] # 取消系统层设的这一项
[[apps]]
process = "Dota2.exe"
disabled = true # 整条不生效与系统层一模一样的字段写进用户层会被当成冗余自动丢掉,用户层文件里始终只有真正的差异。设置端应用兼容窗口与右键菜单写的都是这套语义,所以你在菜单里给一个有出厂规则的程序改任何一项,都不会再冲掉它的其它出厂字段。
0.123 及更早的版本是「整条覆盖」
旧版本里同名进程的用户规则整条替换系统层那条(只有少数宿主修正字段会继承)。如果你有手写的旧用户层文件,升级后语义变成叠加:原来靠「整条覆盖」抹掉的出厂字段现在会回来。要抹掉就显式写 unset。
用户层文件由菜单托管,手写的注释不会保留
每次通过右键菜单切换开关,用户层 compat.toml 都会被整份重写(TOML 序列化不保留注释),你手写的注释与排版会丢失。需要长期留存的说明请写在系统层那份——那份程序不会改写。
好消息是容错做得很足:单个字段的值或类型写错(拼错的取值、password_force_english = "yes"、status_x = "120"、不存在的方案……),只让那一个字段退化为没写——跟随全局、不干预或继承低层,同一条规则的其它字段、文件里的其它规则照常生效,日志里会留一条警告。
只有 TOML 语法本身写坏(引号或括号不配对之类)才会让整份用户层文件读不出来:此时按空规则集处理(系统层照常生效),而下一次通过菜单修改时会以空文件重建——宁可重建也不把菜单卡死。
改完手工编辑的规则后,用功能主菜单的重载配置即可生效——host_render 除外,它需要重启服务。
字段清单
[[apps]]
process = "Weixin.exe" # 进程名(不区分大小写)
comment = "微信 - Qt WebView 输入框 caret height 不稳定,使用 rect.top 定位"
caret_use_top = true| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
process | 字符串 | —— | 进程名,不区分大小写,如 Notepad.exe |
comment | 字符串 | "" | 备注,仅供阅读,程序不使用 |
unset 0.124 新增 | 字符串数组 | [] | 用户层专用:取消前面层设的字段(回到「跟随全局」),如 unset = ["caret_use_top"],见合并语义 |
disabled 0.124 新增 | 布尔 | false | 用户层专用:true 禁用前面层的整条规则,见合并语义 |
caret_use_top | 布尔 | false | 用 caret rect 的 top 而非 bottom 定位候选窗 |
first_show_mode | 枚举 | 不写 = 跟随全局 | 候选窗首显策略,见下文 |
initial_mode | 枚举 | 不写 = 不干预 | 进入该应用时的初始中英状态:english / chinese |
initial_punct | 枚举 | 不写 = 不干预 | 进入该应用时的初始中英标点,取值同上 |
host_render | 布尔 | false | 开启宿主渲染模式(加入白名单),见下文 |
auto_pair | 布尔 | 不写 = 跟随全局 | 本应用是否启用符号自动配对。给表格类宿主(Excel / WPS 表格)用:它们在「输入态」下把方向键解释成「确认单元格并移动」,配对后光标退不回两个符号之间 |
smart_method | 枚举 | 不写 = 跟随全局 | 本应用的智能符号替换方案:delete_replace / hold_composition。终端类宿主(Tabby)用后者——它全程不做删改 |
caret_offset_x / caret_offset_y | 整数(dp) | 0 | 光标坐标的系统性偏移校正,正 = 右 / 下。单位是 dp 不是物理像素,同一份数值在不同缩放的屏幕上观感一致 |
ignore_host_ime_close 0.121 新增 | 布尔 | 不写 = 采纳宿主请求 | 忽略本应用「关闭输入法」的请求,见下文 |
candidate_position_mode 0.121 新增 | 枚举 | 不写 = 跟随全局 | 本应用的候选窗定位方式:follow_caret / fixed,见下文 |
candidate_x / candidate_y 0.121 新增 | 整数(物理像素) | 0 | fixed 时本应用的候选窗位置。每个应用各记一份,(0,0) = 尚未设定 |
composition_start_pair_guard 0.121 新增 | 布尔 | 不写 = 继承出厂值 | 把「组合起点降级帧 + 紧随的 selection 帧」识别为同一次采样,避免把「组合起点 → 当前插入点」的跨度当成锚点错误。只给已实测存在该交替序列的宿主开(QQNT / VS Code / 飞书已内置) |
pin_anchor_when_start_drifts 0.121 新增 | 布尔 | false | 宿主报的组合起点跟着插入点漂移时,把候选窗锚点钉在首帧起点,见下文 |
host_drawn_candidates | 布尔 | 不写 = 自动判定 | 写 false 可强制弹出清风自己的候选框,见下文 |
schema 0.123 新增 | 字符串 | 不写 = 跟随全局 | 本应用使用的输入方案:方案 ID 表示固定用它,"@remember" 表示记住本应用上次用的方案,见下文 |
password_force_english 0.123 新增 | 布尔 | 不写 = 跟随全局 | 本应用的密码框是否强制英文,覆盖全局的 input.password_force_english,见下文 |
status_position_mode 0.123 新增 | 枚举 | 不写 = 跟随全局 | 本应用的状态气泡定位方式,取值同全局 ui.status.position_mode,见下文 |
status_x / status_y 0.123 新增 | 整数(物理像素) | 0 | status_position_mode = "fixed" 时本应用的气泡位置。拖动气泡自动记录,(0,0) = 尚未设定 |
status_fallback_position 0.123 新增 | 枚举 | 不写 = 跟随全局 | 本应用报不出光标位置时气泡落在哪,取值同全局 ui.status.fallback_position,见下文 |
initial_mode / initial_punct 还接受简写 en / zh。写了个认不出的值等于没写(不干预)——「拼错了」与「想要英文」是两回事,后者必须显式写对才成立。
first_show_mode 同理:认不出的值等于没写,跟随全局的 ui.candidate.first_show_mode(出厂 fast)。其它枚举字段也都是这个规矩——拼错的值不会被悄悄当成对该应用的显式设置。
内置规则
随程序分发的 data\compat.toml 已经为若干宿主预置了规则,装完即生效,不必自己写:
| 进程 | 规则 | 为什么 |
|---|---|---|
Weixin.exe | caret_use_top + stale_probe_guard | 微信的 Qt WebView 输入框,GetTextExt 返回的 height 在 1↔20px 间跳变,导致 bottom 漂移约 20px,但 top 始终稳定;组合期间上报的矩形还会停在上一次组合的位置 |
SearchHost.exe / searchapp.exe / startmenuexperiencehost.exe | host_render = true | Win11 / Win10 的开始菜单与任务栏搜索框,候选窗盖不过它们的 Band 层级 |
EXCEL.EXE / et.exe | first_show_mode = "wait" | 进单元格时先在编辑栏建临时编辑上下文、约 0.5s 后才切到单元格,fast 档的试探坐标会抢在切换前把候选窗显示在编辑栏 |
QQ.exe / Code.exe / Feishu.exe 0.121 新增 | composition_start_pair_guard = true | 长组合时交替上报组合起点降级帧与当前 selection,跨度不是锚点错误 |
wps.exe / WINWORD.EXE 0.121 新增 | pin_anchor_when_start_drifts = true | 长组合内组合起点每帧跟着插入点右移,大偏移逃生阀被这份数据一路骗着重锁 |
caret_use_top
候选窗默认贴着光标矩形的底边(bottom)显示。某些 WebView 类宿主报告的光标高度不稳定,bottom 就会跟着上下跳,候选窗随之抖动。改用顶边(top)定位可以绕开——top 通常是稳定的。
如果你遇到某个程序里候选窗位置忽上忽下、或总是偏低约一行的高度,可以试试给它加这条规则。
候选窗首显策略
这是三者里最微妙的一项。
背景:宿主插入组合内容后要 reflow 才能给出正确的光标坐标,而 reflow 需要时间——实测首帧 GetTextExt 到稳定值要 85~95 ms。这三档是「快」与「准」之间的取舍。
| 档位 | 菜单里的叫法 | 行为 |
|---|---|---|
fast | 快速显示(默认) | 仍等坐标,但等到「可信」即放行 |
wait | 等待精确坐标(较慢) | 等宿主 reflow 后的权威坐标才显示 |
instant | 立即显示(最快,可能抖动) | 完全不等,首帧沿用上一次的坐标 |
fast(默认档)
DLL 在首帧 reflow 期间连发几条试探坐标,取第一条与上一轮权威坐标不同的采用——宿主未 reflow 时返回的正是上一轮那个位置,一旦变化即说明新位置已就绪。
连续快速输入时更进一步:直接采信首条(连打不重排,跟手比精确更重要)。
焦点切换或用鼠标移动光标之后,手里那份坐标属于别处,此时自动退回去等真坐标(首帧信任门),不会先错位再跳。
实测:常规连打首帧中位 7 ms,焦点后首帧中位 105 ms 且位置正确;EverEdit 约 3 ms、WPS 约 11 ms 出候选窗。
wait
最准,代价是 85~95 ms 首显延迟——快速连打时候选窗只来得及显示几毫秒,观感「迟钝」。
0.113 起 wait 不再是默认档
它的「准」有很大一部分是碰巧的:Excel 那类慢宿主上它靠一个 600 ms 的延长窗口兜住,宿主再慢 50 ms 一样会错位(实测 Excel 需要 808 ms 的那次它就没兜住)。真正解决错位的是首帧信任门,而那条判据 fast 同样享有。
现在 wait 的定位是兜底:留给 fast 的试探判据失灵的宿主。
instant
最快,但只要光标位置变动过(手动移动、换行、文本重排)那个位置就是错的,会先错位显示再跳回。
三档为什么是互斥枚举而不是几个开关
布尔开关可以同时打开。实测就因此出过一次「fast 配了却从未生效」——instant 优先、抢先放行,fast 的判据根本没机会跑,日志里 630 条试探坐标一条没被消费。互斥语义必须由类型保证。
三个相关的内部选项
它们在 config.toml 的 [ui.candidate] 下,不进设置页,一般不需要动:
| 键 | 默认 | 说明 |
|---|---|---|
first_show_settle_ratio | 0.8 | 首显用过非权威坐标时,权威坐标与它相差在「行高 × 本值」以内就不再校正——校正动作本身才是抖动的观感来源 |
fast_typing_window_ms | 100 | 两次按键间隔小于此值即视为连续输入,fast 档直接采信首条试探坐标。0 = 关闭该快路径 |
fast_first_show_fallback_ms | 25 | fast 档等不到坐标时的兜底超时。不发 OnLayoutChange 的宿主(如 Word)靠它退化成 instant 而非干等 |
应用独立的初始输入状态
initial_mode 与 initial_punct 让特定应用在获得焦点时自动切到指定状态,适合文件搜索框、终端、代码编辑器这类主要输入英文的场景。
[[apps]]
process = "Everything.exe"
comment = "文件搜索框,默认英文"
initial_mode = "english"最快的设置方式是不改文件:在目标应用里打开功能主菜单 → 应用独立配置,选「初始输入模式 → 英文」。选「跟随全局」即清除该维度的规则。
这是「初始值」而不是「锁定」
initial_punct 压过 follow_mode
显式写的 initial_punct 优先于 config.toml 里 input.punct.follow_mode 的推导——否则你配了它却恰好开着「标点随中英文切换」时会完全无效且没有任何痕迹。
忽略宿主关闭输入法 0.121 新增
有些应用「操作几下就自动变成英文」,回到输入框也不恢复。根因不在输入法:宿主自己在关全局中英状态。WinForms 的 ImeMode.Disable 与 WPF 的 IsInputMethodEnabled=False 内部都是 ImmSetOpenStatus(false),关的是全局开关而不是「本控件不接受输入」,于是点一次按钮就被切成英文。
[[apps]]
process = "SomeDotNetApp.exe"
comment = "焦点落到按钮上就把 IME 关掉"
ignore_host_ime_close = true开启后这类请求不再采纳,中文状态保持不变。只有「宿主主动要关、且你没有按住 Ctrl」这一种情形会被拒绝,所以 Ctrl+Space 一律放行,你仍然可以正常切中英。
菜单入口:在目标应用里打开功能主菜单 → 应用独立配置。
不做成全局开关
「宿主要关输入法」在绝大多数场景下是应当采纳的正当请求(只读控件、真正禁用输入法的窗口)。一律忽略会让那些场景反过来出问题,所以必须逐应用开启。
应用独立的候选窗定位 0.121 新增
给光标坐标本就报不准的宿主(自绘控件、坐标系不对、多进程窗口偏移):把定位方式设成 fixed,候选窗不再跟随光标,位置由你拖一次候选窗设定,此后固定在那里。
[[apps]]
process = "SomeApp.exe"
candidate_position_mode = "fixed"
candidate_x = 800
candidate_y = 1200坐标每个应用各记一份,互不影响;(0, 0) 表示尚未设定,首次显示落在屏幕默认位置,拖动一次即记住。定位方式在功能主菜单 → 应用独立配置里选,坐标不进菜单——拖候选窗就是设置动作本身。
应用独立的方案 0.123 新增
让某个程序固定用某个方案,或记住它自己上次用的方案。例如写代码时总用拼音、其余场合用五笔;聊天软件里用什么就记住什么:
[[apps]]
process = "Code.exe"
schema = "pinyin" # 固定:每次切进来都用 pinyin 方案
[[apps]]
process = "Weixin.exe"
schema = "@remember" # 记住:恢复在这个程序里上次用的方案| 写法 | 效果 |
|---|---|
| 不写 | 跟随全局,与其它程序共用同一个当前方案(原来的行为) |
| 方案 ID | 焦点每次从别的程序切进来时切到它。ID 即方案文件名前缀,必须在已启用的方案(schema.available)里 |
"@remember" | 切进来时恢复本程序上次用的方案;从没用过时用全局方案 |
- 手动切方案只影响这个程序。 配了
schema的程序里,用菜单、快捷键或工具栏切方案,都不会改全局方案,也不写config.toml,其它程序不受影响。固定方案的程序里手切是临时的,离开再回来恢复成规则里的方案;@remember的程序则记下手切的结果,存在state.toml,重启后仍然有效。没配schema的程序手切方案,行为和以前一样。 - 只在跨程序切入时套用,同一程序里换输入框不重新切,尊重你在程序里的手切。
- 不存在或未启用的方案等于没写。 写了不在
schema.available里的 ID,这条按跟随全局处理并在日志里警告;以后启用了该方案,规则自动生效。@remember记下的方案被停用时同理,当作没记过。以@开头的值只认@remember,别的一律当没写。 - 不会卡住输入。 刚开机方案还没加载完时,先保持当前方案,后台加载好了(且焦点还在这个程序里)再切过去。
- 自动切换只换方案,不动中英状态、不弹状态气泡;中英状态照旧由
initial_mode管,两者可以叠加。
菜单入口:在目标程序里打开功能主菜单 → 应用独立配置 → 方案。
密码框强制英文按应用 0.123 新增
全局的密码框强制英文默认开启。有的程序会把普通输入框误报成密码框,结果那里始终打不出中文——为此把全局关掉,真正的密码框也就不保护了。现在可以只给那一个程序关掉:
[[apps]]
process = "SomeApp.exe"
comment = "搜索框被误报成密码框"
password_force_english = false写 true 则反过来:全局关掉时只给这个程序开。不写 = 跟随全局 input.password_force_english。
菜单入口:在目标程序里打开功能主菜单 → 应用独立配置 → 密码框强制英文。
状态提示位置 0.123 新增
Illustrator 这类设计软件报不出光标位置,状态气泡跟随光标时只能沿用上一次拿到的位置,常常停在刚才别的程序里。可以给它单独配一个位置:
[[apps]]
process = "Illustrator.exe"
status_position_mode = "window_bottom_left" # 这个程序里气泡始终在窗口左下角或者平时仍跟随光标,只在这一次拿不到光标时才退到锚点:
[[apps]]
process = "Illustrator.exe"
status_fallback_position = "screen_center"| 字段 | 取值 |
|---|---|
status_position_mode | follow_caret / fixed / 7 个锚点(screen_center、screen_top_left、screen_top_right、screen_bottom_left、screen_bottom_right、window_center、window_bottom_left),含义见配置参考 · 状态气泡 |
status_x / status_y | fixed 时本程序自己的位置,拖一次气泡自动记下 |
status_fallback_position | last / hide / 上面 7 个锚点。只在定位方式为 follow_caret 时有用 |
- 定位方式与坐标从同一处取:规则写了
status_position_mode就用规则自己的status_x/y,没写才整套用全局的。兜底位置单独回落,没写就跟随全局。 - 规则写了定位方式时,在这个程序里拖动气泡、或右键气泡选「固定位置」「恢复默认位置」,都写进这条规则而不是全局设置。
- 兜底选了锚点后,「焦点切换时显示」在这类程序里等不到光标位置时也会在锚点上弹出(约 0.15 秒后),而不是干脆不显示。
- macOS 上拿不到宿主窗口的边框,
window_center/window_bottom_left分别按screen_center/screen_bottom_left处理。
菜单入口:功能主菜单 → 应用独立配置 → 状态提示位置。
钉住组合起点 0.121 新增
WPS 文字与 Word 在一次长组合里,每一帧都把组合起点跟着插入点右移。候选窗的大偏移逃生阀被这份漂移数据一路骗着重锁锚点(实测从真实起点 1830 推到 2591),而删除是逐字的、每步够不到阈值,锚点就永久卡住——表现为「换行后候选窗回不去、删除也回不来」。
pin_anchor_when_start_drifts = true 让锚点钉在首帧起点,首帧的组合起点是对的。
必须逐宿主开启,不要试图改成全局
这一条上不同宿主的期望相反,而它们报出来的数据完全一样:WPS 文字的一个长组合要钉住;Excel / WPS 表格每输入一个字换一次单元格,候选窗本就该跟着走。光看数据分不出这两种,所以只能逐个应用开——开成全局会弄坏 Excel 的跟随。
对于能给出组合范围矩形的宿主(协议 v3),锚点直接取矩形的左下角,一个公式同时覆盖单行与跨行,本开关和另外两个「猜」的机制都自动让位。拿不到矩形的路径(旧版 DLL、macOS、宿主正在重排期间)仍然走上面这套。
游戏自己画候选框时
有些程序——尤其是较老的游戏——会自己画候选框,不需要清风再画一个。清风会自动识别这类程序并收起自己的候选框,把位置交给它们:游戏画的候选框贴着它自己的聊天输入框,而全屏游戏通常根本不向输入法报告光标位置,清风猜出来的位置往往是错的(甚至跑到另一个显示器上)。
识别是自动的,正常情况下什么都不用配。
如果某个程序里候选框彻底不见了
识别依据是「这个程序把候选内容取走了」——取走通常意味着它要自己画,但也有例外(例如读屏软件同样会取走候选内容来朗读)。万一判断错了,现象是两个候选框都没有、完全没法选字。
给这个程序写一行就能恢复:
[[apps]]
process = "某程序.exe"
host_drawn_candidates = false如果是所有程序的候选框都不见了(多半是某个常驻工具在读候选内容),把进程名写成 "*" 可以一次全部关掉:
[[apps]]
process = "*"
host_drawn_candidates = false"*" 只对这一个字段生效,不会把规则里的其它字段也套到所有程序上;某个程序自己的规则优先于 "*"。写 true 和不写是一样的(都是自动判定),这个字段只用来关。
反过来,如果程序是按 TSF 规范明确声明由自己画候选(多数现代全屏游戏引擎),这几行管不着它——它已经说了不要输入法的界面,再画一个就是两头画。
宿主渲染模式 host_render 0.113 新增
少数宿主运行在受限容器中,或其窗口层级(Band)盖过一切普通窗口,输入法自绘的候选窗被压在下面看不见——Win11 开始菜单 / 任务栏搜索的 SearchHost.exe 就是这样。
host_render = true 让候选窗改由服务进程渲染成位图,经共享内存交给宿主进程内的输入法 DLL 上屏,绕开普通窗口盖不过的 Band 层级。
普通应用不要开
它多绕一层渲染路径,出问题时本地窗口路径更好排查。三个系统搜索框已内置为预置条目,无需自行添加。
host_render 手改后需重启输入法服务才生效——「重载配置」只刷新那些能即时套用的规则,不重建渲染通道。
上屏换行的字符样式 0.122 新增
短语、词条、命令直通的产物里可以带换行。富文本程序的段落边界是 CR,LF 落进去不构成换行;而编辑器、终端、浏览器输入框是「写进去什么就存什么」。全局出厂值是 keep(原样透传,见上屏换行的字符样式),需要转换的程序在这里逐个指定:
[[commit_newline]]
process = "WINWORD.EXE"
style = "cr"| 字段 | 说明 |
|---|---|
process | 进程名,大小写不敏感 |
style | keep(原样透传)/ cr / lf / crlf |
comment | 备注,不参与匹配 |
出厂名单只有 WINWORD.EXE。同一次实测里记事本与 WPS 文字都能正常分段,所以 WPS 刻意不在名单上——按「富文本模型」推理会想当然地把它加进来,实测说的是反话。
这是与 [[apps]] 并列的另一个段,不是 apps 的字段
两段各管各的:[[commit_newline]] 在设置端也是「应用兼容性与独立配置」窗口里独立的一个分类。0.123 及更早版本同名进程是整条覆盖,当时把它做成 [[apps]] 的字段,你给 WINWORD.EXE 写任何一条自己的规则都会让出厂那条 cr 消失,所以拆成了独立段;现在合并语义是字段级叠加,分开放仍然更清晰,互不影响。
排查:某个程序里输入法没反应
打开功能主菜单 → 高级 → 输入诊断 HUD,屏幕上会出现一个置顶小浮窗,实时显示当前焦点应用的输入状态与禁用原因(密码框抑制、应用禁用输入等)。
浮窗可拖动,双击可复制内容,便于反馈问题时附上诊断信息。排查完在同一菜单取消勾选即可关闭。
常见原因:
| 现象 | 原因 |
|---|---|
| 密码框里打不出中文 | 密码框强制英文(默认开启,有意为之) |
| 部分网络游戏里完全没反应 | 游戏不加载未签名、或不在系统目录下的输入法 DLL。0.121 起安装包已把 TSF 组件装进系统目录并做代码签名 0.121 新增,CS2 一类开启 Trusted Mode 的游戏据此放行 |
| Dota 2 里打得出字但看不到候选 | 游戏按输入法名称查一张内置白名单,见高级设置 · 游戏兼容 0.121 新增 |
| 全屏游戏里候选窗盖不住画面 | 独占全屏下所有浮窗都被抑制 0.121 新增,改由游戏自己绘制候选(若它支持);无边框全屏不受影响 |
| 开始菜单里候选窗鼠标点不动 | 系统的 UIAccess 权限限制,见常见问题 |
相关阅读
- 菜单功能 · 应用独立配置 —— 不改文件的设置方式
- 外观设置 —— 候选窗的定位方式与布局
- 配置文件与数据目录 ——
compat.toml在目录结构里的位置
对这篇文档有疑问,或发现内容有误?
欢迎到文档仓库提 issue,写明问题时附上本页链接即可。