-
Notifications
You must be signed in to change notification settings - Fork 0
Home
繁體中文 · English · 简体中文 · 日本語 · 한국어
Windows 小工具,控制輸入法在程式之間的行為:切換視窗時延續你最後選擇的輸入模式(中文/英數),並可把指定程式綁定到固定的輸入語言 —— 連讀不到執行檔的程式也行,例如有防作弊的全螢幕遊戲。
本工具還在開發中,沒有程式碼簽章憑證。因此 Windows Defender 可能把它判定為病毒並直接刪除,已知的偵測名稱是
Behavior:Win32/Persistence.A!ml。那個偵測針對的是「開機時自動啟動」所建立的登入工作 —— 任何提供開機自動啟動的程式都必須做同樣的事,而未簽章的程式做這件事就會被行為監控盯上。已向微軟提交誤判回報,但沒有人能保證防毒軟體的判斷。
原始碼、建置流程與發佈產物全部公開,由 GitHub Actions 從對應的 tag 建置,你可以自行檢視或重建。在此前提下,是否要繼續使用請自行決定。
遇到刪除時:改用免安裝的
zip,或不勾選「開機時自動啟動」。程式碼簽章: 釋出檔未簽章。改以建置來源證明(build provenance)佐證 —— 每個釋出產物都由 GitHub Actions 從對應 tag 建置並附上證明,可用
gh attestation verify驗證。
到 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 中控制中文輸入法 —— 有防作弊的遊戲看不到執行檔,要用視窗類別綁定。同樣步驟適用於其他這類程式。
把滑鼠停在圖示上,不要點。停留就會顯示狀態;點下去會讓你想查的程式失去焦點,看到的就不是它了。

| 行 | 意思 |
|---|---|
| 當前程式 | 目前在最前面的程式 |
| 綁定語言 | 規則指定給它的語言 |
| 實際語言 | 它現在真正在用的語言 |
| 上次切換嘗試 | 有沒有成功 |
綁定語言與實際語言一致就代表正常。若最後多一行「一般權限 - 看不到提權的程式」,代表本工具沒有以管理員身分執行。
左鍵雙擊圖示可看到更完整的狀態,包括開機自動啟動目前用的是哪一種機制。
為什麼切換到新版記事本等視窗時,輸入模式沒有維持? 新版記事本等現代 / WinUI 封裝程式的真正輸入欄位在焦點子視窗,受 Windows UIPI 機制保護:
- 解法(推薦):在托盤選單點擊「啟用現代視窗 (WinUI) 支援…」(通過一次 UAC 啟動背景輔助服務),即可由 Helper 跨越 UIPI 保護維持輸入模式。Microsoft Store 商店版與一般桌面版皆支援!
- 桌面版亦可直接提權:點選托盤選單「以系統管理員身分重新啟動」。
「當前程式」顯示 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
简体中文
日本語
한국어