了解和设置不同的输入法


21

我将Trisquel 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

面对这个问题时,我了解了有关在at进行安装uim和设置的信息。最近,我从中删除了并删除了行。但是要克服错误,我打算现在摆脱它。GTK_IM_MODULE="uim"~/.profileuimGTK_IM_MODULE="uim"~/.profileibus

没有安装任何额外的输入方法(例如Trisquel的全新安装),echo $GTK_IM_MODULE输出结果xim因此,我很困惑,因为考虑默认输入方法为ibus,那么为什么$GTK_IM_MODULE要说xim呢?

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

此外,我发现了一个设置方案:

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

简要/广泛地,我需要帮助来了解安装/拆卸和设置不同的输入法:

  • 我如何知道当前哪个输入法处于活动状态?
  • 如何安装和设置不同的输入法?(我应该删除另一个吗?)

Answers:


45

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

正如您已经说过的那样,Gnome使ibus成为默认输入法,这一决定并非所有人都满意。有很多人喜欢fcitx(大多数KDE发行版中的默认设置)而不是ibus,其原因有几个:适当的语言支持(主要是日语,简体中文,繁体中文)或性能问题。由于我不会说任何需要特殊IM框架的东方语言,因此我无法在辩论中添加任何内容。但是,如果您对fcitx vs ibus的更多详细信息感兴趣,则可能需要阅读这份略过时的文章(2012年),但仍然可能是准确的LWN文章

但是,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分别在内部或内部的专用文件)或在local内设置这些变量~/.xprofile。在使用图形登录管理器(例如GDM,SDDM,KDM或LightDM)登录到系统时,将其设置为~/.bashrc~/.profile将无法确保执行这些行。如果要使用XDM,Slim或X来开始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可能是一些流浪变量定义的地方/etc/profile/etc/profile.d/*或任何其他本地或全局壳RC文件。如果需要,可以随时取消设置或覆盖此变量。

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


很好的解释和背景。现在gsettings,只要我尝试执行任何xD操作(即使--version segfaults!)
都不会对我进行隔离

所以我在Ubuntu 18.04上安装了ibus和xim。如果我不想输入CJK语言,可以安全地删除它们吗?
捕手

是的,但是除非需要,否则我不会卸载XIM。它非常陈旧,但有时用作其他功能的基础。因此,除非您真的需要几个kB,否则我不会将其卸载。
珍妮克·贝文多夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.