過去曾經把 Linux 上優秀的輸入法「
新酷音」移植到 Windows。
雖然後來實在沒時間再參與了,我自己一直還是有在用新酷音
直到現在,因為工作上需要長時間使用 Windows,難用的
微軟新注音,再次喚回我對新酷音輸入法的懷念。
到了 Windows 7 之後,因為系統架構的改變,
新酷音雖有網友做出支援 64 bit Windows,一直沒能運作得很好
因為 Windows 逐步拋棄舊 IME (imm32) 架構,
轉向採用 COM 技術的新
Text Service Framework (TSF),
複雜度呈直線幅度上升,使得許多舊有 IME 常出現難解的奇怪問題
又因 IME 的諸多限制,使舊的新酷音依賴許多 dirty hacks 在運作
最近 Windows 8 更是全面轉向 TSF,開始準備禁用 IME 架構,
以 TSF 全面重寫看來勢在必行了。
先前有網友
陳昌倬 (czchen)的努力,用
微軟提供的範例程式改造,
初步證實了 TSF 的可行性,在這個鼓舞之下,
我重啟了 Windows 版新酷音計劃
https://github.com/chewing/windows-chewing-tsf/
經過連日熬夜研究,全新 TSF 架構的 Windows 版新酷音終於快可以用了
基本的架構和 API 以及各種工具都完成了,連語言列按鈕和選單,都能正確運作了!
而因為原先微軟提供的範例,是以微軟自己的 MS-PL (Microsoft Public License)授權,
雖然也算是自由軟體,但是該授權不相容 GPL,而且衍生著作必須沿用 MS-PL
為了避免這個問題,我只好 from scratch 重寫 TSF 支援。
因為 TSF 大量使用 COM (component object model),並且層層疊疊非常複雜,
對開發者並不友善,我將這部份封裝進 libIME 這個函式庫,
這樣未來的其他輸入法開發者,可以直接套用 libIME 封裝的現成架構,
而不需要了解 TSF 就可以快速寫出支援 Windows 的輸入法。
這裡針對 libIME 程式 API 架構寫了
簡易說明文件,
供有興趣參與開發的朋友參考,希望可以加速大家移植自己的輸入法
基本上透過 libIME 來實做輸入法是很簡單的
只需要碰觸到非常少 TSF,大部分細節和 COM 操作都被隱藏了
libIME 也提供了許多 Windows GUI programming 的工具 classes
Ime::Window, Ime::Dialog, Ime::PropertyDialog...等等,
幫助實做視窗界面和 config dialog
雖然目前進展很順利,大多數問題也克服了,
但是我接下來會需要忙好一陣子,沒時間改太多 code,
文字輸入的部分還有些問題,希望有其他朋友可以
就現有 code 和文件繼續改良,相信很快就能有可用的發行版
至於 Windows 8 store app 支援,看來是沒有指望了
我有 E-mail 給
TSF aware blog 的作者,他是 MS 員工
專精 TSF,經過他的回答,看來要能支援 win 8 app
基本上是需要整個用 win 8 專屬的新 API 重做,
而且設定和資料基本上需要放上 web 才行
因此雖然也是 TSF,但是等於也是要全部重寫另一個
GUI 也是要用新的架構重寫,舊 GUI code 完全不能用
因為限制實在太多,困難度更高,又需要跟 web 連接
我想這不是我們該支援的東西。
詳見微軟的:
Guidelines and checklist for IME development (Windows Store apps)
照現有的狀況看,大部分現有軟體要移植到 win 8 metro
基本上是不可能的,除非全部砍掉重寫...
所以,我個人認為,這是一個沒有前途的平台...
把開發應用程式變得比 Linux 上更困難,只是自廢武功而已
集中精力來支援沒人在用的平台,實在不划算
因此,就這樣吧! 支援 desktop mode 就好了
敬請期待,重生的 Window 版本新酷音 TSF 輸入法!