====== 自製 IBus 用的大易輸入法表格檔 ====== 來源:\\ http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=58116\\ http://wiki.debian.org.hk/w/Create_input_method_for_IBus\\ ===== 1. 製作輸入法表 ===== ==== 輸入法表範本 ==== 先由 /usr/share/ibus-table/tables/template.txt 取得輸入法表的範本 (template),可以把它複製至您的家目錄 (home directory): (若沒有此檔, 直接複製以下也行) cd cp /usr/share/ibus-table/tables/template.txt . 把檔案重新命名您要製作輸入法 (習慣上仍是以 .txt 結尾): mv template.txt Cantonese.txt 然後使用任何文字編輯器編輯範本檔案: gedit Cantonese.txt 以下是一個很典型的輸入法表範本 ### File header must not be modified ### This file must be encoded into UTF-8. ### Derive from the format of SCIM Table, so you can modify the table from ### scim-tables' table ### 輸入法表一定要使用 UTF-8 編碼 SCIM_Generic_Table_Phrase_Library_TEXT VERSION_1_0 ### Begin Table definition. BEGIN_DEFINITION ### 指定輸入法表的使用授權,常見授權包括 GPL 或 LGPL。 ### 留意現時大部份輸入法都有版權,請先查証才填寫此欄和分派輸入法表。 LICENSE = LGPL ### UUID 為一個識別碼用作識別不同的輸入法表。 ### 請自行用 uuidgen 產生另一個新 UUID 並取替以下值 UUID = 95af07bc-3fee-4541-ac74-c53e9a5fe342 ### SERIAL_NUMBER 為另一個識別碼用作識別此輸入法表檔案的不同版本。 ### 一般會用最後修改的日期時間來作 SERIAL_NUMBER ### SERIAL_NUMBER 的數值一定要小於 4294967296 (2^32) 的正整數。 SERIAL_NUMBER = 2010060801 ### 輸入法圖示檔案,可以為 PNG 或 SVG 檔案 。(為放便以不同大小顯示,SVG 會較佳) ICON = ibus-table.svg ### 此輸入法的名稱 (英文) NAME = Cantonese ### 此輸入法在不同語言下的名稱。(可以省略) NAME.zh_CN = 倉頡第三代 NAME.zh_TW = 倉頡第三代 NAME.zh_HK = 倉頡第三代 ### 本輸入法的簡單描述 DESCRIPTION = This is a template engine table for IBus Table. ### 此輸入法表製作者的姓名和電郵地址 AUTHOR = J. Random ### 此輸入法支援的語言 LANGUAGES = zh_CN,zh_HK,zh_SG,zh_TW ### 在狀態列顯示的提示字串。填上 CN 會被 gettext 翻譯成 "中"。 STATUS_PROMPT = CN ### 列出合法的輸入字元 VALID_INPUT_CHARS = abcdefghijklmnopqrstuvwxyz ### 鍵盤排列,一般為美式鍵盤 us LAYOUT = us ### Use auto_commit mode as default AUTO_COMMIT = FALSE ### Use full width punctuation by default DEF_FULL_WIDTH_PUNCT = TRUE ### Not use full width letter by default DEF_FULL_WIDTH_LETTER = FALSE ### Whether user are allow to define phrase, default is true ### You have to define the word construction rules below. ### For input methods which do not input phrases, set this to False USER_CAN_DEFINE_PHRASE = TRUE ### Whether support PinYin Mode, default is true. ### this feature is just for Chinese, set it to False if your IM is not ### Chinese. PINYIN_MODE = TRUE ### If true then the phrases' frequencies will be adjusted dynamically ### according your using frequency. DYNAMIC_ADJUST = TRUE ### Some characters whose frequencies should be fix all the time, e.g. ### some punctuations ### NO_CHECK_CHARS = ### Rules for constructing user defined phrase ### "ce" stands for "ci equal", a Chinese English :), means "phrase length ### equal to", thus ce2 -> phrase length equal to 2; and "ca" means "phrase ### length equal or above", so ca4 -> phrase length equal or above 4. ### p21 -> the 1st key of 2nd character in the phrase, and so on. ### Each rule separate via ";". ### Example below is a complete rule-set, ### because [2,2] ∩ [3,3] ∩ [4,+∞] = [2,+∞], which is the range of length ### of phrase. This have to be satisfied if you need ibus-table to build up ### your own inputed phrase via your daily using. RULES = ce2:p11+p12+p21+p22;ce3:p11+p21+p22+p31;ca4:p11+p21+p31+p41 END_DEFINITION ### Define the prompts of each valid input char. BEGIN_CHAR_PROMPTS_DEFINITION a 日 b 月 c 金 .... x 難 y 卜 z 重 END_CHAR_PROMPTS_DEFINITION END_DEFINITION ### Begin Table data. BEGIN_TABLE input_keys aim_chars freq input_keys aim_chars freq input_keys aim_chars freq END_TABLE ### Since some input methods use different table for every character to make ### phrase, such as ZhengMa, they need explict define the goucima (the ### phrase-building code for the given character), the format of every entry is ### "character\tgoucima\n". ### For the input method which just use the full code as word-building code ### just skip this field. The ibus-table will build the codes needed from ### above TABLE. ### if you don't need different word-building code, please comment out the ### next few lines with ###, just like these lines you are look at now. BEGIN_GOUCI character_1 goucima_1 character_1 goucima_2 END_GOUCI ==== 輸入法對照表 ==== BEGIN_TABLE 下面 就係輸入碼同字既對照表,可以有三欄,欄與欄之間一定要用 tab 分隔。例如以下 cantonese.txt 的輸入法表 BEGIN_TABLE fan 瞓 fun 瞓 ngam 啱 .... fai 鐨 fai 廢 fai 徽 fai 輝 fai 煇 fai 沸 *第一欄 (e.g. fan, fun, ngam) 就是輸入碼 *第二欄 (e.g. 瞓, 啱, 鐨) 就是對應字 *第三欄可有可無, 有的話就必定是一個數目字表示呢個字的預設選擇次數, 數字越大, 個字會排得前 d 例如你想打 fai 時 "癈" 排前過 "鐨", 你可以在兩字後家上數字 , 如下: fai 鐨 495 fai 廢 500 只要"癈" 的數字大過 "鐨" 那個, 那"癈"就會排前 ===== 2. 轉換輸入法表 ===== 輸成輸入法表後,請用 ibus-table-createdb 把輸入法表轉換成資料庫格式 (*.db) ibus-table-createdb -n Cantonese.db -s Cantonese.txt ===== 3. 安裝輸入法 ===== 然後把 Cantonese.db 複製至目錄 /usr/share/ibus-table/tables 中。 重新啟動 IBus 並在 IBus 偏好設定上加入新輸入法就可以了。 ===== 4. 以大易為例 ===== ==== 取得字根表 ==== 大易三碼表:ftp://ftp.isu.edu.tw/Windows/Chinese/input/dayi/da3.zip {{:os:linux:da3.zip|本地副本}} 大易四碼表:ftp://ftp.isu.edu.tw/Windows/Chinese/input/dayi/dayi13053.rar {{:os:linux:dayi13053.rar|本地副本}} 註:也可到 opensource.nchc.org.tw 下載,但因有授權聲明所以本人就不採用它了!需要的人請自行下載作業! 大易三碼表:http://opensource.nchc.org.tw/odp/others/OXIM/cin_tables/dayi3.cin.gz {{:os:linux:dayi3.cin.gz|本地副本}} 大易四碼表:http://opensource.nchc.org.tw/odp/others/OXIM/cin_tables/dayi4.cin.gz {{:os:linux:dayi4.cin.gz|本地副本}} 可參考 [[os:linux:gcin_大易輸入法的問題|]] ==== 重製字根表 for IBus ==== 利用底下的指令取得字根表,並且將字根表的空白改為tab,並且加上權重,然後將所有的大寫字母改為小寫字母 awk '/\%chardef begin/{f=1;next}/\%chardef end/{exit}f' dayi4.cin | awk '{count[$1]++}{print $1"\t"$2"\t"101-count[$1]}' | tr '[A-Z]' '[a-z]' > dayi4.txt ==== 修改 template.txt ==== 準備修改template.txt表頭資料,加上大易的相關資料,有修改的地方如下 ### 利用 uuidgen 指令產生一組UUID後貼到這裡. UUID = 730a0da0-20e9-45d9-befa-cbe59375be2d ### 可直接使用日期簡單省事 SERIAL_NUMBER = 20121010 ### 出現的圖示,這裡直接使用內建的圖型,可自己另行設計 ICON = cb-mode.svg ### The local names of this table, this is optional NAME.zh_CN = 大易 NAME.zh_HK = 大易 NAME.zh_TW = 大易 ### the gettext tools in runtime as 中. STATUS_PROMPT = 易 ### Valid input chars. VALID_INPUT_CHARS = ,./;'1234567890-abcdefghijklmnopqrstuvwxyz BEGIN_TABLE END_TABlE ### 把最後三行加上三個#號,表示註解,也就是不要用它啦 ### BEGIN_GOUCI ### character_1 goucima_1 ### character_1 goucima_2 ### END_GOUCI ==== 加入字根 ==== 將第2項做出來的檔案資料dayi4.txt的所有內容,複製貼上拷貝到template.txt中的BEGIN_TABLE和END_TABLE之間。做好之後假設存檔命名為dayi4_ibus.txt。 ==== 產生 IBus 字根檔 ==== ibus-table-createdb -s dayi4_ibus.txt -n dayi4.db ==== 重啟 IBus - 完成 ==== 將做出來的dayi4.db拷貝到/usr/share/ibus-table/tables底下 重新啟動 IBus 並在 IBus 偏好設定上加入新輸入法就可以了。 ==== Sample File ==== {{:os:linux:dayi4_ibus.gz|dayi4_ibus.txt}}\\ {{:os:linux:dayi4.db.gz|dayi4.db}}\\