ComposeをGTKおよびQtアプリで動作させる方法は?


15

私は長い間Gnomeを使用していましたがxim、デフォルトのGTK動作よりもバニラX入力方式()を優先しました。環境変数をに設定しGTK_IM_MODULEQT_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 ''、シーケンスの3番目のキーを待たずに、アプリがすぐにエコーします。

Xorg(ComposeQtアプリでも動作しないため)、またはGTK Qtで何かが変更されたと思います。*_IM_MODULE変数は今では十分ではありません。最新のGTKとQtを認識させxim、そのComposeシーケンスを作成するには、他に何が必要ですか?

PS GTKでComposeキーが機能しないという同様の(および未回答の)質問があります。質問者とは異なり、私はibusインストールしていません。

回答:


7

GTKアプリで動作するソリューションを見つけました(Qtでは動作しません)。設定する必要があります

XMODIFIERS="@im=none"

X11がデッドキーを処理できるようにします。@PabloSaratxaga の回答に感謝します


2

openSUSEでも同様の問題がありました。~/.XComposeGTK +アプリケーションでは無視されるので、FirefoxやGimpなどでは、独自のComposeシーケンスが機能しませんでした。

gtk-query-immodules-2.0いくつかのインプットメソッドがリストされていることがわかりましたが、リストされていませんxim。そのため、GTK_IM_MODULE変数に関係なく、xim利用できませんでした。パッケージgtk2-immodule-xim(および友人)をインストールすることで問題は解決しました。

この発言は、同じ呪いに苦しんでいる人々に役立つかもしれません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.