以下隨意說東說西關於 Rime 輸入法架構!

 

㈠ Rime 有別其他輸入法的大殺器:

初入門者多圍繞「標點符號鍵位」、「中英文和大小寫切換的快捷鍵」等修改。這在一般輸入法中也多可設定,只因這些不需要用到 Rime!

深入後的心得是 Rime 輸入法有四大殺器:

① 〈 正則 〉

② 〈 OpenCC 轉換 〉

③ 〈 Lua 的掛接 〉

④ 〈 多重掛接其他副方案 〉

 

 

㈡ 遮屏(限定出字範圍,如:Unicode CJK):

對中文特定範圍的遮屏(限定字詞),有以下方式:

① 〈 使用 charset_filter 功能 〉把字詞限定在 Big5 等範圍。但這會把字庫中的外語和符號一起遮屏,且無法自行設定遮屏範圍細節。且自行從官網原碼封裝時,官方已預設把此功能拿掉,須自行附加。

② 〈 使用 OpenCC 功能 〉OpenCC 功能是轉換字詞,非遮屏!!!此功能可把某字轉成同一選單有的字,效果就如同遮屏一樣,但少數字碼沒重碼或都需要遮屏,則無法全部遮屏。

③ 〈 使用 lua script 功能〉網路上有人拋出程式碼,可自設遮屏 Unicode 各種等級(CJK、ExtA … )且不會遮屏其他非中文詞彙,不過該程式碼沒有開關選項,等於寫死,且無法自行設定遮屏範圍細節。PS:用 lua 是可做出開關,可參考:https://github.com/LEOYoon-Tsaw/Rime_collections/blob/master/Rime_description.md#%E5%9B%9Bfilters,和 https://github.com/LEOYoon-Tsaw/Rime_collections/blob/master/Rime_description.md#%E4%B8%83lua ,也可寫出自行設定的遮屏範圍!不過前提是要熟 lua 程式碼!

目前這邊作法為結合 ② ③,用 OpenCC 把不要的「字」轉成「冷門符號」,方案中標點和字碼表沒有或幾乎不用的,方案中使用『 ᰼᰼ 』,然後用 lua script 程式碼,把含該「冷門符號」的字詞,不顯示上選字單。此方法會產生一個副作用,輸入過程碰到被遮屏的字詞,其編碼沒有其他相同編碼的字詞,會跳到未上屏狀態的英文,① ③ 也會出現此問題,此時繼續輸入則恢復正常,如該字詞碼經切分輸入後,有記憶詞彙,則該編碼就不發生此狀況。該方法可滿足 ⒈ 自行設定遮屏範圍 ⒉ 可設立快捷鍵開關決定是否遮屏,當罕見字要用到時,可關掉遮屏去爬找。

技法實際程式碼,請參看本部落格提供方案內容。

 

 

㈢ 英漢字典(於comment顯示翻譯):

① 〈 使用 lua 功能 〉有高手使用複雜的 lua 程式碼,建構了英漢字典方案:https://github.com/sdadonkey/rime-english,很是厲害👍🏻,打開了架構 Rime 功能更深的一扇大門。但使用時需轉換到該方案,不然就得把該方案的拼音改成習慣的注音,標點快捷鍵等都得重設習慣的,故以掛接方式直接在某方案中調出使用,但無法作用,因為 lua 的處理無法直接引用過來,需修改 lua 程式碼符合掛接並在本方案中做安排,且原作的做法是把該英漢字典作用在 ascii 英文模式下。

② 〈 使用 OpenCC 功能 〉早前測試 OpenCC 功能,給英文單字後面的提示碼 comment 加上中文翻譯,發現「單個字母」沒問題,但牽涉到「英文單字(多個字母)」會有問題。如「tips」中使用「 char 」僅對「單個字母」有效,「英文單字(多個字母)」無效;使用「 all 」,多個字母的提示碼 comment 會出現兩個以上翻譯的問題!

③ 〈 使用 reverse_lookup_filter 功能 〉後來索性建立一個獨立方案,輸入碼設定為「英文單字」的「翻譯」(該方案打不出字),然後使用「 reverse_lookup_filter 」功能做反查提示碼(反查濾鏡)掛載,即可做到英漢字典!!!目前如此設定,但 lua 可做到更複雜功能,如「通配符」等一眾特殊功能,研究 ing 🧐。該方法排序不能如一般英文字典一樣,全部以字母順序排序,會先以字母數量排序,同字母數之單字才會以字母順序。

PS:Windows 輸入時,當整頁提示碼太多時,會使程式崩潰!故用 custom 檔去簡化提示碼!但 Windows 可行之程式碼在 Mac 中會使《Easy》無法正常出字😳!提供 custom 檔給 Windows 用戶,防止程式崩潰, Mac 用戶勿使用該 custom 檔!

Easy_Mac.png

Easy_Win.png

 

 

㈣ 字典中使用「 # 」字號輸出:

「 # 」字號一般為程式碼的註釋,無法被當作字詞,如編寫符號集等字典碼表,可加入以下程式碼,並在其下方加入含有「 # 」字號相關等編碼(如:#️⃣),該行下方所有「 # 」字號會被當作字典檔的字詞,而不是註釋。

 

# no comment

 

 

㈤ 字典中使用「 空白 」:

字典中「 空白 」可當成要輸出的字,直接打「空白」後接 tab ( \t ) 再加入編碼。

但「 空白符 」無法直接當成編碼,會被當作詞彙編碼中字與字的切分,須先在字典中編入其他「 非空白 」編碼(如:注音的1聲),然後在方案中「 speller 」底下用「 algebra 」轉寫(如:把 1 轉成「空白」),並且打開「use_space: true」。

 

 

㈥ 無法復刻仿製:

Rime 輸入法架構變化性甚廣,但還是有其限制,如要復刻「新注音」或「傳統注音」,是無法做到的!從 沒有〈下拉式選單〉造成無法上排數字選字;沒有打錯聲調或注音不用刪除鍵,補一個聲調或注音即可校正;沒有一般注音輸入法內核對中文的分詞、斷詞、組詞等判斷,打長句可推測不如一般注音。甚至復刻「嘸蝦米」,可以做到很像,但深入細節也無法復刻仿製的一模一樣。畢竟 Rime 是輸入法『架構』,需要兼容音碼、形碼、並擊等眾多類型。

很多功能在 Rime 版上已有討論,這不是一般網民嘴巴隨口說說(不要舉例某某輸入法有某種功能就認為表達很清楚,實現很簡單),而是從細節、邏輯、還有可能碰到的 Bug 等問題去釐清,然後看怎麼增設功能。從以前到現在,很多功能都陸續實現,當然還有許多功能尚未實現,這方面就只有等待官方,不然 Rime 都已經開放原始碼,不滿意就自己改主程式吧 XD。

 

 

㈦ 瑕疵:

不談 Rime 架構明顯無法達成之功能,玩久了會發現 Rime 還是有設定上的極限。因自行設定關係,對輸入法操作細節或字詞的編碼多所摸索,會發現一般市面上的輸入法更是一堆瑕疵,只是以往沒注意到如此的細節,像是曾經導入其他輸入法的字庫(方案中未加上的字),後來發現幾千字的發音根本在字典找不到,後來沒加上,且這些字在字典中是有其發音(很多日港韓特殊用字,字典中並無其國語發音,這可諒解),還有很多細節操作的問題 ,一般輸入法也是細節問題多多。有些瑕疵用設定檔改不掉,但可發展出不同的輸入效果,或是等官方補完改善。

初期還會幫網友改方案,大部分口氣還可以,但話語中實則嫌東嫌西,不是容不下別人的批評,只是感覺就出張嘴。像是後來幫網友提出的想法去修改,所增加的功能在我看來會產生一些我無法容忍的 Bug 和邏輯彆扭,但網友對自己構想所產生出的問題基本無視 XD,反映給對方,對方一改前面吹毛求疵的說法,簡單一句我覺得好用就結束了。有時先把功能作出來,產生問題後面再慢慢解決,但……前面不是完美主義嗎⁈ 怎麼自己的構想不用追求完美⁈ 還有為何我不認同的作法,且有些擺明否決我的想法,但提出的作法實在OOXX,卻要我花時間改 😤️。總之只能持續的遇到瑕疵🤣,持續的接受瑕疵🤣,持續的改進嘗試,持續的玩🙂。

 

 

㈧ 無法實現的功能又可實現了!:

自從 rime 附加了 lua 後,一堆原先無法做到的功能,可用它來實現!如:① 注音聲調打錯,不用刪除再補個正確的聲調即可校正。② 英文前後附加一個空白,以往都是在碼表上刻意附加,但會碰到字典沒有的英文單字會出現 bug,出字後需手動刪除多的空白鍵(如字典常常沒有附加的「 -s 」和「 -ing 」單字)。總之一堆特殊功能可用 lua 實現。

最近剛把韓語方案,按空白鍵上屏時,輸出字後面會附加一個空格符(一般韓語輸入法的設定),改用 lua 實現,避免了使用 rime 原生方法產生的 Bug。心得:寫 lua 實現該功能的過程中,陸續出現其他的 Bug XD,不斷修正後一一解決,lua 是一盞明燈,但入門比 Rime 本身更難,說明文章和網友釋出的程式碼並不多,lua 程式碼和對 Rime 接口目前也在摸索中。接口:https://github.com/hchunhui/librime-lua/blob/master/src/types.cc#L407

 

㈨ 最開始

最初修改 Rime 針對嘸蝦米和外語自編形碼,後來才開始修改注音。

玩久了,發現很多不錯的功能在 Rime 中可以實現,也從很多網友方案和文章中得到靈感。許多展示在網路上方案,單一功能或作法讓人眼睛一亮🤩,但總想說這些好用的功能都分散在不同方案間,且多是非注音方案,故在上手 Rime 的修改,目標是集合、擴充、精簡、完善這些可在 Rime 實現的功能,把好用適合的功能通通加到單一個方案中。

「洋蔥純注音」輸入「 ` 」+「某項目名稱之首個注音」,可輸入《 emoji 集》,「洋蔥純注音」會出現如「 `uz 」之提示,這也是許多網上方案預設形式,但這樣怎知道是什麼項目呢⁈ 故在「 洋蔥注音 plus 」中,直接掛接一個《 emoji 集》副方案,使得「 `uz 」之提示,可以顯示成【衣服】,使用者看到後,就知道這是一系列關於衣服的 emoji 。使用副方案還可有記憶功能,後面的選項記憶後,就不用辛苦翻頁爬找。

「洋蔥純注音」標點符號選項後面 comment 沒有加註說明,「`」「 ` 」「︑ 」「 、」「 、 」「 ﹑ 」等一連串相關標點符號,怎麼知道什麼是什麼呢?故在「 洋蔥注音 plus 」使用 opencc 功能作標示。

以上「洋蔥純注音」中不加入,因考量用該方案多是新手,掛載太多功能容易搞錯檔案置放位置,故把這些功能和優化只加到洋蔥注音 plus 和 mix-in 方案中。

lua 功能也儘量以能力所及,做到適合注音之功能最大化。如:許多網友寫出可輸入當天日期之 lua 程式,給了很大的編碼依據和靈感,但各種日期格式都散佈在不同方案間,花了很多精力集合並拓展增修。第二頁有好幾種英文的日期格式唷😎,有發現嗎?😛

 


贊助(Donate):

從第一個方案上傳已持續更新四年,花了族繁不及備載的心力!

贊助 (Donate) 支持,讓更新更有動力😀!

洋蔥注音《綠界》和《歐付寶》贊助:

 

如果想對 Rime 主程式 trime 同文輸入法 作者贊助,可按文字連接!


 

    L'Étranger Onion 發表在 痞客邦 留言(0) 人氣()