本文詳述 xcin 與 XIM client 啟動的相關步驟。有關 xcin 的細部操作與 xcinrc
的設定細節，請參考 Usage 一文。

-------------------------
A. 適用平台:

目前 xcin-2.5 已知可以在以下的環境測試成功:

1. Debian Linux-2.1 (slink) on i386 on alpha:
        glibc-2.0.7/glibc-2.1.1, XFree86-3.3.2.3, zh_TW.Big5 locale.

2. RedHat-6.0 + CLE 0.8:
        Thanks to <platin@ms31.hinet.net>.

3. FreeBSD-4.0 current:
        Thanks to Keith Jang <jtjang@gcn.net.tw>

4. SuSE-6.0 + CLE:
        Thanks to Chester <B8502004@mail.ntust.edu.tw>

5. RedHat-5.2 + CLE 0.7 on alpha:
        Thanks to Chih-Wai Huang <cwhuang@linux.org.tw>

6. LinuxPPC:
	Thanks to <yuchia@bbs.ee.ntu.edu.tw>

我希望 xcin-2.5 可以正確地在所有的 Linux distribution 與 FreeBSD 系統中執
行，至於其他的 UNIX 系統目前尚不在支援之列。如果您有在其他環境下安裝測試成
功的經驗，麻煩您告訴我們一聲。


---------------------------
B. 啟動 xcin 與 XIM client:

xcin-2.5 是一個 XIM server, 它只能對 XIM client 輸入中文。故當您要測試時，
請先確定您的輸入對象是 XIM client 。有關各 XIM client 與 xcin-2.5 搭配的細
節，請參考第 C 節的說明，在此我們先以 xcin-2.5 套件內附的 testprog 程式做為
例子，詳述整個操作方式。

原則上，啟動 XIM server (即 xcin) 與 XIM client 的步驟有四:

1. 設定 locale:

   所謂的 locale 即代表您操作環境的語系，這是透過環境變數的設定來達成的。
   設定的方式有很多種，例如最簡單的，當您在一個視窗下執行:

   (在 bash 下)
        LANG=zh_TW.Big5; export LANG
   (在 tcsh 下)
        setenv LANG zh_TW.Big5

   則您在該視窗下的語系就會換成 zh_TW.Big5 了，包括字元處理 (LC_CTYPE) 以
   及訊息輸出 (LC_MESSAGES) 以及其他部分。此後您在該視窗下執行任何程式，只
   要該程式有支援 I18N 標準，則該程式就會以 zh_TW.Big5 語系運作。

   若您不希望將整個語系全部換成 zh_TW.Big5, 而只想將最主要的部分換過去，其
   他部分保持用英文語系就好，則您可以這樣設定:

   (在 bash 下)
        LC_CTYPE=zh_TW.Big5; export LC_CTYPE
   (在 tcsh 下)
        setenv LC_CTYPE zh_TW.Big5

   這是將字元處理換成 zh_TW.Big5 語系，這是最重要的部分，當您要執行任何 I18N
   程式且希望該程式用我們的語系來運作，則您必須設好這部分。

   若您希望更進一步，希望程式的訊息輸出也是中文的話，您必須再多設定這一步:

   (在 bash 下)
        LC_MESSAGES=zh_TW.Big5; export LC_MESSAGES
   (在 tcsh 下)
        setenv LC_MESSAGES zh_TW.Big5

   請注意，您必須先完成上述設定之後，往後執行的程式才會使用我們所指定的語系。
   當然，您也可以將上述設定加入您的 $HOME/.profile (for bash) 或 $(HOME)/.cshrc
   (for tcsh) 中，每次您登入系統後就自動執行，而不需要每次都設定一次。

2. 執行 xcin 程式，若成功啟動，您會見到如下訊息:

============================================================================
XCIN (Chinese XIM server) version xcin <version number>.
(module ver: <version number>, syscin ver: <version number>).
(use "-h" option for help)

xcin: XIM server "xcin" locale "zh_TW.Big5" transport "X/" inp_style "Root".
============================================================================

   請特別注意最後一行的訊息，用雙引號括起來的那些字，它們可能會隨著您在第一
   步 locale 設定的不同而改變，而且它們也是您在往後啟動 XIM client 時的設定
   指引。以上例而言， xcin 是在 LC_CTYPE=zh_TW.Big5 的環境下啟動的，它的:

        XIM server name 是 "xcin"
        Input style 是     "Root"

3. 在啟動 XIM client 之前，要先設定環境變數:

   (在 bash 下)
        XMODIFIERS="@im=<name>"; export XMODIFIERS
   (在 tcsh 下)
        setenv XMODIFIERS "@im=<name>"

   其中 <name> 即是上述的 XIM server name 了。以上例而言，您要這樣設定:

   (在 bash 下)
        XMODIFIERS="@im=xcin"; export XMODIFIERS
   (在 tcsh 下)
        setenv XMODIFIERS "@im=xcin"

   當然，實際設定方式要視您執行 xcin 後所見到的訊息而定。當然，若您早已知道
   XIM server name 是什麼，您也可以將此設定寫到 $HOME/.profile 或 $HOME/.cshrc
   中，每次登入系統時自動執行。

4. 這時，您可以直接啟動 XIM client 了。要稍微注意的是，某些 XIM client 可能
   不是很聰明，它可能無法正確設定 Input style 與 xcin 相配合，這時您必須要
   根據該 XIM client 的說明文件，指定正確的 Input style 給它。


在一個正常的系統下，您只要做好上述四個步驟，就可以在 XIM client 中透過 xcin
輸入中文了。不幸的是，由於目前 glibc (2.0.7 版) 與 Xlib (到 3.3.3.1 為止) 的
問題，您可能還需要其他步驟，才能順利自 xcin 對 XIM client 輸入中文。這些步驟
包括:

a. 如果您的系統使用 Linux glibc-2.0.7 (您可以用 ls /lib/libc-2* 指令見到
   您的 glibc 版本號碼)，則您還需要安裝 libwcsmbs.so 與 wcsmbs 套件 (詳見 
   http://xcin.linux.org.tw/i18n/ 的說明)，然後用這樣的指令啟動 XIM client 
   (假設啟動 XIM client 的指令為 xim_client_start):

   LD_PRELOAD=<dir of libwcsmbs.so>/libwcsmbs.so xim_client_start

   若您的 glibc 版本是 2.1.x, 或者您使用的是 FreeBSD 系統, 則您不需要這一步。

b. 若您的 Xlib 沒有加入 GL, GR 的 patch 的話，您必須做這一步。要如何知道您
   的 Xlib 有沒有做這個 patch 呢？最簡單的方法是跳過這一步，直接跑 XIM client,
   然後用 ctrl+space 輸入中文，是否能將中文字敲到 XIM client 的視窗中？不行
   的話，則表示您的 Xlib 沒有做過這個 patch 。

   這時候，您必須安裝 lcGen.so (詳見 http://xcin.linux.org.tw/i18n/ 的說明)，
   然後用這樣的指令啟動 XIM client (假設啟動 XIM client 的指令為 
   xim_client_start):

   LD_PRELOAD=<dir of lcGen.so>/lcGen.so xim_client_start

   目前已知在 CLE-0.8 以及未來的 Debian-2.2 (potato) 系統上不需要做這一步。
   若您所使用的 X Window 系統是 X11R6.4, 或 XFree86-4.0 以上的，也不需要這
   一步。另外，這一步只有在您使用 zh_TW.Big5 locale 時才需要，其他的 locale 
   都不需要。

c. 若您不幸上述二者都需要的話，您可以用這個指令來啟動 XIM client:

   LD_PRELOAD="<dir of libwcsmbs.so>/libwcsmbs.so <dir of lcGen.so>/lcGen.so" \
        xim_client_start


以下就以 xcin-2.5 的範例程式 testprog 為例，將上述步驟做一個總結。這個程式
放在 xcin-2.5/src/util/testprog/ 底下，如果發現它還沒編譯好，請先打 "make" 
先將它編譯好。然後，我檢查一下我的系統，發現我用的是 glibc-2.1.1, 但我的 
Xlib 沒有做過 patch。因此，若我要用 zh_TW.Big5 的話，我要這樣下指令 (for
bash):

        LC_CTYPE=zh_TW.Big5; export LC_CTYPE
        xcin &
        XMODIFIERS="@im=xcin"; export XMODIFIERS
        LD_PRELOAD="<dir of lcGen.so>/lcGen.so" \
                ./testprog -fontset "-*-big5-0,-*-iso8859-1"

若我要用 zh_CN.GB2312 輸入簡體字的話，我要這樣下指令 (for bash):

        LC_CTYPE=zh_CN.GB2312; export LC_CTYPE
        xcin &
        XMODIFIERS="@im=xcin-zh_CN.GB2312"; export XMODIFIERS
        ./testprog -fontset "-*-gb2312.1980-0,-*-iso8859-1"

其中有關 testprog 詳細的用法，您可以直接執行:

        testprog -h

則它就會列出如下的訊息:

========================================================================
Use "-h" option to see help.
Usage: testprog -fontset <fontset> -im <im_name>
Example:
  export LC_CTYPE=<locale name>.
  export LC_MESSAGES=<locale name>.
  export XMODIFIERS="@im=<im_name>".
  zh_TW.Big5 fontset: "-*-big5-0,-*-iso8859-1".
  zh_CN.GB2312 fontset: "-*-gb2312.1980-0,-*-iso8859-1".
========================================================================

至於其他的 XIM client 啟動方式，原理完全相同，就不再重複。以下只簡述各
XIM client 應注意的相關操作細節。



----------------------------------
C. 各種 XIM Client 的相關操作細節:

以下所列的是我親自試過的，但 XIM client 絕不只這些。若其他朋友有其他 XIM
client 試驗成功的經驗，歡迎您將方法告訴我們，我們很樂意將它列在下頭。

1. xedit:
*********
   請您在您的 $HOME/.Xresources 中加入以下幾行:

xtDefaultFontSet: -*-big5-0,-adobe-*-iso8859-1
xedit*international: True
xedit*fontSet: -*-16-*-big5-1, -adobe-*-16-*-iso8859-1
.Xedit.shellext.inputMethod:    xcin
.Xedit.shellext.preeditType:    Root

   並執行  xrdb -merge ~/.Xresources  或重新進入 X-window 。然後按照 B
   節的方式啟動 xcin 與 xedit 。


2. rxvt-2.6.x/2.7.x:
********************
   此版的 rxvt 可以在

        ftp://ftp.rxvt.org/pub/rxvt/
        ftp://xcin.linux.org.tw/pub/xcin/crxvt/

   抓到，其安裝步驟為:

   For rxvt-2.6.x:
	a. configure --enable-xim --enable-big5
	b. make

   For rxvt-2.7.x:
	a. configure --enable-languages --enable-xim
	b. make

   然後按照 B 節的方式啟動 xcin 與 rxvt。其中啟動 rxvt 時請加入如下的參數:

   For rxvt-2.6.x:
	.... rxvt -pt Root -fm <中文字型名> -fn <英文字型名>

   For rxvt-2.7.x:
	.... rxvt -pt Root -fm <中文字型名> -fn <英文字型名> -km <使用內碼名>
	其中 <使用內碼名> 可以是 big5 或 gb。

   (這裏的 .... 代表第 B 節中所需的啟動指令) 且 rxvt 大部分的選項也可以直接
   寫在 $HOME/.Xresources 裏頭，詳情請見 rxvt 內附的文件說明。

   PS. 由於 rxvt 不會用到 glibc 的 wcs <==> mbs 之類的函式群，故不需要
       LD_PRELOAD libwcsmbs.so。

       除此之外， rxvt 目前仍有若干問題有待修正，詳見 http://xcin.linux.org.tw
       上的說明。


3. netscape-4.5/4.6/4.7:
************************
   請您在您的 $HOME/.Xresources 中加入以下幾行:

Netscape*useStderrDialog:  False
Netscape*preeditType:  Root
Netscape*fontList: \
	-*-helvetica-bold-r-*-120-*-iso8859-1;-*-big5-0:
Netscape*XmLGrid*fontList: \
	-*-helvetica-medium-r-*-120-*-iso8859-1;-*-big5-0:,\
	-*-helvetica-bold-r-*-120-*-iso8859-1;-*-big5-0:=BOLD,\
	-*-helvetica-medium-o-*-120-*-iso8859-1;-*-big5-0:=ITALIC

   並執行  xrdb -merge ~/.Xresources  或重新進入 X-window 。然後按照 B 節的
   方式啟動 xcin 與 netscape。


4. Qt-1.44+I18N patch & KDE:
****************************
   目前已有日本朋友為 Qt-1.44/Qt-2.0 做了 I18N patch, 經測試後已能正確處理
   XIM 協定了。其 Qt-1.44 的 patch 可以在這裏找到:

	ftp://xcin.linux.org.tw/pub/xcin/misc/qt-1.44-i18n-19990728.diff.gz

   而 qt-1.44 加上述的 I18N patch 將會成為 CLE 的標準套件之一。

   若您使用的是 CLE 系統，而願意測試這一版的話，可以直接拿包好的 RPM 回來安
   裝，但請注意儘量拿最新版的 RPM 套件，因為舊版的 RPM 套件可能還是用舊的
   patch, 可能會有許多問題。若您用的是非 RedHat 系統，而想嘗試安裝的話，您
   可以直接找 .tar.gz 檔回來，然後自己 patch, 自己 make。若您只能找到 SRPM
   檔的話，也沒關係，只要您的系統中有安裝 RPM 軟體，您一樣可以將它解開，然
   後再按照一般的方式來編譯安裝。我個人的習慣編譯方式如下:

	rpm2cpio qt-1.44-<version>.src.rpm | cpio --extract 

   這時您會得到一堆檔案，其中最重要的就是 qt-1.44.tar.gz 檔 (當然，如果您是
   直接抓 qt-1.44.tar.gz 就不用做這一步了)。這時您可以將它解開:

	gzip -dc qt-1.44.tar.gz | tar -xvf -

   接著加入上述的 patch:

	zcat qt-1.44-i18n-19990728.diff.gz | patch -p0

   然後再按照 Qt-1.44 的文件說明做 make 即可。以下若提到 CLE 的軟體，其在非 
   RedHat 系統下解開與 compile 的方式原則同上，就不再重複。要注意的是，通常
   CLE 所附的 SRPM 在解開後您同時也會得到一些 patch 檔，這些都是針對該軟體
   的中文問題所做的修正，在 make 該軟體之前，您必須一一將這些 patch 都做好，
   這樣原有的問題才能獲得修正。當有多個 patch 檔時，使用上有先後順序，這時您
   需要參考 .spec 檔的內容 (將 SRPM 解開後就看得到了)，按照其定義的順序，一
   一加入 patch 即可。

   (PS. 為什麼我在上述的 qt-1.44 安裝步驟中，沒有提到要一一加入 CLE 所附的
	patch 呢？原因是如果您拿到的是舊版的 CLE SRPM (如 qt-1.44-11CLE 或
	更早的) ，其所附的 patch 可能有問題，故在此我建議使用上述的
	qt-1.44-i18n-19990728.diff.gz patch。這是 qt-1.44 上的特殊情況，對
	其它的 CLE 套件並不見得如此，而新版的 CLE qt-1.44 套件也會解決此問題)

   請注意，當您安裝好上述的 qt-1.44 + i18n patch 之後，您 *必須* 重新 compile
   一次整個 KDE 系統，上述的 patch 才能發揮效果。KDE 套件/原始碼可以在這裏找到

	ftp://chem224.ch.ntu.edu.tw/pub/CLE/devel/platin/kde-i18n/

   要啟動 KDE 環境，您同樣要經過 B 節所述的四個步驟。為了簡化起見，您可以將
   一些環境變數的設定寫在 $HOME/.xsession 或 $HOME/.xinitrc, 至於要寫在那一
   個？必須視您的系統組態而定。例如:

=====================================================================
#!/bin/sh

LANG=zh_TW.Big5; export LANG
XMODIFIERS="@im=xcin"; export XMODIFIERS

exec startkde
=====================================================================

   最後別忘了執行

	chmod 755 $HOME/.xsession 或 chmod 755 $HOME/.xinitrc

   讓它們成為可執行檔。然後，當您打 startx 或從 xdm login 時， KDE 便會啟動，
   這時您就可以直接啟動 xcin 與 KDE 應用程式 (如 kmail) 來進行測試了。


5. XEmacs20:
****************************
   我這裏是拿 Debian-2.1 的 xemacs20 package 來測試的。在 Debian package
   中 xemacs20 主程式部分有以下三個 package:

	xemacs20-mule-canna-wnn_<version>.deb
	xemacs20-mule_<version>.deb
	xemacs20-nomule_<version>.deb

   這三者是三選一。按照各 package 的說明，第一個的 binary 支援多國語系顯
   示，同時也支援亞洲語系的輸入法，其中也包括 XIM。而第二個的 binary 只支
   援多國語系顯示，不包含任何亞洲語系的輸入法。至於第三個則完全沒有多國語
   系的支援。由於 xcin-2.5 是使用 XIM 協定，而在上述三個 xemacs package 中
   只有第一個在編譯時有加入 XIM 支援 (即 configure 時加上 --with-xim=xlib),
   故在此就必須選用第一個 package。當然，在裝第一個 package 時，您還要裝其
   他相關 package 才行，詳見

	dpkg --info xemacs20-mule-canna-wnn_20.4-13.deb

   至於其他非 Debian 的系統，我想同樣的。如果您要自行 make xemacs, 請記得
   在 configure 時要加上 --with-xim=xlib 的選項，必要時可能還需要安裝 mule
   套件，其中 mule 為多國語系支援。若是使用 RPM 的系統或 FreeBSD 系統，則
   您在選擇安裝套件時也盡量選擇有 mule 與 XIM 的支援的套件。

   假設您的 xemacs 已正確無誤地安裝完成了，剩下就是設定的部分，以 Big5 為例，
   您可以在 $HOME/.Xresources 加入以下這一行:

Emacs*FontSet: -*-big5-0,-adobe-*-iso8859-1

   並執行  xrdb -merge ~/.Xresources  或重新進入 X-window 。然後按照 B 節的
   方式啟動 xcin 與 xemacs。這時候，您按下 trigger key (如 ctrl+space) 可以
   切換到中文輸入，但輸入到 xemacs 的字仍然是亂碼。這時您可以用滑鼠點選以下
   的選單

	Mule -> Set language environment -> Chinese-BIG5

   即可解決此問題。


6. LyX: 
****************************
   LyX 在 i18n 與 XIM 的部分發展已接近完成階段，但仍有問題，仍持續在改進中，
   在此我以 CLE 小組目前的 lyx-1.0.1-i18np07.1.src.rpm 為例，說明其安裝方式
   以及如何與 xcin 搭配使用。

   請至 CLE ftp 站中抓回 lyx-1.0.1-i18np07.1.src.rpm, 若您是使用 CLE 或 RedHat
   的系統，可以直接抓回 binary rpm 來安裝即可。若您需要重新 compile, 則當您將
   此 rpm 解開後 (請參考第 4 點)，您會有以下這幾個檔:

	lyx-1.0.1.tar.gz
	lyx-1.0.1-I18N-0.7-0626.patch
	lyx-1.0.1-zh_TW.Big5.po

   請先將 lyx-1.0.1.tar.gz 解開，然後加入 patch:

	patch -p0 < lyx-1.0.1-I18N-0.7-0626.patch
	mv lyx-1.0.1-zh_TW.Big5.po lyx-1.0.1/po/zh_TW.Big5.po

   但這樣還不夠，在中文 table 與 XIM 功能上仍有問題，故請您再抓回這兩個 patch:

	ftp://xcin.linux.org.tw/pub/xcin/misc/lyx/wycc-990914.patch.gz
	ftp://xcin.linux.org.tw/pub/xcin/misc/lyx/lyx-thh-19990928.diff.gz

   並將它們加進去

	zcat wycc-990914.patch.gz | patch -p0
	zcat lyx-thh-19990928.diff.gz | patch -p0

   未來這些 patch 也許會進入 CLE 的 lyx 套件中。

   但您安裝完畢後，您還要確定您是否有適當的字型用以執行 lyx。 lyx 需要以下的
   中文字型:

	-*-sung-bold-i-*--*-*-*-*-*-*-big5-0
	-*-sung-medium-i-*--*-*-*-*-*-*-big5-0
	-*-sung-bold-r-*--*-*-*-*-*-*-big5-0
	-*-sung-medium-r-*--*-*-*-*-*-*-big5-0

   其中 * 可以用任何值代入。然而，您的系統可能不一定安裝了上述這些字型，而且您
   也可能不願意裝它們。若是這種情況，可以使用 fonts alias 的技巧，將您系統中原
   有的字型取一些別名，以對應到上述這四個字型上。例如，您的系統中只裝了:

	-twmoe-kai-medium-r-normal-fs-16-160-75-75-c-160-big5-0
	-twmoe-kai-medium-r-normal-fs-24-240-75-75-c-240-big5-0

   這兩個字型，這時您就可以修改您的 /usr/X11R6/lib/X11/fonts/chinese/fonts.alias
   加入以下幾行:

-twmoe-sung-bold-i-normal--16-160-75-75-c-160-big5-0 \
-twmoe-kai-medium-r-normal-fs-16-160-75-75-c-160-big5-0
-twmoe-sung-bold-i-normal--24-240-75-75-c-240-big5-0 \
-twmoe-kai-medium-r-normal-fs-24-240-75-75-c-240-big5-0

-twmoe-sung-medium-i-normal--16-160-75-75-c-160-big5-0 \
-twmoe-kai-medium-r-normal-fs-16-160-75-75-c-160-big5-0
-twmoe-sung-medium-i-normal--24-240-75-75-c-240-big5-0 \
-twmoe-kai-medium-r-normal-fs-24-240-75-75-c-240-big5-0

-twmoe-sung-bold-r-normal--16-160-75-75-c-160-big5-0 \
-twmoe-kai-medium-r-normal-fs-16-160-75-75-c-160-big5-0
-twmoe-sung-bold-r-normal--24-240-75-75-c-240-big5-0 \
-twmoe-kai-medium-r-normal-fs-24-240-75-75-c-240-big5-0

-twmoe-sung-medium-r-normal--16-160-75-75-c-160-big5-0 \
-twmoe-kai-medium-r-normal-fs-16-160-75-75-c-160-big5-0
-twmoe-sung-medium-r-normal--24-240-75-75-c-240-big5-0 \
-twmoe-kai-medium-r-normal-fs-24-240-75-75-c-240-big5-0

   (請注意 \ 代表下一行與本行接在一起的意思)，然後重新進入 X Window, 按照 B 
   節的方式啟動 xcin 與 lyx, 這時您即可在 lyx 中直接輸入中文了。

   另外提一個小技巧: 如果您沒有 root 權限，無法修改系統的 fonts.alias 時，或
   者您根本不想為了 lyx 而修改您的 fonts.alias, 您也可以在任何位置造一個目錄，
   然後將上述幾行寫到該目錄下的 fonts.alias 檔中 (例如: 
   /usr/local/lib/lyx/font/fonts.alias), 則您再寫一個內容如下的 script:

=============================================================
#!/bin/sh

xset fp+ /usr/local/lib/lyx/font
lyx $@			# 這裏請按照 B 節的方式來啟動 lyx
xset fp- /usr/local/lib/lyx/font
=============================================================

   如此，只有當要使用 lyx 時才讓那些 fonts.alias 生效，而不用時就讓它失效。

   最後一提，若您設定 LANG 或 LC_MESSAGES 環境變數為 zh_TW.Big5 時，您可能
   會見到所有的 lyx 選單上的字全部變成亂碼，這是因為 lyx 使用了 non-free 的
   libforms 做 widget set, 但該 widget set 還未做 I18N 化的原故。解決方式就
   是將 LC_MESSAGES 環境變數設為 C, 乾脆直接顯示英文，或使用 xa+cv 來做中文
   顯示。


****************************************************************************

若您有其他 XIM client 測試成功的經驗，麻煩您告訴我們，我們非常樂於分享
您的經驗。


--------------------------
D. 其他已知的 XIM client:

底下所列的是其他已知的 XIM client, 但我沒有親自試驗過，有興趣的朋友可以自行
測試:

1. vim-5.4/5.5

2. GNOME:  http://www.gnome.org


T.H.Hsieh

