vChewing / vChewing-macOS

威注音輸入法 macOS 版,恐怕是截至目前為止在功能多樣性方面最強的第三方免費 macOS 系統專用輸入法,採純 Swift 語言寫就。威注音的著力點是盡可能在力所能及的範圍內將整個產品的功能做得更好用,搭配特製的簡體中文與繁體中文專用辭庫。是純粹的簡體中文注音輸入法(也內贈原生繁體中文輸入模式),更具諸多威注音特色功能。目前研發管理工作均在 CSDN GitCode 進行。
https://vchewing.github.io/
Other
303 stars 10 forks source link

[功能問題提報]/System/Library/CoreServices/loginwindow.app 似乎常被誤判濫用 Secure Input #508

Closed wayneljw closed 7 months ago

wayneljw commented 9 months ago

請在開新的工單之前閱讀《故障提報與用儀器捉蟲》按照裡面的方法整理相關資訊、且在開工單之後電郵知會我。因各種可能原因,威注音的主程式師可能無法隨時收取 GitHub 與 Gitee 的工單提醒訊息。

摘要 請簡單說明您遇到了什麼問題。這份表格雖然是中文的(我們相信注音輸入法的用戶應該都能看懂中文),但開發團隊可以使用中英文溝通,您也可以使用英文提報問題。

快速分類 請問您遇到的是:

問題發生步驟

  1. 設置螢幕保護程式,例如15分鐘之後進入螢保,或是30分鐘後螢幕進入低電源待機模式
  2. 設置「鎖定螢幕」-「螢幕保護程式啟動或螢幕關閉後需要密碼」:設置時間,例如一小時候。
  3. 電腦放著不動,讓以上兩者接觸發
  4. 喚醒電腦(例如透過移動滑鼠、按鍵盤),押指紋
  5. 出現如下警示畫面,說明 [PID: 376] loginwindow.app (com.apple.loginwindow) → /System/Library/CoreServices/loginwindow.app 濫用Secure Input
  6. 此時輸入法通常仍是處於正常狀態。沒有變灰情形。

預期正常狀況 可以直接開始用電腦,不會有警示畫面。

螢幕截圖或螢幕錄製

image

電腦環境 MacOS Sonoma 14.1.1

其他 與 #496 有關。 上述「問題發生步驟」裡的「5.出現如下警示畫面」。這個畫面並非每次一定發生。 此問題已存在一段時間,似乎是「濫用Secure Input」功能開始投入使用之後,就會發生。但因屬於偶發事件,因此一直沒回報。直到最近的 v3.6.3 Build 3631 仍是偶爾發此問題。

ShikiSuen commented 9 months ago

我回頭看看有沒有辦法判定系統是否處於螢幕保護模式。

有鑑於您在發現這個視窗的時候威注音輸入法並未陷入失能狀態, 威注音或可考慮將 loginwindow.app 列入白名單。

ShikiSuen commented 9 months ago

另:這個功能是必須引入的,因為總有 BItWarden 等會產生這種故障的軟體的使用者來找我靠北。 我在追蹤這種我死活無法復現的鬼打牆的問題,已經一年多了,直到最近才發現是 SecureEventInput 被濫用使然。

ShikiSuen commented 9 months ago

我暫時先這樣 patch:當偵測到 com.apple.loginwindow 的時候,如果發現 com.apple.ScreenSaver.Engine 有在運行、或者偵測到「桌面被鎖定」的話,就將 com.apple.loginwindow 做忽略處理。

wayneljw commented 9 months ago

感謝開發者!!

ShikiSuen commented 8 months ago

Done.

wayneljw commented 8 months ago

回報: 今日在 v3.7.0的狀況之下,又發生了同樣的事件

我剛剛升級到3.7.1,如果還有發生,後續會再回報。

截圖如下:

2024-01-02_12-26-59 2024-01-02_12-27-35
ShikiSuen commented 8 months ago

@wayneljw 此時威注音可以正常使用嗎?

P.S.: 3.7.1 版沒有對 SecureEventInput 相關的內容做出任何改動。

P.P.S.: 我看不然還是對這個執行緒徹底放行好了。 這個執行緒真要是有問題的話,應該會成為讓所有第三方輸入法開發者群體暴怒的事件。

wayneljw commented 8 months ago

@ShikiSuen 可以使用。

自從此「濫用行為」的偵測發佈之後,在我的電腦大概出現過15次這樣的畫面,之前都沒有很仔細看內容,後來才發現大部分都是loginwindow.app且是在螢幕保護過後發生。

在這15次裡,印象中比例上大概有2次不是在發生在螢幕保護過後,而且後續發生威注音無法正常使用。

@wayneljw 此時威注音可以正常使用嗎?

P.S.: 3.7.1 版沒有對 SecureEventInput 做出任何改動。

ShikiSuen commented 8 months ago

@wayneljw 既然確實有發生過兩次「威注音無法使用」,那我就不能把 loginWindow 徹底忽略處理。

您是喜歡給筆電用螢幕保護程式、而不是直接關閉螢幕(或將螢幕亮度調整到最低)是吧? 不然我也把我的筆電改成這樣、然後我試試看。但我只有 Intel Mac。

ShikiSuen commented 8 months ago

我更換一下用來監測「當前螢幕是否已經被鎖定」的方法。先前引入的CGSSessionScreenIsLocked方法可能已經過時了。

ShikiSuen commented 8 months ago

暫時先這麼修,回頭放在威注音 3.7.2 當中推送。希望這次能解決這個誤報故障:

image
wayneljw commented 8 months ago

@wayneljw 既然確實有發生過兩次「威注音無法使用」,那我就不能把 loginWindow 徹底忽略處理。

您是喜歡給筆電用螢幕保護程式、而不是直接關閉螢幕(或將螢幕亮度調整到最低)是吧? 不然我也把我的筆電改成這樣、然後我試試看。但我只有 Intel Mac。

謝謝。

在此回覆兩個問題:

  1. 發生過兩次「威注音無法使用」的時機點,因為當時沒有確實把錯誤訊息記錄下來,因此無法判定當時是否為「loginwindow.app」所造成。說不定當時是別的程式,已不可考。
  2. 我的螢幕保護程式設定如圖。

我先把我的威注音更新到3.7.2。如果有問題再回報。THANKS。

2024-01-07_16-43-10
wayneljw commented 8 months ago

@ShikiSuen

已升級3.7.2(如圖)

今日再發生一次,根據上則留言所設定的分鐘數,此狀況發生在離開電腦後的大約15分鐘。也就是:

2024-01-08_11-32-20
ShikiSuen commented 8 months ago

@wayneljw 感謝您的提報。 我在開發道場塞個開關吧:除非勾選這個開關,否則該監測模組會忽略 loginWindow 執行緒。

ShikiSuen commented 8 months ago

喔看來這個開關可以先不加,因為 ScreenSaver 的檢測方式恐怕也得更新一下:

image
ShikiSuen commented 8 months ago

@wayneljw 您好。請測試這個 nightly 版本: https://atelierinmu-my.sharepoint.com/:u:/g/personal/shikisuen_inmu_pro/EWI04fuYOOxJsCMKJHQ0jg4BO6KFOJLsyvVM8G_NsG_0iA?e=Yklx5P

ShikiSuen commented 8 months ago

@wayneljw 到目前為止一切都正常吧?

wayneljw commented 8 months ago

@ShikiSuen 抱歉這兩天在忙,剛剛已經安裝好 nightly 版本,用一段時間之後再回報您。謝謝。

ShikiSuen commented 8 months ago

@wayneljw 好的謝謝。這週要是仍未發現問題的話,我可能會公開推送一個包含該修正的 Service Pack 更新。

ShikiSuen commented 8 months ago

@wayneljw 您好。請問您迄今為止沒再遇到這個故障吧?

wayneljw commented 8 months ago

@ShikiSuen 謝謝,除週六、日兩天沒碰電腦之外,其他時間沒有發現此問題。

ShikiSuen commented 8 months ago

@wayneljw 好的謝謝。這個工單我先結案。有復發的話請再留言。

wayneljw commented 7 months ago

回報 @ShikiSuen ,

今天又發生一次。 威注音版本:v3.7.2 Build 3720 - 20240109.1026

關閉此通知訊息之後,威注音本身仍可正常運作。

ShikiSuen commented 7 months ago

我剛剛找到新的 API 可以監控電腦是否有在深度睡眠。 之前僅監控「桌面鎖定」「螢幕保護」的狀態,但沒想到睡眠是需要專門監控的。 我先將這個監控實作到 3.7.3 版威注音當中,回頭有故障的話可以再提報。 @wayneljw

ShikiSuen commented 7 months ago

@wayneljw 威注音 3.7.3 版已經發佈, 解決了「SecureEventInput 濫用行為偵測模組」不檢測電腦睡眠狀態狀態的設計缺陷。 這個工單我先關掉。有復發的話還請再提報。