輸入法在選單裡變灰、選不到

macOS 防側錄模式(Secure Input)卡住時,所有第三方輸入法都會被停用。怎麼認、怎麼解、怎麼避免。

如果晶晶輸入法在輸入來源選單裡是灰色的、點不動, 但繁體注音ABC 都正常,那不是晶晶輸入法壞掉 —— 是 macOS 的防側錄機制 Secure Input 被某個程式卡住了。

怎麼確認是這個問題

三個特徵同時出現,就幾乎可以確定:

  • 晶晶輸入法在選單裡是灰的,點了沒反應
  • 繁體注音、ABC 都正常 —— Apple 內建的輸入法都不受影響, 有裝日文、拼音等其他內建輸入法的話也一樣正常
  • 重新安裝、重新加入輸入法都沒有用

最後一點是最好的判準。如果重裝能修好,那就是別的問題; 重裝完全無效,反而是這個問題的典型特徵。

同一時間如果你也發現 Alfred、Raycast、TextExpander 之類的工具失效, 那更確定了 —— 它們跟輸入法一樣要接收全域鍵盤輸入,會被一起停用。

為什麼會這樣

macOS 有個保護機制叫 Secure Input(防側錄輸入)。 任何程式在你點進密碼欄位時都可以啟動它,鎖定畫面也會用。 它一開著,系統就停用所有第三方輸入法, 確保你打的密碼不會被任何第三方程式看到。

程式本來應該在你離開密碼欄位時關掉它。問題出在有些程式忘了關, 有些關到一半就結束了,旗標就留在系統裡沒有釋放。 這時候輸入法就一直是灰的。

晶晶輸入法無法自行解除這個狀態。 鎖不是我們上的,而能夠繞過 Secure Input 的輸入法,本身就是一個側錄器 —— 這個邊界是 macOS 刻意設計的,所有第三方輸入法一視同仁。 我們能做的是告訴你是誰卡住的,以及怎麼解開。

重要:系統回報的程式名稱可能是錯的。 macOS 有時會把持有者記成 loginwindow 或其他無辜的程式, 真正的來源另有其人。所以如果你照著回報的名字去關那個程式卻沒有效, 不代表你判斷錯了 —— 往下看第一項。

解法(依序試)

1. 先查密碼管理程式(尤其是 1Password)

1Password 有一個官方已確認的問題,會在某些情況下錯誤地啟用 Secure Input 而不釋放 —— 最典型的是 Mac 睡眠或鎖定時 1Password 自動上鎖, 醒來後那個解鎖欄位仍然抓著不放。1Password 官方的說法是: 「開發團隊正在追蹤 1Password for Mac 在某些情況下會錯誤啟用 Secure Input 的問題。」

這個問題最難查的地方,是系統會把它記在別的程式頭上。 發生時 ioreg 常常回報成 loginwindow 或某個剛好在前景的程式 (例如瀏覽器),於是你去關那個無辜的程式,當然沒有效。

解法(實測有效,不用登出、不用重開機):

  1. 點選單列的 1Password 圖示 → 「結束 1Password」只關掉視窗沒有用 —— 1Password 會繼續常駐在選單列, 必須完全退出)
  2. 等幾秒,輸入法就會亮起來,可以正常使用
  3. 之後只要不重新開啟 1Password,就不會再變灰

這是實際遇到的使用者一路排查後確認的結果 —— 過程中 Chrome、鎖定畫面、 重新登入都被排除了,唯一有效的就是完全退出 1Password。

要繼續使用 1Password 的話,請更新到最新版(官方已在測試修正)。 其他密碼管理程式(LastPass、Proton Pass、Bitwarden、Enpass)也可能有類似狀況, 處理方式相同。

2. 找找看有沒有在等你輸入密碼的視窗

最常見、也最容易忽略的原因:某個地方正停在密碼欄位上等你,而你沒注意到。 檢查有沒有躲在背景的密碼提示、通行密鑰(passkey)確認、驗證碼輸入框, 或是密碼管理程式的主密碼解鎖畫面。把它填完或關掉就解決了。

常見的來源:

  • 瀏覽器停在某個登入頁面的密碼欄位
  • 系統跳出的鑰匙圈存取、Apple ID 密碼要求

3. 檢查終端機的「安全鍵盤輸入」

終端機(Terminal.app)選單有一個 「終端機 → 安全鍵盤輸入」 選項。 這是常駐開關,不是暫時狀態 —— 一旦打開, 只要終端機還開著就一直啟用 Secure Input,很多人開了之後完全忘記。

打開終端機,看選單裡那一項有沒有打勾。有的話取消勾選,輸入法立刻恢復。

4. 鎖定螢幕再解鎖

如果找不到是哪個程式,這招通常最快,而且不用關掉任何工作:

  1. Ctrl + Cmd + Q 鎖定螢幕
  2. 等 3 到 5 秒 —— 這步別省,要讓系統完整進入鎖定狀態
  3. 解鎖。如果可以,用輸入密碼的方式解鎖,先不要用 Touch ID

解鎖會讓系統重新走一次密碼欄位的完整流程,通常會把殘留的旗標清掉。

5. 讓 Mac 完整睡眠一次

鎖定沒效的話,按電源鍵或闔上螢幕讓 Mac 進入睡眠, 等 5 秒左右再喚醒解鎖。這會重置系統底層的視窗伺服器狀態。

6. 登出再登入

前面都無效才需要這步,但它一定有效 —— 整個登入階段會重建,所有殘留的旗標都會歸零。

如果連登出都無效(很罕見),改成重新開機, 並在關機確認視窗把「重新登入時重新打開視窗」取消勾選。 否則造成問題的程式會跟著一起回來,馬上又把鎖抓走。

反覆發生時的預防設定

如果一天要遇到好幾次,通常是某個系統功能或常駐程式在反覆搶奪安全焦點。 以下兩項是最常見的成因,關掉不影響一般使用:

關閉「自動切換到文件的輸入方式」

系統設定 → 鍵盤 → 文字輸入 → 按「編輯」, 把「自動切換到文件的輸入方式」關掉。

這個功能會在密碼視窗跳出時自動切換輸入來源, 而密碼欄位同時正在啟動 Secure Input —— 兩件事撞在一起, 很容易讓系統的鎖定畫面程式(loginwindow)卡在中間狀態沒有釋放。 對輸入法使用者來說,這一項的嫌疑最大。

隱藏「快速使用者切換」

如果你沒有在用多個使用者帳號,到系統設定 → 控制中心 把「快速使用者切換」設為不顯示。這個常駐服務也是 loginwindow 忘記釋放的常見來源。

留意會全域監聽鍵盤的常駐工具

語音輸入工具、快捷鍵啟動器、部分滑鼠與鍵盤驅動程式(例如 Logi Options+) 會在系統喚醒時搶奪輸入焦點。如果上面都試過還是反覆發生, 把這類工具暫時完全結束,觀察半天看看。

晶晶輸入法會主動告訴你

輸入法變灰超過一分鐘時,晶晶輸入法會跳出提示, 指名是哪個程式卡住的,並針對當下的狀況給出對應的解法。 你不需要自己查。

三種狀況的提示內容不同:

  • 某個程式正持有 —— 告訴你系統回報的程式名稱, 並提醒你這個名字有可能是錯的
  • 程式已經結束但旗標沒放 —— 這種情況關掉任何程式都沒用,直接請你登出再登入
  • 回報成鎖定畫面 —— 提示會先請你檢查密碼管理程式, 因為這個回報結果通常不能照字面相信(見上面第 1 項)

這個提示可以在 偏好設定進階 → 防側錄模式 關閉。

要回報問題時,請先到偏好設定 → 進階 → 產生系統報告。 報告會記錄當下的 Secure Input 狀態與持有者,附上它可以省下大量來回確認。 這個狀態在「活動監視器」裡看不到,而且一登出就消失 —— 而登出正是大家會第一個嘗試的動作。

自己查是誰卡住的

想自己確認的話,打開終端機貼上這行:

ioreg -l -d 1 -k IOConsoleUsers | tr ',' '\n' | grep -i SecureInputPID

沒有任何輸出,代表目前沒有人持有,問題出在別的地方。 有輸出的話會看到類似 "kCGSSessionSecureInputPID"=1234, 那個數字就是持有者的行程編號。再用這行查是哪個程式:

ps -p 1234 -o pid=,comm=

1234 換成上面看到的數字。如果這行印不出東西, 代表那個程式已經結束了、旗標卻留著 —— 這種情況只能登出再登入。

再提醒一次:查到的名字不一定是真正的來源。 查出 loginwindow 或某個瀏覽器時尤其要留意, 先回頭檢查密碼管理程式再說。