了解和设置不同的输入法

了解和设置不同的输入法

我用特里克尔GNU/Linux 7.0 LTS 和 GNOME 3倒叙环境。

我听说过三种不同的输入法。ibusximuim。它似乎ibus已预装在我的系统上。

$ cat trisquel_7.0_i686.iso.manifest | grep ibus
gir1.2-ibus-1.0 1.5.5-1ubuntu3
ibus 1.5.5-1ubuntu3
ibus-gtk:i386 1.5.5-1ubuntu3
ibus-m17n 1.3.4-3ubuntu1
ibus-table 1.5.0.is.1.5.0.20130419-2
libibus-1.0-5:i386 1.5.5-1ubuntu3
libusb-0.1-4:i386 2:0.1.12-23.3ubuntu1
libusb-1.0-0:i386 2:1.0.17-1ubuntu2
libusbmuxd2 1.0.8-2ubuntu1
libustr-1.0-1:i386 1.0.4-3ubuntu2

当面对问题 我了解了如何安装uim和设置GTK_IM_MODULE="uim"at ~/.profile。最近我从 中删除uim并删除了GTK_IM_MODULE="uim"~/.profile。但要克服bug,我现在打算去掉ibus

无需安装任何额外的输入法(例如 Trisquel 的全新安装),echo $GTK_IM_MODULE输出xim所以,我很困惑,因为考虑默认输入法是ibus,然后为什么$GTK_IM_MODULExim

我还可以吗apt-get remove ibus?或者我应该uim先安装然后删除ibus?我还想知道当前正在使用哪种输入法ibusxim设置输入法的正确方法是什么(即是GTK_IM_MODULE="uim"~/.profile

另外,我发现了一种gsettings方案:

$ gsettings get org.gnome.desktop.interface gtk-im-module
'gtk-im-context-simple'

简单/广泛地我需要帮助来理解安装/删除和设置不同的输入法:

  • 我如何知道当前使用的是哪种输入法?
  • 如何安装和设置不同的输入法? (我应该删除另一个吗?)

答案1

整个 X11 输入堆栈一团糟。首先,如果您只是输入 XKB 键盘布局定义的拉丁字符或多字符组合序列,则不需要任何特殊的输入法框架。严格来说,任何多键序列(例如死键)都需要非常简单的输入方法。但它们是由 libx11/XKB 提供的,无需任何额外的 IM 框架即可工作。因此,如果您不需要输入中文或日文等语言,则完全可以卸载所有 ibus、uim、fcitx 或任何您拥有的输入法。

正如您已经说过的,Gnome 将 ibus 作为默认输入法,当时并不是每个人都对这一决定感到高兴。有很多人更喜欢 fcitx(这似乎是大多数 KDE 发行版的默认设置)而不是 ibus。此外,ibus 中显然缺少 fcitx 所具有的几个功能,至少在现在已经过时了绿网文章于 2012 年发布,例如语言支持不完整(主要是日语、简体中文、繁体中文)或性能问题。由于我不会说任何需要特殊 IM 框架的东方语言,因此我无法在这场辩论中添加任何内容,而且很可能大多数问题已经得到解决。我主要注意到,从用户界面的角度来看,ibus 与非 GTK 桌面环境的集成不太好,但对于基于 GTK 的 DE 来说可能还不错。

然而,ibus 是 Gnome 的默认 IM 这一事实并不意味着它是强制性的。您可以使用您喜欢的任何其他输入法,也可以根本不使用。 IM 配置是通过环境变量完成的。但除了当你只使用 GTK+ 应用程序时(我对此表示怀疑),你应该设置的不仅仅是GTK_IM_MODULE.设置输入法的正确方法是:

export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"

如果是 fcitx 或

export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"

如果是 ibus。 uim 的工作方式相同。如果您想明确禁用任何输入法,请使用以下设置:

export GTK_IM_MODULE="gtk-im-context-simple"
export QT_IM_MODULE="simple"

空字符串也可以。

您可以在系统范围内设置这些变量/etc/profile(或分别在 内部的专用文件/etc/profile.d)或本地~/.xprofile.将其设置为~/.bashrc~/.profile不会确保在使用图形登录管理器(例如 GDM、SDDM、KDM 或 LightDM)登录系统时执行这些行。如果您使用 XDM、Slim 或 启动 X 会话startx,则需要将这些行放入 中~/.xinitrc

如果您配置了 ibus 以外的输入法,请随后转到 Gnome 设置并确保禁用所有 ibus 相关设置,尤其是所有键盘快捷键。或者,使用以下命令告诉 Gnome 不要触摸键盘设置:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

或者完全卸载 ibus。

那么XIM呢? XIM 是一个相当过时的输入法协议,ibus 和 fcitx 仅出于遗留支持原因而实现它。现在没有任何理由让您想要使用 XIM 而不是这两者中的任何一个。您想要设置的唯一原因GTK_IM_MODULE="xim"覆盖 GTK 的硬编码 ComposeKey 设置

回答你的另一个问题:我认为除了查看环境变量或了解系统上安装了哪些 IM 之外,实际上没有其他方法可以检测当前处于活动状态的输入法。如果GTK_IM_MODULE未设置,GTK 将根据 中的配置选择内置 IM /etc/gtk-2.0/gtk.immodules。 GTK 3.0 查找/usr/lib/gtk-3.0/3.0.0/immodules.cache其中由gtk-query-immodules-3.0.

GTK_IM_MODULE设置为 的原因xim可能是 或任何其他本地或全局 shell RC 文件中的某个杂散变量/etc/profile定义/etc/profile.d/*。如果您觉得有必要,请随意取消设置或覆盖此变量。

然而,根据这个Gnome 错误报告评论我假设通过配置的值会覆盖为 DBus 激活的应用程序gsettings设置的值。GTK_IM_MODULE因此,至少您的 Gnome 应用程序gtk-im-context-simple目前可能正在使用,这实际上意味着标准行为(即没有 ibus 或任何其他专用 IM)。

相关内容