英文环境下中文输入法的最地道配置方法
浏览了网上好几篇介绍英文环境中文输入法的配置方法, 在自己的red hat EL4上试验了很多次, 最后总结出如下的最地道配置方法.
(1) 确定系统已经安装中文输入法,这里以fcitx为例;
(2) 设置输入法环境变量
在目录/ect/X11/xinit/xinput.d下建立输入法环境变量配置文件(这里命名为fcitx),写入以下内容:
XIM=fcitx
XIM_PROGRAM=fcitx
GTK_IM_MODULE=fcitx
gnome-im-settings-daemon >/dev/null
export LC_CTYPE=zh_CN.UTF-8
export XMODIFIERS=@im=fcitx
export XIM=fcitx
export XIM_PROGRAM=fcitx
这些设置来自FCITX的安装说明文档。
(3) 在相同目录下建立符号链接(symble link)文件en_US,链接到上一步建立的文件fcitx:
ln -s fcitx en_US
最好使用如下两条命令(使用绝对路径):
alternatives --install /etc/X11/xinit/xinput.d/en_US xinput-en_US /etc/X11/xinit/xinput.d/fcitx 100
alternatives --auto xinput-en_US
(4) 修改gtk.immodules文件
它所在的目录根据系统和gtk的版本有所不同,系统Red Hat EL4的可能是
/etc/gtk-2.0/i386-redhat-linux-gnu/
将此文件中的
"xim" "X Input Method" "gtk20" "/usr/share/locale" "ko:ja:th:zh"修改为
"xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:th:zh"
***************************************************************
下面说明一下这样配置的根据.
(1) 首先需要了解X启动之时调用脚本的过程:
startx
->xinit
->/etc/X11/xinit/xinitrc
->/etc/X11/xinit/xinitrc-common
->/etc/X11/xinit/xinitrc.d/*
->/etc/X11/xinit/xinitrc.d/xinput.sh
...
->Xclients (the 1st existed one, or fallback):
$HOME/.Xclients
/etc/X11/xinit/Xclients
->gnome, kde, or fallback.
(2) 分析脚本/etc/X11/xinit/xinitrc.d/xinput.sh
以下是此脚本的内容,其中加了中文注释。看明白这个脚本就清楚了。
#!/bin/bash
# Copyright (C) 1999 - 2004 Red Hat, Inc. All rights reserved. This
# copyrighted material is made available to anyone wishing to use, modify,
# copy, or redistribute it subject to the terms and conditions of the
# GNU General Public License version 2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# X Input method setup script
# Load up the user and system locale settings
oldterm=$TERM
unset TERM
# lang.sh 设置LC_CTYPE,LANG等语言相关环境变量. 后面还有其他说明.
if [ -r /etc/profile.d/lang.sh ]; then
. /etc/profile.d/lang.sh
fi
[ -n "$oldterm" ] && export TERM=$oldterm
tmplang=${LC_CTYPE:-${LANG:-"en_US.UTF-8"}}
# 如果LC_CTYPE和LANG都为NULL, 那么tmplang为"en_US.UTF-8"
## try to source ~/.xinput.d/ll_CC or /etc/X11/xinit/xinput.d/ll_CC to
## setup the input method for locale (CC is needed for Chinese for example)
# unset env vars to be safe
unset XIM XIM_PROGRAM XIM_ARGS XMODIFIERS GTK_IM_MODULE
lang_region=$(echo $tmplang | sed -e 's/\..*//')
# 在中文环境下,tmplang大概为zh_CN.GB18030, 则lang_region为zh_CN。
# 在英文环境下,tmplang可能为en_US.UTF-8 (US English), 则lang_region为en_US。
# 命令sed -e 's/\..*//'的作用是去除字符串中的“.”及其后面的字符。
# 按次序探测4个设置输入法环境变量的配置文件,执行(source)第一个找到的,然后跳出循环。
# 在英文环境下的4个配置文件是:
# (1)$HOME/.xinput.d/en_US
# (2)$HOME/.xinput.d/default
# (3)/etc/X11/xinit/xinput.d/en_US
# (4)/etc/X11/xinit/xinput.d/default
# 因此,如果只对个别用户设置英文环境下的输入法,就在用户目录下建立相应的配置文件(en_US或default)。
# 如果要对所有用户进行设置,就在目录/etc/X11/xinit/xinput.d下建立相应的配置文件。
# 复制目录中zh_CN文件为en_US或default, 则英文环境下的输入法与中文环境下的相同。
for f in $HOME/.xinput.d/${lang_region} \
$HOME/.xinput.d/default \
/etc/X11/xinit/xinput.d/${lang_region} \
/etc/X11/xinit/xinput.d/default ; do
[ -r $f ] && source $f && break
done
unset lang_region
[ -n "$GTK_IM_MODULE" ] && export GTK_IM_MODULE
# setup XMODIFIERS
[ -z "$XMODIFIERS" -a -n "$XIM" ] && XMODIFIERS="@im=$XIM"
[ -n "$XMODIFIERS" ] && export XMODIFIERS
# 运行输入法程序
# execute XIM_PROGRAM
[ -n "$XIM_PROGRAM" ] && which "$XIM_PROGRAM" > /dev/null 2>&1 && LANG="$tmplang" "$XIM_PROGRAM" $XIM_ARGS &
(3) 关于/etc/profile.d/lang.sh
其中有这样的代码:
for langfile in /etc/sysconfig/i18n $HOME/.i18n ; do
[ -f $langfile ] && . $langfile && sourced=1
done
因此,建立$HOME/.i18n并在其中把LC_CTYPE赋值为zh_CN,也可以实现英文环境下中文输入法的设置.这应该是最简单的方法了.
|