|
|
gdm是打開并管理當(dāng)前X session的程序,/etc/init.d/gdm腳本控制了gdm程序的運(yùn)行以及一些參數(shù)的傳遞。而我們要用的輸入法自然是在X session過程中運(yùn)行的一個后臺程序,所以不管是不是在英文界面,只要你能保證gdm啟動后能觸發(fā)輸入法運(yùn)行起來,問題就解決了。
中文界面默認(rèn)就可以調(diào)用中文輸入法是因?yàn)樗鼘?yīng)的locale(我們假定是zh_CN.UTF-8)決定了gdm在啟動的時候啟動scim。很簡單的對應(yīng)關(guān)系,英文界面默認(rèn)不能調(diào)用中文輸入是因?yàn)橛⑽膌ocale默認(rèn)不能觸發(fā)scim的運(yùn)行。我們要讓輸入法運(yùn)行,只需要手動指定輸入法在英文locale下也被觸發(fā)就可以了。
gdm運(yùn)行時會遍歷/etc/X11/xinit/Xsession.d/目錄下所有的腳本,所以如果我們只要放一個開啟scim的腳本到Xsession.d目錄下即可。im-switch程序干的就是這個事,大家可以讀一讀那個im-switch腳本,可以看到它遍歷如下文件,有文件存在就會跳出循環(huán):
$HOME/.xinput.d/${LNG}
$HOME/.xinput.d/all_ALL
/etc/X11/xinit/x.input.d/${LNG}
/etc/X11/xinit/xinput.d/all_ALL
/etc/X11/xinit/xinput.d/default
${LNG}字符串是系統(tǒng)locale的截斷,英文系統(tǒng)中其值應(yīng)該是en_US。這些文件設(shè)置了系統(tǒng)將要使用的輸入法,默認(rèn)情況下,英文界面運(yùn)行的會是/etc/X11/xinit/xinput.d/all_ALL文件,而這文件里會什么也不設(shè)置,于是就沒有輸入法可以用嘍!
為了讓輸入法運(yùn)行,簡單地鏈接/etc/X11/xinit/xinput.d/scim文件到$HOME/.xinput.d/en_US,scim文件的內(nèi)容:
XIM=SCIM
XIM_PROGRAM=/usr/bin/scim
XIM_ARGS="-d"
XIM_PROGRAM_SETS_ITSELF_AS_DAEMON=yes
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
DEPENDS="scim,scim-anthy|scim-canna|scim-chewing|scim-pinyin|scim-hangle|scim-prime|scim-skk|scim-tables-additional|scim-m17n|scim-uim|scim-tables-ja|scim-tables-ko|scim-tables-zh"
它指定了en_US locale時,scim仍在gdm啟動后觸發(fā),于是中文輸入法就出現(xiàn)了~
|
|