Smart Common Input Method

出自 Arch Linux 中文维基

這篇文章或章節的翻譯不反映原文。

原因:Last updated in 2012(在 Talk:Smart Common Input Method# 中討論)
警告: SCIM 已經 "不被開發者維護", 而 IBus 被 Red Hat 積極開發。Arch 用戶安裝軟件時應該考慮用 fcitxIBusUim 而不是 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].

外部鏈接[編輯 | 編輯原始碼]