# gcin 使用手冊

eliu
2009-02-03

本文使用 UTF-8 編碼，請使用支援 UTF-8 編碼的編輯器，例如：gedit。

## 1. 各平台上的安裝方式

### 1.1. Mandriva

    # urpmi gcin-X.X.X-liu_mdk.i586.rpm

或

    # rpm -i gcin-X.X.X-liu_mdk.i586.rpm

### 1.2. Debian

#### 1.2.1. gcin 的安裝方式

    # aptitude install gcin

或

    # dpkg -i gcin_X.X.X-X~X_iX86.deb gcin-qt3-immodule_X.X.X-1~X_iX86.deb

### 1.3. Fedora

    # yum install gcin

### 1.4. 下載 tarball 自行編譯 gcin

如果使用 .tar.bz2 安裝者， table path 是 /usr/local/share/gcin/table ，而不是 /usr/share/gcin/table ，預設的 compile flags 是 -g，這樣如果 gcin 如果有 coredump 時可以方便 debug 且回報給作者 (gcin 的 source code 不要 remove 掉)，不過 compile 出來的可執行檔的大小大很多，如果不喜歡，可以在 ./configure 後修改 config.mak ，把 OPTFLAGS=-g 改成 OPTFLAGS=-O 。

#### 1.4.1. gcin-x.x.x.tar.bz2 的安裝步驟 (適用於各平台)

    $ tar xvfj gcin-x.x.x.tar.bz2
    $ cd gcin-x.x.x
    $ ./configure
    $ make
    su as root
    # make install
    logout & login

由 gcin-x.x.x.tar.bz2 自行編譯需要 GTK+ devel、Qt3 devel、Qt4 devel。

#### 1.4.2. 在 Mandriva 自行編譯 gcin

在 Mandriva 需要 install libgtk+2.0_0-devel & libqt3-devel & libqt4-devel 這三個 .rpm，不過各家的名字可能不太一樣，可能要找一下。另外，你還需要 install pkgconfig 這個 .rpm 。

#### 1.4.3. 在 Debian 自行編譯 gcin

    # apt-get update
    # apt-get build-dep gcin
    # apt-get source gcin
    # cd gcin-X.X.X（此處填入 gcin 的版本號）
    # dpkg-buildpackage -b

#### 1.4.4. 編譯自己的 gcin rpm

1. 安裝 libgtk+2.0_0-devel 這個 rpm。

2. $ tar jxvf gcin-x.x.x.tar.bz2 建立編譯目錄/檔案

3. 執行 .tar.bz2 內的 gcin-0.x.x/setup-rpm，這個 shell script 會幫你把 environment 設定好。

4. $ cp gcin-x.x.x.tar.bz2 ~/rpm/SOURCES

5. 在 gcin-x.x.x 裏面執行./configure 完後，會有一個 gcin.spec (這是給 Mandriva 用的，其它的 distribution 可能要稍微修改一下。)

6. # rpmbuild -ba gcin.spec (等 compile 完，就可以在 ~/rpm/RPMS/i586 看到你的 .rpm)

## 2. 使用 gcin

### 2.1. 介面簡介

按 ctrl-Space 叫出 gcin 視窗後，在第一排的注音輸入的按鈕 (button) 按滑鼠右鍵 右鍵可以叫出 gcin-tools window 設定視窗； 按 mouse 左鍵可以叫出符號輸入視窗。

### 2.2. 詞音輸入法

- 由於 一 與 不 同音字詞過多，輸入此兩字的注音應該以口語發音為主。 譬如,輸入 不會 , 不 應該輸入第2聲。

- 在詞音中按向上鍵可以查詢近音字，如 ㄥㄣ ㄓㄗ

- 當輸入一個詞的前兩個字的注音，就會跳出選詞的視窗,此時可以按 shift + 數字來 選詞，也可以不予理會,當輸入下一個字時，視窗會自動關閉。 你可以在 gcin 設定中 把這項功能關掉。

- 如何加入新詞？把 cursor (游標) 移至要存的詞句的開頭，按下 shift-Enter，則會自 cursor 所在位置存到編輯區的結尾，cursor 也會自動跳到結尾，方便繼續輸入。

- 標點符號與特殊符號可不可以存成詞？只要字有在注音表內就可以存成詞，請參考前面的說明，支援半型字。

- 在詞音中按 control-u 可以把整個編輯區的內容清除。

- 如果加錯詞怎麼辦？按滑鼠右鍵叫出設定視窗後，使用「詞庫編輯」的功能，你剛才加的詞在檔案最後。修改或刪除成正確的，輕聲是 '1'。在 gedit 中要用 UTF-8 儲存，不要弄成 Big5 了。

- 你可以在注音表中自己加入或刪除想要的符號或字

      $ cd ~/.gcin
      $ phod2a pho.tab > pho.tab.src  (轉成文字檔)
      $ gedit pho.tab.src
      $ phoa2d pho.tab.src            (轉成 gcin 的 pho.tab)

### 2.3. 詞音標點符號輸入

取發音的第一個注音符號 + 輕聲(‧) or 1/2/3/輕 聲 如果要輸入注音符號, 就按向下鍵或空白鍵去選

      ㄐ   。  (句點)
      ㄉ   ，  (逗號)
      ㄇ   ：  (冒號)
      ㄨ‧        ？  (問號)
      ㄈ   ；  (分號)
      ㄊ   ！  (驚嘆號)
      ㄊ   他
      ㄊ   她
      ㄊ‧        他 (由於！的注音是ㄊ，如果不想造成困擾，就用這一個。)
      ㄊ‧        她
      ㄋ   你
      ㄋ   妳
      ㄉˋ 、  (頓號)
      ㄉˊ ‧  (點)
      ㄑ‧        ＄  (錢)
      ㄒ‧        ＊  (星)
      [     『
      ]     』
      [     「  (直接按中括號 '[' ，這個最容易使用)
      ]     」  (直接按中括號 '[' ，這個最容易使用)
      ㄌ‧        了
      ㄌ2  –  (連接號)
      ㄌ    …  (省'略'號)
      ㄌ   了
      ㄇ3  《  (書'名'號)
      ㄇ4  》
      ㄆ4  —  (破折號)
      ㄒ   ℃  (攝氏 Celsius)
      ㄒ2  ㏄  (毫升)
      ㄉ˙ 的
      ㄍ   個
      ㄍ‧        ♂  (公)
      ㄇ‧        ♀  (母)
      ㄇ‧        嗎
      ㄇ‧        麼

酷音輸入 的 shift + ",./;'" 也可以用 現在滑鼠的指標移到符號視窗的按鈕，約一秒鐘會顯示對應的注音按鍵提示，方便學習。 使用許氏鍵盤者某些符號會不能用，例如 '。' ，這是許氏鍵盤先天的問題。

要輸入「」『』《》 還有一種方法就是，用 [ ] 兩個鍵，輸入以後可以用空白鍵選擇。 在詞音中可以輸入中括號 [] ，由於詞庫中 [] 有定義各種括號、引號及書名號的組合，這邊就可以用預選詞的方式來選擇你要的括號。

gcin 0.8.8 後的版本可以用注音輸入半/全形 數字 (0..9 及減(-)) 及 用 [] 鍵輸入 '()[]{}'，現在也可以加入含有數字的詞，譬如：「7月, 5點, 3個」。你也可以用這來儲存電話號碼，只要用注音輸入姓名，然後用 shift 選就可以了。例如：可以加入「周潔輪：0935-123456」。

gcin 1.4.0 後的版本，可用類似微軟新注音前導字元的方式輸入符號，用法為：在詞音輸入法中文輸入的狀態下，按一下 ` (grave，位於鍵盤左上方，與 ~ 同鍵)，再按鍵盤上任何可輸入實體字元的按鍵，就可以輸入各種不同的符號，若想知道可輸入哪些符號，可參考 Hyperrate: 整理新注音前導字元 ` 可以輸入的符號。

### 2.4. 自訂符號表

如果要修改符號輸入視窗，編輯 ~/.gcin/symbol-table ， gcin 會偵測檔案是否有改變， 如有變動就自動重新載入 symbol-table 這個檔。

如要修改 Alt-Shift-key 送出的字串，修改 ~/.gcin/phrase.table 即可。

### 2.5. gtab 輸入法

#### 2.5.1. 行列輸入法說明

葉光哲(老刀)先生根據行列輸入法發明人–廖明德先生提供的對照檔，整理了支援 CJK 七萬餘字的行列輸入法表格 (包含 Unicode 前 20902 字、一些特殊符號、與 Extension A & B), gcin 1.4.3 pre9 以後的版本已加入此表格。相關討論可見 Hyperrate| 新版 OpenVanilla 行列輸入法表格。

如要使用此表格，請編輯 gtab.list (位於 /usr/share/gcin/table/gtab.list 或 $HOME/.gcin )，將：

    行列 8 ar30.gtab ar30.png

改成

    行列 8 ar30-big.gtab ar30.png

退出 X window 再重新進入後，執行 gcin 即可。

#### 2.5.2. gcin 的行列 & 倉頡(.gtab) 可不可以輸入詞 ?

倉頡、行列輸入法中，現在可以直接輸入 linux，就可以跑出 linux，其餘的輸入法可以自己加到 .cin 後重新執行 gcin2tab。還有 (gnome kde gaim gcin xmms xine gedit kate kedit adsl hbo tvbs dvd vcd lcd)

新加入的 keys 最好不要與原有的重複，如果原有的本來就重複，那就沒關係。

只要把詞定義在 .cin 後面即可，然後執行上述的步驟，以下是幾行 examples

    ...
    tw 台灣
    down 下載
    talk 聊天
    net 上網

#### 2.5.3. 那可不可以與單字重覆定義按鍵呢？

可以的，在按空白鍵後就可以選字 or 詞。

#### 2.5.4. gcin 有嘸蝦米輸入法可用嗎？

以下的 嘸蝦米 table 僅供測試用，如果有長期使用，請購買合法版權。

    $ /usr/share/gcin/script/noseeing-inst

logout & login 按 ctrl-alt-9 就可以開始用。 可以用 gcin-tools 把嘸蝦米設定成內定的輸入法。

#### 2.5.5. gcin 的拼音輸入法可以不打音調嗎？

pinyin 輸入法必需打音調。輸入拼音後，按 1/2/3/4/5/空白鍵 會進入選字狀態，其中，按 1 或空白鍵時，都只會顯示第一聲的字。

gcin 另有一個 通用拼音輸入法 ，可以不必打音調，可於 Hyperrate: 通用拼音 找到 cin 檔與相關討論。這個通用拼音輸入法的改編版，輸入拼音後，按 空白鍵 會顯示 1/2/3/4/5 聲的字，且支援以前導字元的方式輸入符號。

### 2.6. 按鍵功能一覽表

部份按鍵在某些 Window Manager 或 Application 中可能無法作用。本頁沒有「剪貼區管理視窗(gcb)」的用法。

    *                               gtab輸入法拆碼中代表任意數量字元 非gtab輸入法中輸出*或＊
    ?                               gtab輸入法拆碼中代表任意單一字元 輸出?或？
    `                               gtab輸入法中開啟同音字選擇視窗
    <                               注音輸入法顯示上一頁重覆字
    '                               詞音中輸出全形、符號
    h                               詞音 vi 編輯模式遊標左移一個字元
    l                               詞音 vi 編輯模式遊標右移一個字元
    Q                               詞音許氏鍵盤排列時可選擇同音字(跟向下鍵一樣)
    q                               詞音許氏鍵盤排列時可選擇同音字(跟向下鍵一樣)
    x                               詞音 vi 編輯模式刪除一個字元
    Alt+Shift+按鍵                        輸出phrase.table定義的字串
    Alt+Space                       可設定為輸入法狀態切換開關
    BackSpace                       清除一個拆碼 清除緩衝區的一個字元
    CapsLock                        詞音/日本anthy 切換中英文狀態
    Ctrl+Alt+Space                  在輸入視窗畫紅色的 X 用以協助除錯
    Ctrl+Alt+,                      符號視窗開關切換
    Ctrl+Alt+0                      切換為內碼輸入法
    Ctrl+Alt+3                      切換為注音輸入法
    Ctrl+Alt+6                      切換為詞音輸入法
    Ctrl+Alt+=                      切換為日本anthy輸入法
    Ctrl+Alt+g                      輸出前一次的字串
    Ctrl+Alt+r                      輸出前一次的字串
    Ctrl+Alt+【-1245789=[\]`】    切換為gtab輸入法
    Ctrl+Shift                      循環切換輸入法
    Ctrl+Shift+;                    在非XIM模式輸出全形：符號
    Ctrl+Space                      輸入法狀態切換開關
    Ctrl+e                          詞音切換 vi 編輯模式
    Ctrl+u                          清除詞音緩衝區
    Ctrl+按鍵                     輸出phrase-ctrl.table定義的字串
    Delete                          刪除緩衝區遊標所在的字 刪除內碼輸入法的一個拆碼
    Down                            詞音中選擇同音字
    End                             關閉選擇視窗並移動到緩衝區末端
    Enter                           輸出緩衝區內容
    Escape                          清除所有拆碼 關閉gtab同音字選擇視窗
    F11                             日本anthy輸入法中呼叫 kasumi 管理模式
    F12                             日本anthy輸入法中呼叫 kasumi 加詞模式(先圈選想加的詞再按 F12)
    Home                            關閉選擇視窗並移動到緩衝區最前端
    Left                            關閉選擇視窗並在緩衝區左移一個字元
    PageDown                        gtab/日本anthy 輸入法顯示下一頁重覆字(若在末頁則回到第一頁)
    PageUp                          gtab/日本anthy 輸入法顯示上一頁重覆字(到第一頁為止)
    數字盤的+鍵                        gtab輸入法顯示下一頁重覆字(若在末頁則回到第一頁)
    數字盤的-鍵                        gtab輸入法顯示上一頁重覆字(到第一頁為止)
    Right                           關閉選擇視窗並在緩衝區右移一個字元
    Shift                           可設定為 詞音/日本anthy 切換中英文狀態
    Shift+Enter                     詞音新增詞(從遊標所在位置到緩衝區末端)
    Shift+Space                     全形狀態切換開關 可設定為輸入法狀態切換開關
    Shift+按鍵                    可設定在gtab狀態中取代「Alt+Shift+按鍵」
    Shift+數字                    詞音中選擇候選詞
    Shift+標點                    詞音中輸出全形標點符號
    Space                           拆碼輸入完成顯示候選字 翻頁顯示重覆字 輸出第一個候選字 輸出半形或全形空白 注音及詞音狀態下表示音調的一聲
    Tab                             可在詞音中代替Enter鍵輸出緩衝區內容 可設定為詞音切換中英文狀態
    Up                              詞音中選擇近音字
    Windows+Space                   可設定為輸入法狀態切換開關
    滑鼠左鍵                            符號視窗開關切換 系統列繁體轉簡體開關切換
    滑鼠中鍵                            選擇輸入法
    滑鼠右鍵                            執行gcin-tools 系統列顯示選單
    滑鼠滾輪往上                      符號視窗循環切換成上一組符號表(滑鼠遊標須在符號視窗範圍內)
    滑鼠滾輪往下                      符號視窗循環切換成下一組符號表(滑鼠遊標須在符號視窗範圍內)

## 3. gcin FAQ

### 3.1. 為什麼有時候gcin的輸入視窗不會跟著程式的游標 ?

如果是 GTK(gnome) 的程式，可能你沒有設定 GTK_IM_MODULE=gcin， QT 的程式必須在在 qtconfig 設定 XIM over-the-spot。如果你的 QT 支援 QT_IM_MODULE，只要設定 QT_IM_MODULE=gcin就可以了。

### 3.2. 如何在非 gnome environment(如 KDE) 修改 gcin 顯示的 button 外觀？

執行 gnome-theme-manager 可以選擇主題, 修改外觀. 但是必須在 KDE startup script 中執行 gnome-settings-daemon.

### 3.3. 可以啟動多個 gcin 嗎？

XIM name 是由環境變數中 XMODIFIERS=@im=XXXX 裏面的 XXXX自動設定 export XMODIFIERS=@im=gcin_test

一般程式就可以用 以下方式來控制要連接到那一個 XIM server

    export XMODIFIERS=@im=gcin_test

### 3.4. 可以在遠端使用 gcin 嗎？

gcin 有支援遠端的功能。

勾選 設定 (gcin-tools) → 內定輸入法&開啟/關閉 → 遠端 client 程式支援 這個選項，內定是 port 9999，如果9999 被佔用，會自動往下尋找 10000、10001……。gcin im client 會從 XMODIFIERS 自動去找對應的 port。只是如果你有用 IP table，就必須打開對應的 port。

那如果 gcin server 在 firewall/NAT 裡面，client 在 firwall 外面，然後是用 ssh X11 forward 方式，有兩種解決方式：

- 一種方式是用 XIM

      $ export GTK_IM_MODULE=xim
      $ export QT_IM_MODULE=xim

- 也可以用在 remote 另外執行一個 gcin 的方式，變成直接 local 的 connection

      $ export  XMODIFIERS=@im=gcin2
      $ gcin &
      $ gedit .......

未來 gcin 有可能會用 X11 ipc 的方式再弄一個傳輸方式，由於遠端的需求很少，而且有替代方式，可能會等到真的閒到無聊的時候才可能去弄。目前 XIM 一個嚴重的缺陷是XIM server 結束時，某些情況會造成 client 跟著結束或鎖死的情況，不知道是 XIM 設計的問題還是 X11 的問題。XIM 的另外一個缺陷是不支援 KeyRelease 的 event，造成沒辦法在詞音中使用 Shift 切換中/英。

### 3.5. 使用者的 gcin 資料毀損，要如何還原成 gcin 原來的設定？

執行

    $ rm -fr ~/.gcin

當然了，使用者自己的詞庫也跟著不見。使用者可以 copy 此目錄來複製 gcin 的設定。

### 3.6. 如何利用 xxx.cin 新增中文輸入的方式？

1. 如果你的 .cin file 仍然是 big5 編碼，請先將檔案的編碼轉換成 utf-8

       $ mv file.cin file.cin.big5
       $ iconv -f big5 -t utf-8 file.cin.big5 > file.cin

2. 將 cin 檔轉換成 gtab 檔

       $ gcin2tab file
       # cp *.gtab /usr/share/gcin/table

3. 編輯 /usr/share/gcin/table/gtab.list ，依其他輸入法的格式加入設定：

        輸入法 數字 gtab檔 Icon檔

   例如：

        行列 8 ar30.gtab ar30.png

4. 按 control-alt-數字鍵，切換到你在 gtab.list 中定的數字鍵。注音與詞音是固定在 3 & 6 鍵上，不能更改的。執行 gcin-tools 可以設定內定的輸入法。

### 3.7. 在 gnome-terminal 等軟體無法用 ctrl-atl-???? 切換輸入法，該怎麼辨？

其實有更好的切換方法，就是用 Ctrl-Shift。

譬如你是用行列輸入法，想要與注音循環切換：

gcin-tools → 輸入法開啟關閉→使用 (選 注音 & 行列) , 第一次內定選行列 設定完成之後，就可以用 Ctrl-Shift 循環切換 注音/行列

### 3.8. gaim 及 gqview 內使用詞音時按 enter 無法送出編輯區內容？

這是因為某些程式會把 enter 吃掉，沒有送給 gcin 處理，可能解決辦法有：

1. 使用 Tab key

2. 中文輸入狀態可使用 shift-space

gaim 裏面有選項可以設定成用 ctrl-Enter 送出內容，這樣就可以在 gcin 內用 Enter。

### 3.9. 如何使用 utf8 encoding？

    export XMODIFIERS=@im=gcin_utf8
    export LC_ALL=zh_TW.UTF-8
    gcin &
    gedit

這個 gedit 就可以以注音輸入(方方土)

### 3.10. 我想使用倉頡行列的重複字選擇鈴聲，但是嫌聲音太長，有辨法解決嗎？

gcin 的嗶聲是呼叫 X 的 XBell() 函式，你可以用 xset b 30 1000 100 設定鈴聲音量、頻率、與長短，但這個方法會影響到整個系統的鈴聲。

如果只想設定 gcin 的鈴聲音量，可升級到 gcin 1.4.4 以後的版本。gcin 1.4.4 以後的版本支援在 ~/.gcin/config/gcin-bell-volume 內自訂鈴聲音量，值必需介於 -100 至 100 之間 (內定值是 -97)。例如：

    echo 50 > ~/.gcin/config/gcin-bell-volume

hyperrate 上關於鈴聲的相關討論

### 3.11. gcin 可以在使用某種輸入法時，顯示另一種輸入法的拆碼，以幫助使用者學習輸入法嗎？

有人反應：

    >  關於嘸蝦米打字時，底下會出來所有的拆碼
    >  這點實在是好啊，（因為小弟雖然用嘸蝦米用了一段時間了，不過很多字都還不是
    >  最簡碼，所以非常感謝這個設計，也因為這個設計讓小弟的嘸蝦米可以再進步
    >  所以，想問，有沒有可能像 MS 那樣，
    >  打注音字出來 嘸蝦米的拆碼參照？
    >  如…
    >  打:ㄅㄛ/ 出來 「嘸 PPD」這樣？

有啊，按 ctrl-alt-3 輸入注音 & 選字，就會顯示 設定 (gcin-tools) → 內定輸入法 & 開啟/關閉 → 第一次內定 的所有的可能拆字。如果沒有指定內定的 .gtab 輸入法，則顯示最近一次的 gtab 輸入法。

gcin 和 windows 的不一樣， 是直接顯示你內定使用的輸入法，不需要另外去設定。所以，你也可以用 gtab 的拼音輸入法去查詢倉頡等 gtab 輸入法。

另外，如果字的某部份忘了如何拆，你可以用 * or ? 萬用字元 (wildcard) 來幫助你選字。

gcin 0.6.2 後的版本有類似嘸蝦米的同音字查詢，按 ` (backquote) 後就會出現注音的視窗，輸入要查詢的同音字就可以了。

如果需要查詢許多字的讀音，可使用 設定 (gcin-tools) → 剪貼區 注音查詢 來大量查詢。從網頁或文章中直接選取整段文字，開啟 剪貼區 注音查詢 後即可標示注音，也可在裡面輸入字，用滑鼠選取後，按 自剪貼區更新 。

### 3.12. 為什麼倉頡按第二鍵後會跑出一些字，選字視窗中數字的順序還會跳？

譬如：按 AA日日後

       1昌 2昍   5曝 6暻 7暘   0暍

這是引導初學者按鍵的功能，5曝代表'曝'是在5這個行(TGB廿土月)上。 34 是空白，表示沒有任何字。

如果不喜歡，有選項可以關掉 ( gcin-tools → 倉頡/行列… → 顯示部份符合的字 )。

如果是嘸蝦米，則顯示的號碼必須加一。

### 3.13. gtab(倉頡、行列) 輸入法中要如何加入新詞？

用詞音輸入法加入。在中文輸入的狀態下，把 cursor (游標) 移至要存的詞句的開頭，按下 shift-Enter，則會自 cursor 所在位置存到編輯區的結尾，cursor 也會自動跳到結尾，方便繼續輸入。

### 3.14. 許氏鍵盤注意事項：

如果使用許氏鍵盤，q 是用來選字詞。

### 3.15. KDE 中 gcin 的 window 為什麼不會跟著 cursor 移動？

你可以用 qtconfig 把 XIM input style 設定成 over-the-spot 就可以了。

### 3.16. gcin 的詞庫不夠多，想貢獻給 gcin 作者自己的詞庫，要怎麼做呢？

這樣就可以看到兩個 file 的差異：

    cd .gcin
    tsd2a tsin > your
    diff your gcin-0.x.x/data/tsin.src > diff.txt
    gedit diff.txt

注意看你的詞庫是否有那些現代人用不到的詞，這些沒用的詞只會增加詞音錯誤的機率。

### 3.17. 詞音輸入的視窗在打滿注音後會縮回去，看起來有點討厭。

注音輸入的區域的字型必須比編輯區的小個幾點就沒有這個問題。如果你有安裝日文字型，且使用 12/23/2004 以前的 fonts.conf，則還是會有縮回去的問題，請下載最新的 fonts.conf。

### 3.18. gcin coredump 如果要幫忙 debug，該怎麼做？

1. 首先先編譯 gcin

       cd gcin-0.x.x
       make clean
       ./configure
       make

2. make 完了之後，執行：

       ./tgdb

3. 執行 r

       (gdb) r

4. r 指令會開始執行 gcin， 在跑出來的 gedit 輸入一些字，gcin 掛了之後：

       (gdb) bt

5. 下了 bt 以後會有類似以下的訊息，把這個 post 出來。

   看起來可能像這樣：

       #0  0xffffe410 in ?? ()
       #1  0xbffff278 in ?? ()
       #2  0xffffffff in ?? ()
       #3  0x00000001 in ?? ()
       #4  0x40548e5d in poll () from /lib/tls/libc.so.6
       #5  0x404212e7 in g_main_loop_get_context () from /usr/lib/libglib-2.0.so.0

### 3.19. GTK_IM_MODULE/QT_IM_MODULE(qt 4.0 or Mandriva 2006) 使用 gcin 自己的 .so，和XIM相比，有何好處？

1. gcin 掛掉重新執行時比較不會有程式跟著一起掛掉的情形，現在可以直接在 gnome-terminal 下， pkill gcin ，不用擔心 gnome-terminal 會停在那邊不動 (mozilla-gtk2 除外，這是因為如果你有安裝 flash player，flash 會 open XIM 的 sesseion，X11 裏面的 XIM close 時在 server當掉時也會跟著當掉。)。

2. GTK2/QT 的程式 locale 即使設定成 zh_TW.Big5 也還是可以輸入所有的 UTF-8 字。

3. 詞音由於現在有了 key release event，現在也可以用 Shift 來切換中/英。

4. gcin 的協定對 input focus 的處理比 XIM 好。

5. client 直接 對 gcin server 互傳資料，不透過 X server，延遲會比較少。

6. 如果發現 gcin server 沒有在執行，會自動執行 gcin。

### 3.20. 大部份(Mandrake 10.0,10.1) 安裝 gcin 後即可直接使用，如果不行該怎麼辨？

執行

      export GTK_IM_MODULE=gcin

通常是設定在 /etc/sysconfig/i18n 。

gcin 會先使用 unix socket，如果不行，則使用 TCP port 9999 - 20000。

如果因為 firewall 的緣故無法使用， export GTK_IM_MODULE=xim 可以指定使用 XIM。

另外，如果你遠端也有 install gcin，可以 export XMODIFIERS=@im=gcin.remote，這樣就會在 remote 端自動執行一個新的 gcin。

目前支援很簡單的編碼以避免 plaintext 在傳送，未來可能會支援 SSL。

雖然目前是用很簡單的 encoding，如果 gcin 搭配 ssh X11 forwarding 應該是非常安全的，而且 data 不像 SSL 會變大，更適合在 low bandwidth 使用。

目前支援 GTK2 & QT，gcin 有提供非常容易使用的 API 介面供其他 terminal 使用，歡迎來把這部份完成，詳細的介面，請看 /usr/local/include/gcin-im-client.h 。

### 3.21. gcin 如果使用到自己的 IM_MODULE 時，且用 export GCIN_CONNECT_MSG_ON=tty (console) 會出現錯誤訊息：

1. connected to unix socket addr /tmp/gcin-????/socket-:0.0-xcin 或是

2. gcin client connected to server 172.x.x.x:9999

只需要一個 gcin 執行就可以，不需要為了同時支援 GTK_IM_MODULE/QT_IM_MODULE & XIM 而執行兩個 gcin process。

目前 OpenOffice 1.1.x GTK2 的版本好像是使用 XIM，1.9.x & 2.x 則是改成用 GTK_IM_MODULE。

1. mrxvt-gcin-0.4.1.tar.bz2 是一個使用 gcin IM client 的 mrxvt。

2. rxvvt-gcin.tbz 是一個使用 gcin IM client 的 rxvt (crxvt)。

如果你因為 install 其他的輸入法把 gcin 的設定弄亂，可以用 root 執行看看 /usr/share/gcin/script/modify-XIM

tsd2a 新增 "-nousecount" 的參數。由於現在 gcin 會統計詞的使用頻率，dump出來的 file 會有 usecount，如果你要比較兩個詞庫時會造成困擾，這時候就可以用這個參數。

### 3.22. Ctrl-Space 無法叫出 gcin 的視窗，檢查事項

一般看 environ variable 的內容可以用 printenv，由於可以設定 environ variable 的地方太多了，用開 terminal 的方式看，不見得一定符合應用程式用的實際值，所以還是直接用 proc file system 最準。

1. pgrep gcin 是否可以看到 gcin 的 process Id (一個數字)，如果可以，goto 3

2. 直接在 terminal 執行 gcin，看有什麼錯誤訊息。 如果最後一行出現的訊息是

            IMOpenIM failed. Maybe another XIM server is running.

   這表示 xcin 可能仍然在執行，試試 pkill xcin再執行 gcin 看看。當然，還是必須修改你的 X window 的 script把執行 xcin 的部份改成 gcin 才能把問題真正解決，也有可能你忘了 logout & login。

3. 檢查 XMODIFIERS 是否設定成一致的內容。

       $ pgrep gcin
       7438
       $ vi /proc/7438/environ

   這個 file 是這個 process 所有的 environ variables 的內容，檢查 XMODIFIERS 內容。你可以用同樣的方法檢查應用程式的內容，例如 firefox。

   gcin 的XMODIFIERS 可以不設定，但應用程式的就必須設定成 XMODIFIERS=@im=xcin 如果有設定，就必須一致，例如都設定成 XMODIFIERS=@im=gcin 也可以。

4. gtk2 (gnome) 程式檢查事項。

       $ gtk-query-immodules-2.0

   是否有底下的內容，

       "/usr/lib/gtk-2.0/immodules/im-gcin.so"
       "gcin" "gcin Input Method" "gtk20" "/usr/share/locale" "*"

   如果沒有，以 root 執行底下的 script 看看 /usr/share/gcin/script/modify-XIM 。

5. 檢查是否有設定 GTK_IM_MODULE=gcin 這個 environ variable。設定成 GTK_IM_MODULE=xim 也是可以用，只是 over-the-spot 會有問題，gcin 視窗不會跟著程式的游標移動，除非有安裝 gtk2 xim over-the-spot 的 patch，還是用 GTK_IM_MODULE=gcin 最好。

6. 如果是用 XIM，建議設定 export LC_CTYPE=zh_TW.Big5 。

### 3.23. 覺得 gcin 的釘子不好看，想要換掉。

有此需求的的人自己 替換 /usr/share/icons/gcin 。

### 3.24. gcin 0.9.8 替 .cin 新增 %space_style 的選項，後面的數字代表的意義：

    1:      嘸蝦米、大易
    2:      倉頡等
    4:      行列輸入法

有了這個，且在 gcin-tools 中設定成「由 .gtab 指定」，就可以自動設定空白鍵的選項，而且用 ctrl-alt- 切換輸入法時也會自動切換。

    %selkey 1234567890
    %space_style 2
    %keyname begin

### 3.25. gtab 中 %keep_key_case 選項是做什麼用的？

gcin 0.9.8 替 gtab 新增 %keep_key_case 的選項。

用在需要分別大小寫的輸入法，例如舊版的日文輸入表格。

            %space_style 4
            %keep_key_case          <---------------------------
            %keyname begin

### 3.26. 如何確定目前是使用 gcin 自己的 gtk/qt im module？

1. 可以先用 gedit or kedit 測試，在編輯區按 mouse 右鍵，menu 裏選輸入法，會顯示出目前正在使用的輸入法，如果是 gcin Input Method 就是對的，其他的是錯的。

2. 在terminal 用 export GCIN_CONNECT_MSG_ON=， 再執行自己要的測試程式， terminal (console) 會出現以下 message ：

       connected to unix socket addr /tmp/gcin-????/socket-:0.0-xcin

### 3.27. gcin 與 scim memory 使用比較

分別以 gcin 的詞音與 scim chewing 用 kedit/gedit/leafpad 輸入「測試」兩個字， 由於 scim 有數個 process，必須全部加起來。這個測試也比較 qt-im-module/gtk-im-module 的 memory 使用。

          vsz    rss    kedit-vsz  kedit-rss
    scim  80168  31312  47052      17368
    gcin  29132  8568   41840      16144

          gedit-vsz  gedit-rss  leafpad-vsz  leafpad-rss       (測試 gtk-im-module)
    scim  67148      16444      34084        9756
    gcin  61008      14924      26880        7884

kedit: 3.4.1 scim: scim 1.4.2 + scim-chewing 0.2.1 gcin: gcin 1.0.4

### 3.28. Mozilla Firefox 中 coredump，想看是不是 gtk-im module 造成的。

1. 試著去 compile firefox，把 error 回報 mozilla，改成直接 coredump。Mandriva 中的firefox是改成直接 coredump。

2. 在 make gcin 修改 config.mak 設定 OPTFLAGS=-g 去 compile，這樣才有 debug 的 information。然後用 root make install。

3. 當 coredump 發生時 gdb /usr/lib/mozilla-firefox-1.0.7/mozilla-firefox-bin core.xxxx 這邊這個可執行檔是要真正的那一個，不是 shell script。 core.xxxx 是 coredump 的 file。 這樣就可以看到 coredump 在那邊發生。

與 caleb 討論，所想到如何避免 flash player plugin open XIM，由於 flash player XIM 寫的有問題，有時候會造成 firefox coredump。gcin 是可以 compile 成不支援 XIM，但有時候又需要用(wine, rxvt-unicode)

其實很簡單，修改 /usr/bin/mozilla-firefox or /usr/bin/firefox 執行的 script 加入 unset XMODIFIERS 。原理是 gcin 如果沒有設定 XMODIFIERS 內定的 XIM name 就是 gcin， 把 XMODIFIERS unset 後，gcin 用 GTK_IM_MODULE=gcin 仍然可以輸入，但是 XIM 需要 XMODIFIERS 才能，這樣就達到防止 flash player open XIM。

### 3.29. 請問一下內定輸入法，是由那個設定檔來決定的？

~/.gcin/config/default-input-method

### 3.30. 使用 su 或 sudo 後，無法使用 gcin，該怎麼辦？

如果使用的 gcin 是 1.4.3 pre7 之前的版本(含 1.4.3 pre7)，可以這麼做：

設定 (gcin-tools) → 內定輸入法 & 開啟/關閉 → 遠端 client 程式支援 (port 9999-)

完成這個動作後，重新登入 X Window System 試試看。

如果用的 gcin 是 1.4.3 pre8 後的版本(含 1.4.3 pre8)，已支援 su root 的中文輸入，注意—要配合新的 libgcin-im-client.so.1.1.0 才可！

### 3.31. 在 KDE 的系統管理頁面無法使用 gcin，該怎麼辦？

問題同上。開啟設定中的 遠端 client 程式支援 (port 9999-) 並重新登入 X Window System 試試看。

### 3.32. 升級到 gcin 1.4.3 後，桌面多出三個方格是什麼東西？

gcin 1.4.3 pre 8 後的版本，整合了 gcb，gcb 是一個管理剪貼簿 (clipboard) 的小工具。

一般 X Window 會自動複製選取的內容，但如果你不小心再次選取到其他內容，原本複製的東西就會被新選取的內容所覆蓋，gcb 可以避免這種狀況發生。

gcb 提供了三個儲存格，在 gcb 的任一個儲存格上按右鍵可以設定儲存按鈕，每5秒鐘從剪貼區更新。按左鍵把儲存格的內容存到剪貼區。按中鍵可以選擇之前的剪貼區內容的改變。如果不想用，可以在 gcin-tools 內關掉。

### 3.33. gcin 支援輸入日文嗎？

gcin 1.4.3 pre13 以後的版本支援使用 anthy 來輸入日文。

使用方法：

1. 切換到「日本anthy」（廢話）

2. 開始打羅馬拼音

3. 按 enter 可輸出 buffer 中的內容

4. 按空白鍵可自動轉換「假名←→漢字」 「平假名←→片假名」「假名←→符號」（依 anthy dictionary 內容決定）

5. 再按一次空白鍵可選擇其它想轉換的內容 (當可轉換內容不止一種時)

6. 選字的選單設定與詞音的相同（可修改成用 1234 選詞）。

7. 與 UIM 一樣，可以用 Shift-Left/Right 調整詞的範圍。

8. gcin 1.4.4 後支援以 shift 切換日/英文輸入模式。

加字加詞的方法：

1. 可手動編輯純文字檔 $HOME/.anthy/private_words_default 例如加入「としば #T35*500 東芝」

2. 可用 kasumi ，如 圖 。

在 BBS 輸入日文時，請參考 在 BBS 輸入日文。

(如果不想使用 anthy，系統裡可完全不安裝 anthy 相關檔案。)

## 4. 注意事項

gcin 的 .cin format 與 .xcin 有些不同，並不支援 * 第三欄位，目前好像只有行列有使用，如果有需求時，可以加在 %quick 段落內。

把 gcin 一類的 XIM server kill 掉再重新啟動，容易造成 X window 底下程式運作不正常(特別是 mozilla)，最好還是 logout 再 login。

gcin 1.3.0 後，使用者可以在 ~/.gcin 裏加自己的 gtab.list *.gtab，gcin 會優先使用這裡的 files。

gcin 0.9.8 的 .gtab format 有變動，如果你不是使用 gcin 內附的 .gtab file，一定要用 gcin2tab 重新產生新的 .gtab file，否則會 coredump。

gcin 0.6.5 新增關掉 gcin remote client 支援的選項 ，如果你是 su 成另外一個 user，這個選項仍然必須打開，否則無法輸入中文。

## 5. 更多 gcin 相關資源

gcin 論壇

http://hyperrate.com/dir.php?eid=67

gcin 原始碼

http://www.csie.nctu.edu.tw/~cp76/gcin/download/

各平台 gcin 套件下載區

http://cle.linux.org.tw/trac/wiki/GcinDistros

各種輸入法表格下載

http://cle.linux.org.tw/trac/wiki/GcinTables

安裝額外的輸入法

http://cle.linux.org.tw/trac/wiki/GcinInstallTables

製作新的輸入法 cin 檔

http://cle.linux.org.tw/trac/wiki/GcinMakeCin