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按空白鍵會自動上第一候選字,就令行列輸入法的特別碼輸入無法實現。本來特別碼的設計是用家輸入特定鍵碼後再按空白鍵就能輸入特定常用字,而該字本身不會出現於選字列表中。現在為了保持特別碼的打法,特別碼的字就必須被編成候選字的第一候選。

如此一來特別碼又會與部份二級簡碼重疊。二級簡碼本來是將字元編到特定與其原鍵碼有關聯的數字鍵上,以便用家記憶,具一定的重要性。一般同碼的二級簡碼並不佔用所有數字位置,在特別碼必須放到候選列表的情況下一個折衷方案就是將被佔位的簡碼字順延到後面未佔用的位置上。不過這個做法需要逐個特別碼和二級簡碼以人手處理,比較費時失事,而且只改動部份簡碼而非統一取碼原則亦有點吊兒郎當,所以到最後我採用一個更簡單的處理方法:取消二級簡碼的數字位置定義,讓二級簡碼從2開始順序列出。這樣做可避免尷尬,又可以讓後續碼建議字提早在候選字列表首頁列出。只是對於習慣二級簡碼數字位置的用家而言或需時適應新位置。

w+數字符號表的處理

符號表是行列輸入法上一個頗受歡迎的輸入功能,用家只需按下w+數字就可以輸入各式各樣平常很難打出的符號,例如中式括號、希臘字母、注音符號等。很少有中文輸入法會提供一個如此簡單的方式輸入符號。

可是,因RIME選字鍵(0–9)和拼字碼不能重疊,正常w+數字會變成選字而無法顯示符號表,故需以其他按鍵代替。幸好RIME可以將大階字母視作鍵碼的一種,所以我就將w+數字改為大楷Q-P行,一鍵即可進入符號表,相信會更加方便。

利用這個特性,日後還可以定義更多常用的符號到其他大階字母中,例如Emoji。

其他由RIME提供的實用輸入功能

選擇在RIME上開發行列輸入法的一部份原因,是因為RIME有很多頗為實用的功能,也很容易擴展。包括以下這些:

詞句連書

RIME可以在連續輸入多個字的鍵碼後才上字,引擎會根據用家的輸人組合及其詞庫判斷用家想打的詞句。如果判斷準確是可以省下不少按鍵次數。行列輸入法本身重碼率不高,引擎需判斷的組合較少,所以準確度也不錯,大家可以在輸入常見詞句時考慮使用以增加效率。

RIME行列亦將英文單引號「’」定作斷字碼,可在每個字的字碼之間輸入以作分隔,讓引擎更準確判斷詞句。

由其他輸入法反查

如果你忘記了某個字的行列鍵碼,但知道它的國語拼音,你可以臨時輸入「` + 拼音」反查其行列鍵碼。

日後我亦會研究加入粵拼反查,始終自己是香港人,粵拼也是RIME上最熱門的輸入法嘛!

後續碼字元提示

一邊拆碼時RIME的候選字列表會一直提示有什麼後繼鍵碼和相應的字元,所以你可能不用拆完所有鍵碼都可以找到要打的字然後直接選字。當然你忘了最後的鍵碼如何拆也是可以用這個方式查找,就如同「*」萬用字元。

「?」萬用字元

「?」鍵在中文輸入法上一般是用作取代單個鍵碼,當某個字比較難拆時就可以用這個鍵碼搜索。

本來RIME並不支援「?」萬用字元,不過它的轉碼器有一個功能是可以將鍵碼表的鍵碼按規則演化成其他鍵碼。本來這是用作為拼音式輸入法提供簡拼方法,但我就透過這個功能將鍵碼演化成與萬用字元相容。

將鍵碼演化到包含萬用字元後,鍵碼的數量是以幾何級數倍增,加上老刀鍵碼表本身又特別龐大,對引擎構成了巨大壓力。為平衡效能我製作的萬用字元最終只支援2–4碼的字元(況且對行列來說5碼字大多都是怪獸字,也沒多少機會要輸入)。

多種配色主題

中文輸入法的介面一直給人古板的感覺,但RIME卻能提供各種時尚的介面配色,令人耳目一新。以下是其中幾款Windows版RIME提供的配色:

橫向選字

古老的倚天中文系統在輸入中文時是橫向選字的,行列輸入法的用家似乎也很偏好這種選字方向。RIME其實支援橫向選字,不過考慮到RIME會建議後續鍵碼字和其鍵碼,當橫向顯示時就會變得十分冗長,所以最後我仍維持使用直式。

想要試用RIME行列輸入法嗎?那就可以參考 下一篇 的安裝教學啦!

Originally published at 青鳥脈博 on October 31, 2020.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store