由于要使用系统的虚拟机(主要是vbox),我发现我的输入法scim和虚拟机相互冲突,无赖之下我只好投奔fcitx了。
现在就来讲述一下fcitx的痛苦安装过程(主要怪自己没有认真看wiki)。
为了不误导大家,建议大家可以参阅帖子:
http://forum.ubuntu.org.cn/viewtopic.php?p=649597&sid=d159d93db3587b62b08d2d86eae9aee2
里面有地方讲到了wiki相关地址。
以下是我的一些方法。
这种方法是在没有删除scim输入法的情况下选择使用输入法的一种方式。如果你不习惯用fcitx的话可以换回去而无须安装。
首先和wiki一样使用apt安装了fcitx
sudo apt-get install im-switch fcitx
不过前一个im-switch已经装好了。
其次就是主要环节了。我比较喜欢en_US的环境所有要首先解决en环境下输入法的调度问题.
"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"
由于ubuntu 8.04没有前面一个文件,所以就需要修改后面那个了.我这里配置文件的修改地方在文件最后一行.
然后是解决自动启动的问题了.
通过分析我了解到X系统的启动是需要经过一系列xsession的,其中有一些地方涉及到了输入法的装入:
/etc/X11/Xsession.d 目录下面就是需要加载的程式.其中的 80im-switch脚本文件引起了我的注意.
打开文件我发现这里就是输入法的装载信息:
# Copyright (C) 2005 Kenshi Muto <kmuto@debian.org>
# Modified for Debian package.
# 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
# Keep original values related to IM
_XIM=$XIM
_XIM_PROGRAM=$XIM_PROGRAM
_XIM_ARGS=$XIM_ARGS
_XMODIFIERS=$XMODIFIERS
_GTK_IM_MODULE=$GTK_IM_MODULE
_QT_IM_MODULE=$QT_IM_MODULE
# $LNG is locale <language>_<region> without .<encoding> and .<encoding>@EURO
LNG=${LC_ALL:-${LC_CTYPE:-${LANG}}}
LNG=${LNG%@*}
LNG=${LNG%.*}
[ -z "$LNG" ] && LNG="all_ALL" || true
echo "Setting IM through im-switch for locale=$LNG."
# Source first found configuration under $LNG locale
for f in "$HOME/.xinput.d/${LNG}" \
"$HOME/.xinput.d/all_ALL" \
"/etc/X11/xinit/xinput.d/${LNG}" \
"/etc/X11/xinit/xinput.d/all_ALL" \
"/etc/X11/xinit/xinput.d/default" ; do
if [ -f "$f" -a -r "$f" ]; then
echo "Start IM through $f linked to $(readlink -f $f)."
. "$f"
break
fi
done
unset LNG
# Revibe IM related environment if other values were set.
[ "$_XIM" ] && XIM=$_XIM || true
[ "$_XIM_PROGRAM" ] && XIM_PROGRAM=$_XIM_PROGRAM || true
[ "$_XIM_ARGS" ] && XIM_ARGS=$_XIM_ARGS || true
[ "$_XMODIFIERS" ] && XMODIFIERS=$_XMODIFIERS ||true
[ "$_GTK_IM_MODULE" ] && GTK_IM_MODULE=$_GTK_IM_MODULE || true
[ "$_QT_IM_MODULE" ] && QT_IM_MODULE=$_QT_IM_MODULE || true
[ -n "$GTK_IM_MODULE" ] && export GTK_IM_MODULE || true
[ -n "$QT_IM_MODULE" ] && export QT_IM_MODULE || true
# setup XMODIFIERS
[ -z "$XMODIFIERS" -a -n "$XIM" ] && XMODIFIERS="@im=$XIM" || true
[ -n "$XMODIFIERS" ] && export XMODIFIERS || true
# execute XIM_PROGRAM
if [ -n "$XIM_PROGRAM" -a -x "$XIM_PROGRAM" ]; then
if [ -z "$XIM_PROGRAM_SETS_ITSELF_AS_DAEMON" ]; then
eval "$XIM_PROGRAM $XIM_ARGS &" || true
else
eval "$XIM_PROGRAM $XIM_ARGS" || true
fi
fi
# execute XIM_PROGRAM_XTRA
[ -n "$XIM_PROGRAM_XTRA" ] && eval "$XIM_PROGRAM_XTRA &" || true
其中的红地方是值得注意的,它在加载的时候其实是按照用户的配置文件行使的,进入 "$HOME/.xinput.d/" 目录,我们看到里面就是一个link文件(名字应该是en_US,因为我的默认环境是en_US).在这里我们初步判定系统加载输入法的时候可能就是通过locale来判定位置,然后根据各自的不同位置来加载配额文件.我跟踪这个link文件发现其就是链接到了/etc/X11/xinit/xinput.d 目录下的scim文件(里面是scim输入法需要加载时候的相关配置信息).至此我们希望把其改成fcitx输入法,在/etc/X11/xinit/xinput.d 目录里面我又发现了fcitx的配置文件.这样好了我们就直接改那个link文件到这个配置文件fcitx就可以了.
如此以来重启x,再进入系统应该就可以使用fcitx输入法了.
这样一来我们在没有删除scim输入法,和保留我们以往的语言环境的情况下使用上了fcitx.