如何讓 Compose 在 GTK 和 Qt 應用程序中工作?
我使用 Gnome 很長時間了,但我更喜歡 vanilla X 輸入法 (
xim
) 而不是預設的 GTK 行為。我只是將環境變數設置為,GTK_IM_MODULE
並且對多佈局配置、鍵、自定義和排版擴展沒有任何問題。QT_IM_MODULE``xim``Compose``~/.XCompose``misc: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_MODULE
,QT_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
及其 Compose 序列還需要什麼?PS關於Compose key not working in GTK有一個類似的(且未回答的)問題。與提問者不同,我沒有
ibus
安裝。
找到了適用於 GTK 應用程序(但不適用於 Qt)的解決方案。一個需要設置
XMODIFIERS="@im=none"
讓 X11 處理死鍵。感謝@PabloSaratxaga的回答。
我在 openSUSE 中遇到了類似的問題。
~/.XCompose
GTK+ 應用程序會忽略它,因此我自己的 Compose 序列在 Firefox、Gimp 和其他應用程序中不起作用。我發現
gtk-query-immodules-2.0
列出了一些輸入法,但沒有xim
;因此,無論GTK_IM_MODULE
變數如何,xim
都不可用。安裝軟體包gtk2-immodule-xim
(和朋友)解決了這個問題。也許這句話對遭受同樣詛咒的人有用。