输入法相关环境变量

From Fcitx
Revision as of 04:03, 4 October 2017 by Weng Xuetian (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
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.
Other languages:
English • ‎中文(简体)‎

这个页面介绍了以下环境变量的含义。你不需要理解他们来使用Fcitx,但是以下内容可能会在你遇到问题是帮助你检查哪里出了问题。

XMODIFIERS

这个变量仅影响 XIM。格式为

XMODIFIERS=@im=<xim 服务器名称>

当 XIM 服务器启动时,他会注册一个应当在这里使用的名称。这个名称不能和其他 XIM 服务器相同,因此你无法在同一个 X 服务器下运行两个 Fcitx。通常情况下,Fcitx 的 XIM 服务器名称为 fcitx。

因此对于 Fcitx 来说这个设置应当为

XMODIFIERS=@im=fcitx

在非 CJK 语言环境中,如果这个环境变量没有设置,一些程序中 XIM 将无法工作,这意味这你最好总是设置了这个环境变量。并且 XIM 也需要你有正确的语言环境,这意味着你的语言必须在下面的命令的输出当中

locale -a

你可以通过以下命令检查你当前的语言环境

locale

为了使用 XIM,你的语言不能设置为 C 或者 POSIX。

GTK_IM_MODULE

这会覆盖系统的gtk输入法模块的自动选择。在默认情况下,gtk按照语言选择对应的输入法模块。Fcitx声明它支持 "zh:ja:ko:*"。这些信息将被记录在一个文件当中,在大多数的 linux 系统中,这个文件为 /etc/gtk-2.0/gtk.immodules 和 /etc/gtk-3.0/gtk.immodules,有时会以 -32 或者 -64 结尾。

{{warning|在 Debian 进行了多架构的迁移之后,将使用不同的文件。对应文件将为 /usr/lib/<架构>/gtk-{2,3}.0/gtk.immodules }} 你需要使用

gtk-query-immodules-2.0 > <gtk-2.0 的输入法模块文件>

更新 gtk2 的文件,

或者如果你的 gtk2 版本新于 2.24.20,则应当使用

gtk-query-immodules-2.0 --update-cache

就像 gtk3 一样。

以及

gtk-query-immodules-3.0 --update-cache

更新 gtk3 的文件。

否则新的输入法模块将无法被识别。

如果由 GTK_IM_MODULE 指定的输入法模块没有被找到,gtk 将会回退到自动选择的方法。

QT_IM_MODULE

Qt 的输入法模块和 Gtk 类似,但是它不用额外的文件来识别。如果 QT_IM_MODULE 没有指定,qtconfig (Ubuntu/Debian/Archlinux 上是 qtconfig-qt4) 可以被用于选择默认的输入法模块。

否则它将会被 QT_IM_MODULE 选项覆盖。

LC_CTYPE

系统语系设置在任何情况下都不应该被修改。它可能会带来无法预测的效果。

这个环境变量应该仅在少数情况下被使用,包括 emacs 和 java。Emacs 有一个历史悠久的Bug,在 en_US.UTF-8 或者其他类似的语系下,它不会使用 XIM (尽管emacs是gtk程序,但是它还是使用XIM)。唯一可以绕过这个问题的办法是通过设置 LC_CTYLE。


例如,为了只在 emacs 下修改这个环境变量,可以使用以下命令启动

LC_CTYPE=zh_CN.UTF-8 emacs

它不会影响 emacs 的显示的语言。

注意,由于 XIM 的一些限制,即使你不用中文,你也应该尝试把 LC_CTYPE 设置为 zh_CN.UTF-8。