-
Notifications
You must be signed in to change notification settings - Fork 0
Home Simplified
繁體中文 · English · 简体中文 · 日本語 · 한국어
Windows 小工具,控制输入法在程序之间的行为:切换窗口时延续你最后选择的输入模式(中文/英数),并可把指定程序绑定到固定的输入语言 —— 连读不到可执行文件的程序也行,例如有反作弊的全屏游戏。
本工具还在开发中,没有代码签名证书。因此 Windows Defender 可能把它判定为病毒并直接删除,已知的检测名称是
Behavior:Win32/Persistence.A!ml。那个检测针对的是「开机时自动启动」所建立的登录任务 —— 任何提供开机自动启动的程序都必须做同样的事,而未签名的程序做这件事就会被行为监控盯上。已向微软提交误判报告,但没有人能保证杀毒软件的判断。
源代码、构建流程与发布产物全部公开,由 GitHub Actions 从对应的 tag 构建,你可以自行查看或重建。在此前提下,是否要继续使用请自行决定。
遇到删除时:改用免安装的
zip,或不勾选「开机时自动启动」。代码签名: 本项目使用 SignPath Foundation 提供的免费代码签名(审核中)。生效前发布文件未签名,见签名政策。
到 Releases 下载三种之一:
| 文件 | 说明 |
|---|---|
...-setup-admin.exe |
需要管理员权限。有反作弊的游戏需要这个版本 |
...-setup-user.exe |
不需要管理员权限,但无法控制提权的程序 |
...-x64.zip |
免安装,解压即用 |
安装时勾选 开机时自动启动。装好就会运行,不需要其他设置。
程序常驻在通知区域 —— 屏幕右下角、时钟左边。Windows 11 默认把新图标收起来,要先点时钟旁的 ⌃ 才看得到。图标是蓝色圆角方块里一个白色的「中」。
两种常见的拦阻:
- 蓝色的「Windows 已保护你的电脑」→ 点「更多信息 → 仍要运行」。文件未签名,这是信誉警告而非病毒检测。
-
杀毒软件把安装文件删掉 → 未签名的安装文件常被启发式误判。改用免安装的
zip,功能完全相同。
Windows 把输入法状态绑在每个线程上。切到另一个窗口时,中/英转换模式会回到该输入法的默认值 —— 对中文键盘来说就是中文。所以你刚按 Shift 切成英数,换个窗口又打出中文。
「设置 → 时间和语言 → 输入 → 高级键盘设置」里的**「允许我为每个应用程序窗口使用不同的输入法」解决不了这件事**。那个设置管的是「哪一个输入法在作用」,不管「该输入法处于中文还是英数」—— 关掉它之后,切换窗口照样切回中文。
没有任何 Windows 设置能处理转换模式 —— 这是这个工具的第一个目的:让你选的中/英模式跟着你走。
第二个目的是把特定程序固定在某个输入语言,包含连设置都碰不到的那类 —— 使用 raw input 的全屏游戏直接读键盘设备,完全不参与输入法的状态管理,只能从外部处理。Helldivers 2 就是这种。
在 A 窗口用中文打字,切到 B 窗口时中文模式会被还原。你在 B 按 Shift 改成英数,切到 C 窗口还原的就是英数 —— 跟着你最近一次的手动切换走。不想要就在右键菜单取消勾选。
把特定程序固定在某个输入语言:终端永远英文、Word 永远中文。右键菜单 → 程序绑定输入语言…
- 浏览 选出可执行文件 → 只对那个位置的程序生效
- 只填文件名(
notepad.exe)→ 不管装在哪都适用 - 用刚才的程序 → 自动填入你开这个窗口之前用的程序
- 用窗口类别 → 给读不到可执行文件的程序用,见下面的教程
-
通配符(高级) → 路径带版本号、或窗口类别有生成后缀时,直接在字段输入
glob:*\game.exe(比对路径)或class-glob:name_*(比对窗口类别),支持*(任意长度,含路径分隔符)与?(单一字符)。精确规则一律优先于通配符。
托盘菜单的在光标旁显示输入指示会在文本光标旁显示一个小徽章,告诉你当前会打出什么:中/あ/한(该语言的中文/native 模式)、A(输入法切到英数)、或 EN 之类的语言代码。设置会被记住。
徽章会跟着光标、避开自己的窗口。在浏览器地址栏这类字段,因为 Chromium 对外报告的光标位置不可靠,徽章会改显示在该行上方、不遮住文字。
- 在 Helldivers 2 中控制中文输入法 —— 有反作弊的游戏看不到可执行文件,要用窗口类别绑定。同样步骤适用于其他这类程序。
把鼠标停在图标上,不要点。停留就会显示状态;点下去会让你想查的程序失去焦点,看到的就不是它了。
| 行 | 意思 |
|---|---|
| 当前程序 | 当前在最前面的程序 |
| 绑定语言 | 规则指定给它的语言 |
| 实际语言 | 它现在真正在用的语言 |
| 上次切换尝试 | 有没有成功 |
绑定语言与实际语言一致就代表正常。若最后多一行「普通权限 - 看不到提权的程序」,代表本工具没有以管理员身份运行。
左键双击图标可看到更完整的状态,包括开机自动启动当前用的是哪一种机制。
「当前程序」显示 class: 开头的东西
正常,不是故障。有些程序(多半是有反作弊的游戏)不允许其他程序读取它的文件位置,这时本工具改用窗口类别辨识它。那串 class:... 就是绑定规则要填的内容。
要不要以管理员身份运行? 要控制本身以管理员身份运行的程序(多数有反作弊的游戏都是)就必须提权 —— Windows 不让权限较低的程序读取权限较高的程序的窗口,连窗口类别都读不到。
开机自动启动一律是普通权限(两个安装版本都一样),因为「开机时自动以管理员身份启动」正是杀毒会判成恶意的持久化行为,本工具刻意不做。要控制提权程序时,用托盘菜单的 以管理员身份重新启动 当场提权(每次开机后、要用之前按一次,过一次 UAC)。
只在意普通程序(跨窗口维持模式、绑定普通程序)的话,完全不需要提权,...-setup-user.exe 就够用。
高级:真的想要提权开机。 本工具刻意不内置(理由如上),但你可以自己用任务计划程序建立一个「登录时、以最高权限」的任务。以管理员打开命令提示符,运行(路径换成实际安装位置;admin 版默认在 C:\Program Files\ImeModePersistence):
schtasks /Create /TN "ImeModePersistence-Elevated" /TR "\"C:\Program Files\ImeModePersistence\ImeModePersistence.exe\"" /SC ONLOGON /RL HIGHEST /F
/RL HIGHEST 让它登录时以最高权限启动且不跳 UAC。建立后,请到托盘菜单把 app 内置的开机时自动启动关掉,否则未提权的 HKCU Run 注册表项会在登录时再开一个未提权实例。移除这个任务:schtasks /Delete /TN "ImeModePersistence-Elevated" /F。
绑定的是语言,不是特定输入法 中文、英文、日文可以分别绑定。但同一个语言装了多个输入法(注音和仓颉都算中文)时无法指定其中某一个,会用第一个已安装的。
有些程序切换后又自己变回去 本工具会重试几次,若该程序坚持用自己的设置就先放手再试 —— 从几秒开始,愈抢愈久,最多半分钟,这是刻意的,避免互相抢。切到别的窗口再切回来会立刻重试。
会不会被反作弊误判? 不修改游戏、不读写它的内存、不注入任何东西、不模拟按键。切换的方式是向窗口投递 Windows 标准的「切换输入语言」通知(跟你按 Win+Space 时系统发出的是同一种,窗口可以自行忽略),行不通时改请 Windows 自己切换。完整清单与判断依据在 Helldivers 2 那页。
界面语言跟着 Windows 的显示语言自动选繁体中文或英文。安装程序的画面只有英文。深色模式只作用在窗口标题栏。
ImeModePersistence · 下載 / Releases · 問題回報 / Issues · README · 設計筆記 / Design notes · MIT
本 Wiki 是操作說明;實作理由與被否決的做法記在設計筆記。發佈的檔案未經簽章。 This wiki is the how-to; implementation reasoning and rejected approaches live in the design notes. Released files are unsigned.
繁體中文
English
简体中文
日本語
한국어