Smart Common Input Method (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Tango-preferences-desktop-locale-modified.png这篇文章或章节的翻译不反映原文。Tango-preferences-desktop-locale-modified.png

原因:Last updated in 2012(在 Talk:Smart Common Input Method (简体中文)# 中讨论)
注意: SCIM 已经 "不被开发者维护", 而 IBus 被 Red Hat 积极开发。Arch 用户安装软件时应该考虑用 IBusUim 而不是 SCIM

Su Zhe (或 James Su)在为TurboLinux工作的时候,于2001年发起了SCIM项目,该项目的目标是:

  • 为当前可用的输入法库提供一个统一前端;
  • 作为IIIMF输入法框架的语言引擎;
  • 尽可能多地提供各国输入引擎;
  • 尽可能多地支持输入法协议/接口;
  • 尽可能多地支持各种操作系统。

SCIM具有以下特性:

  • 使用C++编写,完全面向对象结构;
  • 高度模块化
  • 体系结构非常灵活,可以作为其它C/S输入法环境的动态链接库;
  • 简单的编程接口
  • 完全支持i18n UCS4/UTF-8编码
  • 具有许多便利的工具可以加速自身开发
  • 具有特性丰富的图形化面板
  • 统一的配置框架

安装SCIM

pacman -S scim

安装输入法引擎

目前SCIM包含许多各类的输入法(有些可能需要一些其它的库),覆盖30多种语言,包括中文(简体、繁体)、日文、韩文及许多欧洲语言:

(在这里

中文智能拼音:

pacman -S scim-pinyin

中文五笔及其它:

pacman -S scim-tables

日文:

pacman -S scim-anthy

韩文:

pacman -S scim-hangul

配置SCIM

方法一: 为了让SCIM在桌面中自动启动并且正常工作,编辑~/.xinitrc,在启动桌面环境/窗口管理器的语句前面加入以下内容(如果使用scim-bridge,把下面的“scim”改为“scim-bridge”):

export LC_CTYPE="zh_CN.UTF-8" (请改成你在X下使用的locale,如果没有合适的locale,请查询locale-gen相关信息)
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"
scim -d  

如果使用"scim -f socket -c socket -d"替换"scim -d ",会导致一些qt程序无法使用scim,比如eva。 现在进入X,scim应该已经启动了,你可以在图标上点击右键改变SCIM配置(比如去掉一些不用的输入法)。在任何程序中按Ctrl-Space就可以使用输入法了。

使用kdm/gdm时自动启动scim

创建一个新文件~/.xprofile,加入以下内容(如果使用scim-bridge,把下面的“scim”改为“scim-bridge”):

export LC_CTYPE="zh_CN.UTF-8" 
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"
scim -d

查看这里获得更多官方信息。

方法二: Gnome用户可以试一下,编辑/etc/gtk-2.0/gtk.immodules,在最后加入以下内容:

 "/usr/lib/gtk-2.0/immodules/im-scim.so" 
 "scim" "SCIM Input Method" "scim" "/usr/share/locale" "ja:ko:zh" 

如果LC_CTYPE为"en_US.UTF-8“,需要将"ja:ko:zh"改成"en:ja:ko:zh"。当你输入命令gtk-query-immodules-2.0,你将会发现“en”是关键。随后重启。SCIM托盘可能不显示,但是当你设置好输入法后,按下CTRL+空格,输入条将会显示。KDE或许有类似的方法。警告:加了"en",PC重启后任务栏可能不显示。按CTRL+ALT+F1进入SHELL,输入sudo reboot或reboot重启。或者用vi或vim编辑/etc/gtk-2.0/gtk.immodules。

环境变量

以下环境变量在运行scim之前必须被export:

export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"

通常这些变量被放在脚本文件中,如 ~/.xinitrc 或者 /etc/profile (全局设置), 又或者 ~/.config/openbox/autostart (如果使用 Openbox 作为 窗口管理器).如果放在 ~/.xinitrc, 必须放在执行桌面环境/窗口管理器之前

如果你不知道那种方法更好,使用 /etc/profile.

注意: 第一个环境变量与一些(少见的)选项如 XMODIFIERS=urxvt 冲突.

GNOME, XFCE, LXDE 用户

如果 export QT_IM_MODULE="scim" 无法工作,可以使用 AUR 中的 scim-bridgeAUR[损坏的链接:package not found]。在 2009.02.15 的更新中(scim 1.4.7-1, AUR 中的 scim-bridge 0.4.15-1)下面配置可以在 GNOME, XFCE, LXDE 中工作:

export QT_IM_MODULE="scim-bridge"

KDE3

将 QT IMM 设为 xim 或安装 AUR 中的 scim-qtimm-cvsAUR[损坏的链接:package not found]:

export QT_IM_MODULE="xim"

GTK

scim 无法在 gtk 应用程序中工作,请检查 GTK_IM_MODULE_FILE 环境变量,应该设置为 /etc/gtk-2.0/gtk.immodules 或包含输入法模块文件的目录。

在上面提到的脚本中加入下面内容,放到执行DE/WM之前:

gtk-query-immodules-2.0 > ~/.immodules
export GTK_IM_MODULE_FILE=~/.immodules

GTK 会从 ~/.immodules 中查找文件,如果将 GTK_IM_MODULE_FILE 设置为 /etc/gtk-2.0/gtk.immodules,不需要第一行。

Locale 相关的文件

如果键盘 locale 不是 en_US.UTF-8 (或 en_US.utf8),需要修改 ~/.scim/global (或系统设置 /etc/scim/global)的下面这行:

/SupportedUnicodeLocales = en_US.UTF-8,de_CH.UTF-8

将 de_CH.UTF-8 修改为所用 locale。

注意: locale 必须已经启用(/etc/locale-gen 中取消注释并以 root 执行 locale-gen ) 而且被 SCIM 支持(支持大部分 *.UTF-8 locales).

如下命令可以获得活动的 locale:

locale -a

(查看 /etc/locale.gen 也可以).

更多关于 locale 的疑难解答

如果安装 scim 和输入法表之后,scim 还无法工作(点击系统图标无反应),需要在 /etc/profile 中将 LC_CTYPE 设置为要使用的 locale。

LC_CTYPE="zh_CN.UTF-8"              //if you want to type simplified chinese

修改/etc/locale.gen 文件,取消 locale 前的注释并用 locale-gen 命令生成 locale:

locale-gen

执行 SCIM

可以直接执行:

scim

建议作为守护进程执行:

scim -d

可以将上面文件放入脚本中自动执行,例如 ~/.xinitrc (环境变量之后,DE/WM之前), /etc/profile (环境变量之后) 或 ~/.config/openbox/autostart (环境变量之后,可以 sleep 几秒)。

GNOME

使用 GNOME 需要执行:

 scim -f x11 -c simple -d

要自动启动,在 System > Preferences > Session 中创建上面一行命令。

注意: 如果使用 scim -f socket -c socket -d,SCIM 的配置文件无法修改。

KDE

KDE 中需要执行:

 scim -f socket -c socket -d

或者采取:

  1. AUR 安装 skim.
  2. 启动 SKIM,系统图标上右键,点击 'Configure'
  3. Frontend > X Window 中点击"Start skim automatically when KDE starts"
  4. 登出并重启 X server (ctrl+alt+del),重新登录

按键盘 ctrl+space 激活输入法。

已知问题

LWJGL (Lightweight Java Game Library) losing keyboard focus

一个解决方法是 kill scim ,应用程序就可以接收键盘输入了。

参见 [1][2].

外部链接