web-dev-qa-db-ja.com

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

私は長い間Gnomeを使用していましたが、デフォルトのGTK動作よりもVanilla X入力メソッド(xim)を優先しました。私は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'

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で何かが変わったと思います( Compose Qtアプリでも機能しません)、またはGTKおよびQtでは機能しません。 *_IM_MODULE変数は現在十分ではありません。最新のGTKとQtにximとそのComposeシーケンスを認識させるには、他に何が必要ですか?

追伸 GTKでコンポーズキーが機能しない について同様の(未回答の)質問があります。質問者とは異なり、私はibusをインストールしていません。

16
sastanin

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

XMODIFIERS="@im=none"

x11にデッドキーを処理させるため。 彼の答え を@PabloSaratxagaに感謝します。

9
sastanin

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

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

多分この発言は同じ呪いに苦しんでいる人々のために役立つことがわかります。

3
linguist

これは永続的な設定の方法です。たとえば、ここで説明されています https://wiki.edubuntu.org/ComposeKey#line-66 。このように〜/ .XComposeで作成キーを設定しました。私はこれをubuntuシステムとdebianシステムの両方でチェックしました。

1
ASten