[
] 怎樣在 Mac OS X 下寫一套輸入法?(三)
到目前為止的介紹所介紹的,都只是一個輸入法系統元件的「外殼」,而還沒有介紹作業系統如何與輸入法的核心演算法溝通。接下來要介紹的,就是輸入法如何取得使用者輸入的按鍵的資訊,然後給予適當的回應。
作業系統會將使用者按了某個鍵盤按鍵這樣的事情,當成是一種「事件」(Event),而在 Mac OS X 中,有非常多不同種類的事件,包括滑鼠事件與鍵盤事件的類型,而每個類型下又有許多更進一步的區別,例如,滑鼠事件就有滑鼠移動、點選、拖拉、放開,鍵盤則有打一下、按著不放…等等,蘋果在 Carbon Event Manager Reference 這份文件中,便完整列出了各種事件。輸入法則透過前一篇介紹的 kCMTextServiceEvent,獲得這些事件,以 CIM 這個範例來說,可以在 CIMcomponent.cpp 裡頭,在遇到 kCMTextServiceEvent ,就丟到 CIMSessionEvent() 裡頭處理, CIMSessionEvent() 則寫在 CIM.cpp 裡頭。