#osxchat blog

2004/08/13

SpaceChewingOSX 0.701 版釋出

作者: zonble

SpaceChewingOSX 0.701 版剛剛釋出,雖然是一點點的小修正,但也算是解決了之前一項讓人困擾相當久的問題。

之前,如果您在使用SpaceChewingOSX輸入法的時候,或是使用Package Installer安裝程式,或是在登入網路、或在系統偏好設置中,解除某些設定控制台的鎖定狀態時,會要求輸入管理者密碼,一般來說,如果在使用非西方語系的輸入法時,應該會自動切換成西方語系鍵盤配置,而不能使用各種其他語言的輸入法,而SpaceChewingOSX會將輸入密碼視窗直接關閉,造成無法輸入密碼認證(authenticate)的問題。而之前也有不少朋友對此感到疑問,不時可以看到網路上的討論

在解決這個 bug 上,花了相當多的時間。一開始以前是因為密碼視窗會傳入某些事件,而輸入法並沒有對這些事件做了妥當回應,所以不斷的在輸入法元件事件上試圖除錯,也不斷翻閱與密碼物件以及Text Service Component的相關文件,以及在蘋果的Carbon Programming Mailing List發問,後來才發現,認證視窗是在系統有需要時,呼叫在「/System/Library/CoreService」下的「SecurityAgent.app」應用程式,而自動關閉密碼視窗的問題,是SecurityAgent.app在某些情況下,會當掉的問題。

求助Google大神,才知道日本人所發展的自由軟體MacUIM輸入法,之前也遇到過類似的問題,了解到造成問題的原因。—如果在某些輸入法下,開啟了SecurityAgent.app,會造成「HOME」這個環境變數是空的,而如果沒有這個環境變數,SecurityAgent.app便無法讀取相關的密碼設定而當機。

所以,要在啟動輸入法的時候,強制確認系統中有沒有HOME這個環境變數,而說起來,會造成HOME變數無故變空,似乎是OSX本身的問題,而所有根據蘋果所提供的輸入法寫作範例BIM開發的輸入法,可能都會遇到一樣的問題,但就目前的狀況,就是必須要在輸入法當中,多做一次檢查。在參考了MacUIM的程式碼之後,解決了這個問題。

關於SecurityAgent.app沒有HOME變數的問題,可以參見MacUIM的WIKI。SpaceChewingOSX可至OSSF的專案網頁下載

標籤: ,

0 篇留言:

張貼留言

? 回前頁