Saturday, January 19, 2013

「鼠鬚管」拼音輸入法與繁體中文

緣起

由於過去在國外唸書的緣故,鍵盤上沒有注音符號,因而習慣了拼音輸入繁體字。在Mac OS 7, 8 的時代,用的是蘋果 Chinese Language Kit (CLK) 裏的漢音輸入法。這個輸入法是由日本松下研究所開發,可以用注音、拼音輸入,會自動比對內建的詞庫來更換還在輸入區的同音詞。和當時主流的輸入法一個字、一個字的從同音字挑正確的字的使用經驗比較起來,已經很厲害了。

在進入Mac OS X朝代後,漢音輸入法一度因爲青黃不接,而出現空窗期。因為找尋可用的輸入法而開始接觸「得意輸入法」(後來改名為「奇易輸入法」)。奇易輸入法最令我激賞的是,它會自動學習詞彙,不必像漢音輸入法那樣,要手動加入詞庫。如鄭先生自己說的,打字越打越輕鬆。過去十多年一直使用鄭安巽先生開發的「奇易輸入法」。也因爲好用,前後買了三套授權碼,給不同的電腦用。

隨着 Mac OS X 版本的更新,Microsoft Office的版本的更新,奇易輸入法已經開始出現不相容的情況。以下是我在oikos 論壇的提問
我在使用 MS Office 2011 裏的 WORD 時候,有一種情況常會 (但是不保證一定發生) 把 WORD crash,然後  -DerYi-OS-X-IntPPC-5500r3 的 CPU 使用量飆高。必須用 Activity monitor 把「-DerYi-OS-X-IntPPC-5500r3」與「得意輸入法」結束 (非強制結束)。還好,重新啟動 WORD,當輸入法切換到奇易輸入法後,一切重新載入,就好了。

要把 WORD 當掉的方法是:當輸入法是奇易輸入法時 (in-line行內輸入模式),緩衝區是空的情況下,如果滑鼠去點擊功能帶上的字型選單、工具箱裏的樣式選單、或以右鍵點擊欲叫出 contextual menu 時,就當掉。

似乎這新版的 WORD 這些選單從系統看來都是某種視窗,奇易輸入法以為我從文稿切換到另一個文稿視窗,準備建立 hook 替即將要用到的 in-line input 做準備,結果掉入陷阱,引起 WORD 與奇易輸入法當機?(香草輸入法開發者也提過類似的問題)

我現在不敢把輸入法留在奇易,每次輸入完中文,就切換回英文,免得不小心滑鼠按下 WORD 的選單就毀了。

我的機器的狀況:
Mac OS X 10.6.8
MacBookPro 2 GHz i7 (2011 early)
8 GB

奇易輸入法 5500r3
MS WORD 14.2.4 (120824)
從鄭先生的回信,他目前不再維護奇易輸入法了。所以,要開始物色替代方案。

QIM 輸入法

目前 Mac OS X 內建的拼音輸入法與 iOS 裏的智慧程度一樣不如意。如果在緩衝區裏的同音字不是我要的,又留在那裏等後文鍵入時自動更正,往往還沒等到,錯字就送出到前端應用程式了。以至於思緒常 常要注意在這裏。以前在用「奇易輸入法」時,思緒完全在構思文字,不必煩這些事。

我找到了 QIM (Quickcore Input Method)。智慧程度用起來和奇易輸入法一樣 (但是沒有自動聯想功能)。原先是 shareware,最近變成免費的。耶魯大學 Chinese Mac 網頁對它讚譽有加。是中國的軟體個人作家 Glider 製作,可以設定成輸出成繁體中文。詞庫用起來也是有因應台灣的用法。說明文件在此。

從2012年11月中旬開始使用 QIM 以來,初期遇到的轉移陣痛是
  1. 不需要加音調。習慣了奇易輸入法每個字後面加調號,現在暫時要繃緊神經、提醒自己不要按調號。
  2. 隨時都是選字模式,不需特別按space bar。
  3. 按space bar是把首選字送出。
  4. 按esc直接清空input buffer。
  5. 按return可以直接把拼音或英文字送出。
不過,最不適應的是,QIM 開發者相當堅持中國拼音的正確性,所以沒有把臺灣慣用的發音納入。可是,臺灣有些字的發音就是不一樣 (教育部的國語詞典也這樣呀)。例如,

中文字臺灣慣用發音QIM
zhan (ㄓㄢˋ)zan (ㄗㄢˋ)
zou (ㄗㄡˋ)zhou (ㄓㄡˋ)
yao (ㄧㄠˊ)xiao (ㄒㄧㄠˊ)
shou (ㄕㄡˊ)shu (ㄕㄨˊ)
yi (ㄧˋ) 或
ye (ㄧㄝˋ)
ye (ㄧㄝˋ)
yi (ㄧˋ)ye (ㄧㄝˋ)
she (ㄕㄜˊ)shi (ㄕˊ),  shen (ㄕㄣˊ)
yao (ㄧㄠˋ) 或
yue (ㄩㄝˋ)
yue (ㄩㄝˋ)
sai (ㄙㄞ) 或
se (ㄙㄜˋ)
se (ㄙㄜˋ)
qiong (ㄑㄩㄥˊ)xiong (ㄒㄩㄥ)
gua (ㄍㄨㄚ) 或
kuo (ㄎㄨㄛˋ)
kuo (ㄎㄨㄛˋ)
han (ㄏㄢˋ) 或
he (ㄏㄜˊ)
he (ㄏㄜˊ)

鼠鬚管

就在一個星期前,在 oikos 論壇得知另一個可以用的拼音輸入繁體中文的方案,叫做「中州韻輸入法 RIME」。它是跨平臺、開放源碼的輸入法引擎方案。在linux平臺名叫「ibus-rime」,在Windows平臺名叫「weasel/小狼毫」,它在Mac OS X平臺的名稱是「squirrel/鼠鬚管」。以毛筆種類來稱呼,很別緻。

目前的版本號碼是 0.9.14.5,還沒到 1.0,有點嚇人。但是使用這一個星期以來,我決定從 QIM 轉到「鼠鬚管」來。還沒有遇到不成熟、不相容的問題。上述的臺灣慣用發音,都有包含在內。目前唯一不如人的,是所有的設定都沒有程式界面,反而要使用者打開設定的文字檔,自己加入、更改設定指令。所幸它的網頁上有許多現成的設定指令可以參考。我還能接受。輸入法選單 (顯示幕選單條右上角) 選擇了「鼠鬚管」後 (圖像是方框裏有個「中」字),再次進入這個輸入法選單則會出現與「鼠鬚管」相關的選項列在中區段,如下圖。選擇「Settings……(設定)」則會請 Finder 叫出設定檔的資料夾,方便點選某個設定檔案打開編輯。


鼠鬚管的設定

參考了網友 Pingveno《在 Mac 使用中州韻輸入法》、網友部落格 Beyond the Void 裏的文章《推薦一個神級輸入法——Rime》,以及各式修改設定的集散地《RIME定製指南》,我做了如下的設定:

1. default.custom.yaml
     * 除了內定的拼音 (朙月拼音) 之外,再多列了可以追加聲調的拼音 (地球拼音)、朙月拼音・語句流、以及注音。
     * 把候選字的選單長度,從內定的5個升到9個。
     * 把中西文臨時切換鍵,從 shift 改成 control。
     * 修改時可以參考 default.yaml 裏所列的整體設定的語法。

patch:
  schema_list:
    - schema: luna_pinyin   # 朙月拼音
    - schema: terra_pinyin  # 地球拼音 dì qiú pīn yīn
    - schema: luna_pinyin_fluency  # 朙月拼音・語句流
    - schema: bopomofo      # 注音
  "menu/page_size": 9  # 候選字的選單長度
  ascii_composer/switch_key:
    Shift_L: noop
    Shift_R: noop
    Control_L: inline_ascii
    Control_R: inline_ascii 



2.  luna_pinyin.custom.yaml
     * 把「朙月拼音」內定的減號鍵、等號鍵、逗號鍵、句號鍵借去當候選字選單的游標移動鍵,關掉,恢復本來標點符號兼候選字送出鍵。
     * 把圓括弧鍵對應,從全形圓括弧改成半形。
     * 修改時可以參考 luna_pinyin.custom.yaml 裏所列的整體設定的語法。
patch:
  "key_binder/bindings":
    - accept: minus
      send: minus
      when: has_menu
    - accept: equal
      send: equal
      when: has_menu
    - accept: comma
      send: comma
      when: has_menu
    - accept: period
      send: period
      when: has_menu
  punctuator/half_shape:
    "(": "("
    ")": ")"
  3. squirrel.custom.yaml
     * 候選窗從直向改成横向顯示。
     * 候選窗口圓角半徑設成5。
     * 配色方案設成 google 模式。
     * 修改時可以參考 squirrel.yaml 裏所列的整體設定的語法。     
patch:
#  us_keyboard_layout: true      # 鍵盤選項:應用美式鍵盤佈局
#  show_notifications_when: growl_is_running  # 狀態通知,默認裝有Growl時顯示,也可設爲    全開(always)全關(never)
  style/horizontal: true        # 候選窗横向顯示
#  style/font_face: "儷黑 Pro"    # 我喜歡的字體名稱
#  style/font_point: 21          # 字號
  style/corner_radius: 5       # 窗口圓角半徑
#  style/border_height: 0        # 窗口邊界高度,大於圓角半徑才有效果
#  style/border_width: 0         # 窗口邊界寬度,大於圓角半徑才有效果
  style/color_scheme: google      # 選擇配色方案

# 註:預設的配色方案及代碼(指定爲 style/color_scheme )
#   碧水 - aqua
#   青天 - azure
#   明月 - luna
#   墨池 - ink
#   孤寺 - lost_temple
#   暗堂 - dark_temple
#   星際我爭霸 - starcraft
#   谷歌 - google
這些設定檔的語法:
  • 忽略「#」字元之後的字串,把它們當成註解。要關掉某行設定,但是又不想整行刪掉,也許以後還會用到,就把這「#」字元放在行首。
  • 每一個設定檔,都有副檔名「.yaml」。
  • 每一個設定檔想要修改自己的喜好,要另外在檔名有「custom」的設定檔。如果資料夾沒有,則自己建立一個。例如 default.yaml (所有預設值) 要修改,要把設定值寫在 default.custom.yaml 這個檔案裏。
  • 「custom」的設定檔內,只能出現一次「patch:」,所以,所有後來繼續追加的設定,都要寫在它的管轄範圍。
  •  用「縮進 (indent)」來表示屬於某個指令的管轄範圍。每層級內縮兩個空格。
修改了設定檔案,存檔後,記得要在輸入法選單上選擇「Deploy」(部署、套用) 就會生效。如果沒效果,應該是設定的指令語法有誤,很可能是內縮層級沒做好。

鼠鬚管使用心得

 以下是我目前從奇易輸入法轉移到鼠鬚管的心得:
  1. 不需要加音調。
  2. 隨時都是選字模式,不需特別按space bar。
  3. 按space bar是把首選字送出。
  4. 按esc直接清空input buffer。
  5. 按return可以直接把拼音或英文字送出。
  6. 刪節號是 ^  破折號是 _
  7. 左右方括號鍵對應到「」【】〔〕[] 左右大括號對應到『』〖〗{}
  8. \ 對應到 、\\  
  9. ~$%*<>/ 這些按鍵都有多個以上的中文字型符號對應。
  10. 以上符號鍵的定義都可以自己在 luna_pinyin.custom.yaml 設定檔案裏自己修改。
  11. 數字直接以英數模式送出。數字緊接著的句點會以英數模式送出。冒號也是。
  12. 要用到英數模式的逗號、句點、左右圓括弧 (這已經從設定檔改好了),只能用西文模式按出。
  13. 臨時的西文模式可以按一下 SHIFT 鍵進入 (可以改成按 CONTROL),再按一次跳出。
  14. 按 Caps Lock 鈕也會進入西文模式,但是字母一律大寫。
  15. 按逗號、句號等標點符號,就直接送出目前的首選字串。
  16. Facebook message 收信人欄,這些會動態依照使用者鍵入字符搜尋資料庫的行為,Squirrel不相容。在文字欄除了中文字之外,還會留有拼音。
  17. 左、右箭頭按鍵:在拼音輸入緩衝區裏移動游標;上下箭頭按鍵:移動候選字的選擇 (這些行爲原先是以直向候選清單而設計,不會因爲橫向候選清單而改變);Page Up 與 Page Down 鍵:候選字換頁。
  18. 按下 control ` 可以叫出操作模式清單,例如,要換成「地球拼音」、「朙月拼音・語句流」、「注音」,或者半形、全形切換,中文西文模式切換,繁體簡體切換。按下模式的編號即可切換,如果不要做任何更動,按esc。
  19. 「朙月拼音・語句流」模式,有點類似奇易輸入法輸入暫存區、候選字清單兩層的概念。選字、改字都先在輸入暫存區,最後在打標點符號時或按return鍵才把整個暫存區內的「句子」整個送到前端應用程式。而「朙 (ㄇㄧㄥˊ) 月拼音 luna pinyin」則是在候選清單選了詞/字後就直接送到前端了。
  20. 所選的詞/字也會自動學習,記錄到使用者的詞庫裏。
  21. 如果選用鼠鬚管的注音,有個很重要的不同點 (與一般常用的注音比較),那就是第一聲不可用空格鍵,而是不按任何聲調鍵代表第一聲,繼續按第二字的注音。這是因爲整個輸入法引擎的設計理念裏,空格鍵是把候選字送出。如果這個第一聲的字還要接受後續的同音字詞庫校對,則還不能把它「送出」,要把它留在輸入法裏。
  22. 【注音】如果要的是注音的拼法,可以拼好後按 shift-return 送出,例如 朙 (ㄇㄧㄥˊ)。