Input Method Kit

上周五終於(是的,終於)釋出了 OpenVanilla 0.8 的正式版本。

在這一次釋出中,包含了一套專供蘋果的最新作業系統—Mac OS X 10.5 Leopard 的專用版本,而另外一個 0.8 的安裝套件,除了可以在 Tiger 上使用,其實也是可以在 Leopard 上面安裝的。如果您在安裝了 Leopard 版本後遇到使用問題,也可以改裝這個版本。

這兩個版本的差別在於,非 Leopard 專用版用的是蘋果過去的輸入法架構,將輸入法模組寫成 System Component,透過 Carbon API 提供文字服務(Text Service Manager,TSM);而 Leopard 專用版本,則是使用了 Leopard 所提供的新的輸入法架構—Input Method Kit(以下簡稱IMK)。

去年九月, OV 開發團隊前往北京參加蘋果電腦舉辦的「輸入法廚房」工作坊,就在於了解這套架構,於是 OV 團隊能夠在上週 Leopard 正式問世的同時,同步推出以新架構撰寫的版本,看來 OV 似乎是除了蘋果官方之外率先使用 IMK 的用戶。gugod 去年也就寫了一篇〈輸入法廚房〉,解釋當時我們所看到的 IMK。

根據蘋果的說法,以及我們的想像與理解,IMK 照理可以解決許多目前輸入法開發工作的問題。例如,IMK 裡頭不再殘留自 OS9 以來的 Carbon 程式碼,所以開發者不用再去煩心處理噁心的 Carbon,而一套輸入法可以完全使用 Cocoa 完成—所以,像輸入法選單,也變成使用 NSMenu 處理,也就是說,其實接下來可以在輸入法選單上亂放圖片啦、或是輕易做一些特殊的介面設計。

而 IMK 本身也提供了一些圖形介面的元素,例如選字窗的設計等,所以未來開發者如果計畫要撰寫新的輸入法,也就可以直接使用系統本身提供的功能即可,而不用像 OV 計畫,光是在想怎樣在視窗上面畫個漸層,就搞了老半天。

另外,TSM 的原理是,每開一個應用程式,就必需要載入一次,所以如果你用酷音輸入法,又同時打開了瀏覽器、文書軟體以及即時通訊軟體,就是載入了三份酷音輸入法,而如果這三份酷音輸入法又同時要寫入自訂辭典或什麼的,往往也就出現了打架的狀況;更可怕的是 OV 兩年前剛開始起步的狀況—如果輸入法程式有問題,會同時造成應用程式當機,而假如是在登入的時候輸入法把 Finder 搞當,就會看到無窮的修羅地獄:一開機,Finder 就當掉,系統又自動把 Finder 開起來,又當掉…。當然啦,OV 團隊是不會釋出這種東西的,但是想到兩年前,還是心有餘悸啊。

在 IMK 架構下,則是一套輸入法就是一個獨立的應用程式,在應用程式中打字時,就是應用程式與應用程式之間相互傳遞訊息,所以,輸入法當掉的時後,就只是一個應用程式沒有啟動而已,不會造成任何問題,系統會把所有的按鍵都當成英文處理。此外,在輸入法開始執行之後,也就只需要執行一次輸入法程式,可以減輕輸入法對系統造成的負擔,也不會造成輸入法執行序(process)之間打架的問題。

…照理說,應該是要這樣的。

在釋出後的這兩天,陸續接到的問題,幾乎都是 Leopard 專用版本的問題。(說到這裡就就有個疑問,台灣的 Mac 使用者換作業系統的速度怎麼這麼快啊。)問題主要是:在開機之後,往往需要先等上半分鐘或是一分鐘,才能夠開始使用 OV 輸入中文,在此之前打出的所有文字,都會變成英文。

前面說的都是「輸入法變成了一個獨立的應用程式」的好處,但是這麼做看來也不是沒有問題,也就是,既然是一個獨立的應用程式,哪麼,這個應用程式會在什麼時候才開始啟動呢?似乎目前的狀況是,Leopard 會先去開啟其他應用程式,最後才慢吞吞的啟動 IMK,而作業系統要什麼時候才啟動,也不是輸入法的開發者能夠控制的;此外,如果是作業系統本身拖延了啟動輸入法的時間,照理說,那麼所有作業系統內建的、以 IMK 開發的輸入法,恐怕都有這個問題吧。

所以,如果在裝了 Leopard 專用版本,覺得啟動速度太慢,解決之道是可以改裝另外一個 TSM 版本的 OpenVanilla。不過,IMK 是蘋果未來唯一的輸入法解決之道,主要是 64 位元作業系統的問題—TSM 透過 Carbon,但是 Carbon 並沒有 64 位元版本,所以日後要使用 64 位元的應用程式,必定是透過 IMK;而在只能用 IMK 的狀況下,IMK 又問題重重,又該怎麼辦呢?—Well, blame Jobs!

說到 64 位元,現在在蘋果電腦上面弄程式還真是麻煩。從 PowerPC 到Intel CPU 的過程中,出現所謂 Universal Binary,已經是太極生兩儀,現在還有 32 位元與 64 位元的版本,就是兩儀生四象,照這樣進展,看來距離八卦也不遠了。在跟 lukhnos 測試新版的 OV 載入程式的時候,也沒事突然就發現什麼在他的 MBP 編的 Loader 沒辦法在我的小白上跑的問題,原因不過只是忘記編成 Universal Binary。

而因此,即使像具有英文拼字檢查的「新英數輸入法」,就算已經做出來了好陣子,在 Windows 版本的 OV 中也是內建模組,也不知道有怎樣比較好的方式在 Mac OS X 上釋出—新英數輸入法使用了 hunspell 作為拼字檢查的引擎,但是到現在還是沒有研究出來,怎樣編譯 hunspell 的 Univeral Binary。

9 thoughts on “Input Method Kit

  1. >>台灣的 Mac 使用者換作業系統的速度怎麼這麼快啊。
    同感。
    若不是光碟還沒到手,可能第一時間我也裝了。
    不過現在另外一台電腦的硬碟掛了,僅剩下小白這台穩定的工作機。所以暫時不考慮升級了,至少等另外一台工作機正常了再說。

    這篇就是用OV 080打的,感覺真棒!!!

  2. 感謝OV 團隊的努力和辛勞~^^

    原來OV 在10.5中,有時候在切換程式時EX:MSN SAFARI
    出現OV 只能打英文的狀況,無蝦米輸入完全停止,當聊到正火熱時,就只能看
    著OV發呆…

    應該就是出在IMK上OTL

    而且TSM 的版本呢~ 目前OV 出現的是把MSN 搞掛~ 哈,和您說明的一模一
    樣呢~

    看來需要等阿婆更新了~@@

  3. 目前大概知道輸入法OV 的IMK睡著時~
    只要把程序OPENVANILLA 結束就會回復了~

    而且我發現,它不是睡著,而是CRASH 掉了~

  4. 那所以在新版的入輸入法下(0.8.0.3)
    沒有辦法用新英數嗎?
    基本上連加值包裡也找不到檔案
    還是因為我的mac是powerPC的關係?

  5. Pingback: 爱苹果,爱生活 » IMKQIM 发布 Public Beta 版本

  6. Pingback: IMKQIM 发布 Public Beta 版本 | Mac GG

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.