アップグレード後にGTKアプリケーションで機能しない(作成)キーが機能しない

アップグレード後にGTKアプリケーションで機能しない(作成)キーが機能しない

私はKubuntuを実行し、KDEをデフォルトのデスクトップ環境として使用しています。

しばらく前に、中国語のピンインと他のアクセント文字と特殊文字を入力できるようにデッドキーを設定しました。

ところで、私は漢字の入力方法を設定する最も簡単な方法だと思い、IBUSを使用しています。

アップデート前は、すべてのアプリでデッドキー/キーの組み合わせが正しく機能していました。

QTアプリケーションでは動作しますが、GTKアプリケーション(このブラウザなど)では動作しません。私がタイピングを最も多くするところなので不幸なことです。現在の解決策は、KDEランチャーにアクセント文字を入力してコピーすることです(Alt + F2、デッドキーを使用して入力、Ctrl + X、Esc、Ctrl + V)。これは少し面倒です。

これらすべてを設定したかどうかはかなり古いので、どの情報がデバッグに役立つのかわかりません。

興味深いことに、環境変数$ QT_IM_MODULEには値はありません。 $GTK_IM_MODULEにはximがあります。

ibus-gtk3をインストールしました。診断に役立つ可能性がある他の情報を投稿できますか?

インストールスクリプトをさまざまな場所(en_US、/etc/X11/xinit/xinput.d/ibusなど)に貼り付けました。どちらが優先するのかわかりませんが、エコー時にQT_IM_MODULEに値がないため、どちらかが実行されているかどうかはわかりません。どちらもibusではない場合、デフォルトでは「xim」でなければならないことを提案します。

また、下記のライブラリ(im-ibus.soなど)がなく、そのライブラリを取得する方法やライブラリへのリンクが見つからないことも言及する必要があります。実際、私のgtk-3.0.0/とqt4/ディレクトリにはinputmethod/またはプラグイン/ディレクトリもありません。それは問題の一部かもしれませんが、更新前にも機能していたのでよくわかりません。

# start IBus
# vim: set sts=4 expandtab:

# start IBus daemon
#/usr/bin/ibus-daemon --daemonize --xim
XIM=ibus
XIM_PROGRAM=/usr/bin/ibus-daemon
XIM_ARGS="--xim"

# set variables for the plain XIM
XMODIFIERS=@im=ibus

GTK_IM_MODULE=xim
# use immodule only when available for both GTK 2.0 and 3.0
IM_CONFIG_MARKER2=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-2.0/*/immodules/im-ibus.so \
                        /usr/lib/gtk-2.0/*/immodules/im-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER2=1
        break
    fi
done

IM_CONFIG_MARKER3=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-3.0/*/immodules/im-ibus.so \
                        /usr/lib/gtk-3.0/*/immodules/im-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER3=1
        break
    fi
done
if [ $IM_CONFIG_MARKER2 = 1 ] && [ $IM_CONFIG_MARKER3 = 1 ] ; then
    GTK_IM_MODULE=ibus
fi

QT_IM_MODULE=xim
# use immodule when available for Qt4 (Qt3 has been long dead)
for IM_CONFIG_MARKER in /usr/lib/*/qt4/plugins/inputmethods/libqtim-ibus.so\
                        /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        QT_IM_MODULE=ibus
        break
    fi
done

CLUTTER_IM_MODULE=xim
# use immodule when available for clutter
for IM_CONFIG_MARKER in /usr/lib/*/clutter-imcontext/immodules/im-ibus.so \
                        /usr/lib/clutter-imcontext/immodules/im-ibus.so; do
    if [ -e $IM_CONFIG_MARKER ]; then
        CLUTTER_IM_MODULE=ibus
        break
    fi
done

DEPENDS="ibus, ibus-gtk|ibus-qt4|ibus-clutter"

答え1

X11レベルで入力モジュールを使用する場合(たとえば、定義された入力モジュールによってXMODIFIERS=…)、X11はもはやデッドキーまたは組み合わせを処理しませんが、入力モジュールはこれを行います。

あなたに必要なのは、との間XMODIFIERS="@im=ibus"を切り替える方法ですXMODIFIERS="@im=none"(X11に作業をさせてください)。おそらく、これを行うためのGtk設定がすでにあり、入力方法の右クリックメニューに表示されるようにすることもできます。そうでなければ、これはGtk / Gnomeチームにとって良い提案です。

答え2

X入力モデルは非常に複雑です。 (ある人は、このモデルを完全に理解する人が地球上に5人しかいないと言ったりしました。私はそのうちの1人ではありません。)

a) したがって、最初は、シンボルごとに1つのキーでキーボードを読み取るX11機能のみがあります。

b)しかし、一部の人々はデッドキーを望んでいるので、別の関数は複数のキー、つまり文字列を受け入れます。また、どのキーシーケンスがどの文字シーケンスを生成するかを説明する1つ以上のファイルが必要です。

c)他のサーバー型プログラムと対話するより複雑な入力方法もあります。これは通常、日本語または中国語を入力するために使用されます。

b)とc)が機能するには、b)のXMODIFIERS変数 "@im = none"を正しく定義する必要があります(cの場合、@im = xxxxxの値は使用されている3Dプログラムによって異なります)。そしてすべてが正しく設定されました。そして正しい入力機能(一部のX11プログラムがまだ存在し、aの元の機能のみを使用)を使用するアプリケーションは幸運ではありません。

d)その後、これらすべてが複雑すぎて、特にc)の相互作用が非常に見苦しいので、QtやGtkなどの最新のツールキットはb)/ c)をバイパスして独自の入力レベルのサポートを提供し始めました。

したがって、ツールキットの入力方法を使用することを選択できます(ただし、Gtk/Qt/その他は異なります)。またはb)/ c)を使用できます(bまたはcは、主に入力したい言語によって異なります)。ただし、これをb / cとして使用するには、高度なツールキットで直接実行するのではなく、X11で実行する必要があります。 Gtkには「XIMサーバー入力」という入力があります。 b / cを選択するときは、その方法を使用してください。

Qtにも同様のものが必要です。 KDE3(Qt3)の場合は、シェル変数でQT_IM_MODULE=xim十分です。これで、動的(GUIやdbusなどの)構成がシェル変数よりも優先されるようになりました。

答え3

これは関係があるかもしれませんし、そうでないかもしれません。数ヶ月間、作成キーがしばらくして動作を停止しました。キーを定義するために.Xmodmapを定義し、xmodmapを実行した後に少なくとも1つのドキュメントに対して機能しました。ところが数時間(?)過ぎると消えました。

ログアウトする必要もなく、アプリを開く必要もありません。この問題を引き起こす可能性のあるイベントを正確に見つけることはできません。たぶんキーボード操作に関連しているかもしれません。キーボードを変更しましたが、以前よりもこのようなことがあまり起こらないようです。

関連情報