Xorg

如何讓 Compose 在 GTK 和 Qt 應用程序中工作?

  • June 27, 2020

我使用 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_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 應用程序中也不起作用)或 GTKQt 中發生了一些變化。*_IM_MODULE現在變數還不夠。讓現代 GTK 和 Qt 辨識xim及其 Compose 序列還需要什麼?

PS關於Compose key not working in GTK有一個類似的(且未回答的)問題。與提問者不同,我沒有ibus安裝。

找到了適用於 GTK 應用程序(但不適用於 Qt)的解決方案。一個需要設置

XMODIFIERS="@im=none"

讓 X11 處理死鍵。感謝@PabloSaratxaga的回答

我在 openSUSE 中遇到了類似的問題。~/.XComposeGTK+ 應用程序會忽略它,因此我自己的 Compose 序列在 Firefox、Gimp 和其他應用程序中不起作用。

我發現gtk-query-immodules-2.0列出了一些輸入法,但沒有xim;因此,無論GTK_IM_MODULE變數如何,xim都不可用。安裝軟體包gtk2-immodule-xim(和朋友)解決了這個問題。

也許這句話對遭受同樣詛咒的人有用。

引用自:https://unix.stackexchange.com/questions/60884