next up previous
Next: 結語 Up: X Window 的 I18N 環境簡介 Previous: XOM 與 FontSet 設定

使用 XIM

在我們東方語系中,由於所用的字集字數太多,不可能將每個字都用一個單一鍵 盤上的按鍵來一一對映。這時,我們便需要一個特別的輸入法程式,來幫助我們做文 字輸入。當我們啟動輸入法程式,並且對著某個 Xi18n 應用程式來打字時,則鍵盤 上每個敲進去的按鍵都會被該輸入法程式攔截,經過解釋翻譯後,才將完成的中文 字送給應用程式。而這個「解釋翻譯」的過程就稱之為「組字」。通常依輸入法的 不同,每一個字都是由幾個字鍵組合而成,而輸入法程式最主要的工作,其實就是 「查表」的工作,將使用者所輸入的連續字鍵,經查表找出其對映的中文字,然後 再輸出給應用程式。

因此,當我們要進行輸入之前,我們必須要先啟動一個輸入法程式,接著讓我們的應用 程式與該輸入法程式連線。這樣子的連線方式可以設計成很多種,然而目前只有一種才 是標準的,即 X Window 內定的 XIM 協定。支援此協定的輸入法程式稱之為 XIM server,而支援此協定的應用程式則稱之為 XIM client。因為二者的關係就像是伺服 端與客戶端的關係一樣,客戶端請求伺服端提供中文輸入的服務。

XIM 伺服端與客戶端之間的連線,其實就是靠 I18N 的機制來達成,因此 XIM 協定其 實也是架構在 I18N 的基礎之上。除此之外,每個 XIM server 在啟動時,都會在目 前的 X Window 系統中註冊一個特別的 XIM server 名稱,用以示別。因此,每個 XIM client 在啟動時,除了要先設好 locale (即 LC_CTYPE) 以外,還必須設 好想要進行連線的 XIM server 名稱,如此連線才能順利進行。

設定 XIM server 名稱也是透過環境變數的設定來達成,其方式如下 (以 bash 為例):

export XMODIFIERS="@im=$<$XIM server 名稱$>$"
因此,當我們要使用 XIM server 來進行文字輸入時,我們必須要知道其註冊給 X Window 的 XIM server 名稱才行。

最後,我們總結一下一個 Xi18n 的應用程式,若要正常顯示中文、並且可以接受 XIM server 的中文輸入,所需的設定與啟動步驟 (假設您系統的 I18N 與 Xi18n 環境 都已沒問題,並且在 X Window 字型的設定部分都已完成了。同時也要注意 這個 Xi18n 程式必須支援 XIM 協定):

  1. 設定 locale:
    export LC_CTYPE=zh_TW.Big5

  2. 啟動 XIM server,並且要知道它的 XIM server 名稱。

  3. 設定 XIM server 名稱:
    export XMODIFIERS="@im=$<$XIM server 名稱$>$"

  4. 最後啟動 Xi18n 應用程式,注意啟動時要先設好 FontSet 的部分。



Tung-Han Hsieh 2000-10-16