Skip to content

小麥注音輸入法技術架構

zonble edited this page Jan 20, 2022 · 2 revisions

小麥注音輸入法是一個相當小巧的 mac OS 平台專案,整體的程式碼大約在四萬到五萬行之間,使用 C++、Swift、Objective-C++ 以及 Python 等語言寫成,大抵上只需要一點時間,就可以了解整個專案的組成,並且開始調整或添加您想要的功能。

小麥注音是一套非平台官方,且非商用的開源自由軟體,目的就不在於與其他產品競爭,而是希望,在繁體中文圈當中的用戶如果有些平台或商業公司的方案無法照顧到的需要時,有一套可以輕易調整、修改的程式碼可滿足需要,所以,相較於包山包海的功能,我們致力於架構的極簡,以及程式碼的簡潔易讀,就是期待在小麥注音的基礎上,可以看到更多的應用。

在 2011 年小麥誕生初期,有相當大一部份是用 Objective-C 以及 Objective-C++ 撰寫,在 2021-2022 時,由 Objective-C 寫成的部份,則大幅用 Swift 改寫,更適宜新一代從 Swift 開始上手的 macOS/iOS 工程師參與開發。

  • C++:主要用來撰寫詞庫載入、智慧選字演算法等底層部份
  • Swift:主要用來撰寫呼叫 macOS 系統 API、選字窗 GUI 等上層部份
  • Objective-C++:由於目前 Swift 與 C++ 之間的 interop 還不成熟,Swift 與 C++ 之間,還是需要一層 Objective-C 對接,我們還是使用 Objective-C++ 撰寫同時會接觸到 Swift 與 C++ 的部份
  • Python:用在詞庫的相關處理

IMK 輸入法架構

在 macOS 上的輸入法架構叫做 InputMethodKit,以下簡稱 IMK。輸入法本身也是一套標準的 macOS 應用程式,用來打字的應用程式與輸入法之間是 client/server 的關係,每一個可以打字的 app 叫做 input client,輸入法則是 input server。在電腦開機,切換到某個應用程式打字,切換到某個輸入法的時候,作業系統就會在背景把輸入法應用程式叫起來,這時候有時可以感受到打字的 app 會有一小段時間的停頓,

Clone this wiki locally