RIME行列輸入法補完方案(功能說明及開發心得)

RIME(中州韻) 是一個開源的中文輸入法引擎,支援Windows、Linux、macOS、Android四大平台,並透過一個高自由度的框架提供多種中文輸入法,現時尤其受大陸用家及粵拼輸入法的用家歡迎。

對於自己慣用的行列輸入法,RIME亦有支援,但功能卻殘缺得難以接受。眼見不少行列用家對於在Windows內置的行列輸入法感到不足,對於在其他系統上安裝行列輸入法更是苦惱,自己亦想出一分力改進,所以就嘗試將RIME上的行列輸入法補完,希望透過RIME這個跨平台的輸入法引擎令行列輸入法可以在各平台上暢通無阻。

這次的RIME行列輸入法補完方案的主要目標為還原傳統行列30輸入法上的大部份功能。經我研究後發現不少輸入功能其實都不難在RIME上實現,只是原作者所編的字碼表有所缺失和輸入方案架構設定未夠細緻。略花精力完善後,已能作出以下改進:

  • 支援更多字元,包括簡體字及大量中日韓統一表意文字擴展區A-F所定義之字元
  • 支援一、二級簡碼及特別碼輸入方式
  • 固定單碼及雙碼字候選字順序,其他重碼按用家輸入頻率自動調整順序
  • 預設顯示10個候選字(舊版RIME或只能顯示9個)
  • 3-及0v符號表
  • w+數字符號表連表單名稱標示
  • “?”萬用字元

字碼表重整

以個人認知,行列輸入法最完整的鍵碼表乃出自 老刀 。他的字碼表收錄了幾乎所有電腦可以顯示的漢字所對應的行列鍵碼,涵蓋了簡體字以及大部份中日韓統一表意文字,鍵碼數量是RIME原版所收錄的3倍,近11萬字。同時他的鍵碼表也是在github公開供人取用。所以順理成章就採用了他的鍵碼表來改編。這次補完計劃最重要的工程也是編寫小程式將該cin格式的鍵碼表轉換成RIME所使用的yaml格式。

二級簡碼及特別碼的處理

有一些輸入功能未必能夠在RIME的框架下實現,例如RIME按空白鍵會自動上第一候選字,就令行列輸入法的特別碼輸入無法實現。本來特別碼的設計是用家輸入特定鍵碼後再按空白鍵就能輸入特定常用字,而該字本身不會出現於選字列表中。現在為了保持特別碼的打法,特別碼的字就必須被編成候選字的第一候選。

如此一來特別碼又會與部份二級簡碼重疊。二級簡碼本來是將字元編到特定與其原鍵碼有關聯的數字鍵上,以便用家記憶,具一定的重要性。一般同碼的二級簡碼並不佔用所有數字位置,在特別碼必須放到候選列表的情況下一個折衷方案就是將被佔位的簡碼字順延到後面未佔用的位置上。不過這個做法需要逐個特別碼和二級簡碼以人手處理,比較費時失事,而且只改動部份簡碼而非統一取碼原則亦有點吊兒郎當,所以到最後我採用一個更簡單的處理方法:取消二級簡碼的數…

--

--

Terry Tsang @ 青鳥脈博

正在德國深造的90後香港電腦工程師。偶爾寫寫電腦技術、時政、分享攝影作品等。| 本站: https://bluebirdbeats.com/ | fb: fb.me/archerindigo | ig: terrytsang.indigo