Chinaunix首页 | 论坛 | 博客
  • 博客访问: 658943
  • 博文数量: 139
  • 博客积分: 2655
  • 博客等级: 少校
  • 技术积分: 1723
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-02 16:03
文章分类

全部博文(139)

文章存档

2013年(2)

2011年(17)

2010年(14)

2009年(86)

2008年(20)

分类:

2011-07-23 13:40:19

标  题: Debian Squeeze 中输入法的初始化过程
发信站: 水木社区 (Wed Feb  9 16:44:32 2011), 站内

看的 Debian 下相关文件,对于其它发行版应该也有借鉴意义。

Debian Squeeze 中输入法的初始化过程

0. Xwindow 系统里输入法主要有两种使用办法:
    a) XIM
    b) GTK/Qt im-module

    对于 scim,由于 C++ ABI 兼容问题,又引入了 bridge 版 im-module 和非 bridge 版 im-module,
    依靠 GTK_IM_MODULE 和 QT_IM_MODULE 的取值来区分,这俩如何取值,取决于系统是否安装了对应的
    im-module 动态库,具体判断方法在/usr/share/im-config/data/ (im-config) 或者 /etc/X11/xinit/xinput.d/
    (im-switch)的脚本里。

1. im-config 替代了 im-switch。

2. 初始化流程

/etc/X11/Xsession
  /etc/X11/Xsession.d/80im-config_launch
    /usr/share/im-config/xinputrc.common
      /etc/default/im-config
    ~/.xinputrc
      /usr/share/im-config/data/xxxx.im
      or
    /etc/X11/xinit/xinputrc
      /usr/share/im-config/data/00_default.im
        /usr/share/im-config/data/01_auto.im
        选择排在最前面的输入法,目前是 ibus。

 * xinputrc.common 定义了 run_im 函数;
 * /usr/share/im-config/data 中定义了可用的输入法;
 * ~/.xinputrc 由 /usr/bin/im-config 程序生成,比如内容为 run_im scim 就
   是执行 /usr/share/im-config/data/22_scim.im 并导出 XMODIFIERS,
   GTK_IM_MODULE 和 QT_IM_MODULE 三个环境变量。;

   22_scim.im 的作用就是设置上述三个环境变量:

      XMODIFIERS=@im=SCIM

      如果安装了 scim-bridge-client-gtk 则设置 GTK_IM_MODULE=scim-bridge;
      否则如果安装了 scim-gtk2-immodule 则设置 GTK_IM_MODULE=scim;
      否则设置 GTK_IM_MODULE=xim.

      如果安装了 scim-bridge-client-qt 和 scim-bridge-client-qt4 则设置 QT_IM_MODULE=scim-bridge;
      否则如果安装了 scim-qtimm, 则设置 QT_IM_MODULE=scim;
      否则设置 QT_IM_MODULE=xim.

      scim-bridge-client-gtk 和 scim-gtk2-immodule 都是 gtk im-module,
      区别在于前者是 C 实现,通过 scim-bridge-agent 与 scim daemon 交互,
      后者是 C++ 实现,直接与 scim daemon 交互,由于 C++ ABI 不兼容问题,
      前者要稳定些。

 * /etc/default/im-config 可以设定默认输入法,可能的取值为 /usr/share/im-config/data 下去掉前缀和后缀的文件名 。
   普通用户用 im-config 切换输入法。

3. 旧的 im-switch 方式:
/etc/X11/Xsession
  /etc/X11/Xsession.d/80im-switch
    执行 ~/.xinput.d/$LNG 或者 /etc/X11/xinit/xinput.d/$LNG

    $LNG 从 $LC_ALL or $LC_CTYPE or $LANG 获取。

    由于 /etc/X11/xinit/xinput.d/$LNG 是符号链接到 /etc/alternatives/xinput-$LNG,后者又
    符号链接到 /etc/X11/xinit/xinput.d/ 里具体的输入法设置,所以修改 /etc/alternatives/xinput-$LNG
    的指向就可以修改默认输入法。

    可能的 alternatives: ls /var/lib/dpkg/alternatives/xinput-*;
    配置:update-alternative --config xinput-$LNG,或者直接修改符号链接。

    普通用户用 im-switch 命令切换输入法。

im-config 的配置方式不取决于 locale,不使用多重符号链接也显得简洁些。
阅读(1266) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~