私の設定:libvirtで管理されているSpiceディスプレイを持つQemu、LinuxでX11を実行します。
QemuクライアントにフォーカスがあるときにウィンドウマネージャとXサーバーでキーバインディングを維持する方法を探しています。libvirtやQemuオプション、コンパイルフラグ、いくつかのX11マジックなど何でも可能です。
具体的な例:キーを押すと、Mod4+1
WMがラベルに切り替わります。1。現在、ゲストは1
入力として受信し、WMは何も受信しません。
グラフィックQemuクライアント(主にWindowsクライアントですが重要ではありません)は、xkbをバイパスしても無差別にキーボード入力を受け取るようです。などの項目は無視してくださいcapslock(swapescape)
。
これにより、ウィンドウマネージャが混乱する可能性があります。たとえば、クライアントの繰り返し中にQemuクライアントに集中すると、WMのバインディングは役に立ちません。マウスを動かして問題の顧客の注意を分散させるまで。言うまでもなく、これはキーボードベースのワークフローを中断します。本当に迷惑ですね。
さらに、入力がクライアントに渡されるので、ゲスト内部アプリケーションが入力を処理するように選択する方法によっては、あらゆる種類の興味深いことが発生する可能性があります。
編集:アップストリームではこれが望ましい動作だと思うようです。「キーボードフォーカスを受け取ったら、好きなようにキーボードを持ちます。どのキーボードフォーカスが表示されたら、キーを押して仮想マシンに入ります。 - 私が避けたいのはこれです。 Spiceのお客様が権利を持つ理由はありません。みんなフォーカスを受信するかどうかにかかわらず、キーボード入力。
ベストアンサー1
あなたはウィンドウマネージャの親 - 子関係のリセット。また、ウィンドウマネージャは、キーボードイベントの伝播がソースウィンドウではなく親ウィンドウで開始されていることを確認する必要があります(Xlibのデフォルト)。