如何使Compose在GTK和Qt应用程序中工作?


15

我使用Gnome已有很长时间了,但是xim相对于默认的GTK行为,首选Vanilla X输入法()。我只设置GTK_IM_MODULEQT_IM_MODULE环境变量xim,并没有与多个布局配置,任何问题的Compose关键,自定义~/.XComposemisc:typo排版扩展。

最近的Gnome 3.6发行了一个半熟的越野车,ibus 并将其强加给用户,从而完全弄糟了键盘输入。我只是无法像以前那样使键盘正常工作(甚至ibus禁用了键盘),而不得不完全放弃Gnome。

现在,我使用一个简单的窗口管理器,并使用配置我的键盘setxkbmap。虽然键盘可以再次正常工作,但我无法在任何地方都可以使用Compose键。Compose可在普通的X11应用程序(xterm)中使用,但不适用于GTK2,GTK3和Qt应用程序。

我使用当前的Archlinux版本:

xorg-xinput 1.6.0
xorg-server 1.13.1
xf86-input-keyboard 1.6.2
gtk2 2.24.14
gtk3 3.6.4
qt 4.8.4

并启用这样的Compose密钥:

setxkbmap ... -option 'compose:menu'

和export GTK_IM_MODULEQT_IM_MODULE变量:

$ echo $GTK_IM_MODULE $QT_IM_MODULE 
xim xim

Compose X11正确识别密钥:

$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
135 Multi_key

它可以按正常运行xterm~/.XCompose包括我的顺序。它不适用于GTK或Qt应用程序。假设,如果我输入Compose ',则应用程序将'立即回显,而无需等待序列中的第三个键。

现在我想Xorg都发生了变化(因为 Compose在Qt应用程序中也不起作用)或GTK Qt中发生了一些变化。*_IM_MODULE变量现在还不够。要使现代的GTK和Qt能够识别xim其组成序列,还需要做什么?

PS对于Compose键在GTK中不起作用,存在类似(未解决)的问题。不像问问者,我没有ibus安装。

Answers:


7

找到了适用于GTK应用程序(而非Qt)的解决方案。一个需要设置

XMODIFIERS="@im=none"

让X11处理死键。感谢@PabloSaratxaga 的回答


2

我在openSUSE中遇到了类似的问题。 ~/.XCompose会被GTK +应用程序忽略,因此我自己的Compose序列在Firefox,Gimp和其他版本中不起作用。

我发现gtk-query-immodules-2.0列出了一些输入法,但没有列出xim;因此,无论GTK_IM_MODULE变量如何,xim都不可用。安装软件包gtk2-immodule-xim(和朋友)解决了该问题。

也许这句话对遭受同样诅咒的人很有用。


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.