打印

linux中文输入法

[复制链接]
180|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdm是打开并管理当前X session的程序,/etc/init.d/gdm脚本控制了gdm程序的运行以及一些参数的传递。而我们要用的输入法自然是在X session过程中运行的一个后台程序,所以不管是不是在英文界面,只要你能保证gdm启动后能触发输入法运行起来,问题就解决了。



中文界面默认就可以调用中文输入法是因为它对应的locale(我们假定是zh_CN.UTF-8)决定了gdm在启动的时候启动scim。很简单的对应关系,英文界面默认不能调用中文输入是因为英文locale默认不能触发scim的运行。我们要让输入法运行,只需要手动指定输入法在英文locale下也被触发就可以了。



gdm运行时会遍历/etc/X11/xinit/Xsession.d/目录下所有的脚本,所以如果我们只要放一个开启scim的脚本到Xsession.d目录下即可。im-switch程序干的就是这个事,大家可以读一读那个im-switch脚本,可以看到它遍历如下文件,有文件存在就会跳出循环:

$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}字符串是系统locale的截断,英文系统中其值应该是en_US。这些文件设置了系统将要使用的输入法,默认情况下,英文界面运行的会是/etc/X11/xinit/xinput.d/all_ALL文件,而这文件里会什么也不设置,于是就没有输入法可以用喽!



为了让输入法运行,简单地链接/etc/X11/xinit/xinput.d/scim文件到$HOME/.xinput.d/en_US,scim文件的内容:

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启动后触发,于是中文输入法就出现了~

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

376

主题

377

帖子

0

粉丝