通过im-switch切换输入法引擎

大家知道,在Debian或同类Linux系统下,有多种输入法的引擎(Imput Method Engine),例如常用的 Fcitx 或 scim 等。如何选择使用哪一种输入法引擎呢?较早的Debian版本中,我们通常可以通过编辑X windows的一些初始脚本来完成这项工作,现在Debian引入了 im-switch 包来现好的完成这一配置工作。安装 im-switch:

root@debian ~# apt-get install im-switch

im-switch与update-alternative功能和用法相类似,im-switch可以查看和配置当前输出法引擎的列表,并配置当前激活的输入法引擎。通过下面的命令可以查看当前支持(安装)的所有输出法引擎:

redice@debian ~$ im-switch -l
Your input method setup under zh_CN locale as below.
=======================================================
The configuration "/home/lijian/.xinput.d/zh_CN" is defined as a link pointing to
fcitx
This private configuration supersedes the system wide default.
=======================================================
The system wide default is pointed by "/etc/alternatives/xinput-zh_CN" .
xinput-zh_CN - status is auto.
link currently points to fcitx
fcitx - priority 40
Current `best' version is fcitx.
=======================================================
The available input method configuration files are:
default ~/.xinput.d/fcitx none ~/.xinput.d/scim th-xim
=======================================================

上面的信息说明,当前用户 redice 配置的输入法引擎为 fcitx。配置文件存放于当前用户主目录下的.xinput.d目录中。这个目录当前有几个文件,分别是 fcitx, scim,其分别为当前系统所安装的两种输入法引擎的配置文件。X Window启动过程中会配置输入法,并读取用户或全局配置文件。如果用户目录中存在 .xinput.d 目录,则X window将以该目录的配置为当前配置,否则以 /etc/X11/xinput.d 目录中的配置为准。X window以当前的locale为文件名来读取配置文件,因此,在.xinput.d或xinput.d目录中会有一个与当前locale相同名称的链接指向正在使用的输入法引擎,例如按照上面显示的配置,我们的locale设置为zh_CN,在 ~redice/.xinput.d 目录中有一个叫 zh_CN的链接指向 fcitx。im-switch的实质就是协助生成xinput.d中的配置文件链接名称,使X windows获得适当的配置文件,并启动我们所需要的输入法引擎。

redice@debian ~$ ls -l .xinput.d
-rw-r--r-- 1 redice redice 71 Aug 7 2005 fcitx
-rw-r--r-- 1 redice redice 71 Aug 8 2005 scim
lrwxrwxrwx 1 redice redice 28 Sep 1 02:11 zh_CN -> /home/redice/.xinput.d/fcitx

redice觉得 scim更适合于他,于是想修改一下输入法引擎,通过下面的命令可以完成:

redice@debian ~$ im-switch -s scim
redice@debian ~$ ls -l .xinput.d
-rw-r--r-- 1 redice redice 71 Aug 7 2005 fcitx
-rw-r--r-- 1 redice redice 71 Aug 8 2005 scim
lrwxrwxrwx 1 redice redice 28 Sep 1 02:11 zh_CN -> /home/redice/.xinput.d/scim

前面已经提到,X window在启动时配置和启动输入法,因此要想上面的配置能生效,必需重新启动正在运行的 X window。另外,如果要配置系统的默认输入法引擎,则需要以超级用户身份来运行 im-switch,完成的工作与上面类似,只不过相应的配置变更都是发生在 /etc/X11/xinput.d目录里而已。

如果你不只使用一种 locale,那么你可能需要配置多个不同 locale 的输入法。例如,你的系统同时有中国大陆,台湾同胞和小日本使用,这些人会分别使用不同的locale,如中国大陆使用 zh_CN.UTF-8或zh_CN.GB2312,而台湾同胞则使用zh_TW,小日本则使用 ja_JP,当然其使用的输入法也可能不相同,im-switch同样可以为不同 locale 配置不同的输入法,如:

root@debian ~# im-switch -z zh_CN fcitx
root@debian ~# im-switch -z zh_CN gcin
root@debian ~# im-switch -z ja_JP unknown # 我不知道他们用什么 :)

另外需要补充一点的是,im-switch 需要各种输入法的配合,因此,只有整合到 Debian 的各种输入法才能得到 im-switch 的支持,如果你自己下载源码并编译了 fcitx,im-switch 可能根本就不会理睬它了。

没有评论: