Smart Common Input Method (简体中文)
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:
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 中创建上面一行命令。
KDE
KDE 中需要执行:
scim -f socket -c socket -d
或者采取:
- 从 AUR 安装 skim.
- 启动 SKIM,系统图标上右键,点击 'Configure'
- 在 Frontend > X Window 中点击"Start skim automatically when KDE starts"
- 登出并重启 X server (ctrl+alt+del),重新登录
按键盘 ctrl+space 激活输入法。
已知问题
LWJGL (Lightweight Java Game Library) losing keyboard focus
一个解决方法是 kill scim ,应用程序就可以接收键盘输入了。