キーボードを貪欲に使うアプリに対処する方法

キーボードを貪欲に使うアプリに対処する方法

非常に特殊な問題を抱えていますが、X とキーボードの関係を理解する上で、どのような助けでも役立ちます。

XBMC から音楽を再生しながら ElectricSheep プログラムを起動できるようにしたいと思います。起動スクリプトはすでにセットアップしてあるので、問題なく ElectricSheep を起動できます。

問題は、ElectricSheep を閉じようとすると発生します。XBMC を実行せずに ElectricSheep を起動すると、Esc キーを押すと閉じます。XBMC が実行中の場合 (または、起動前に xbmc を終了する行をスクリプトに含めた場合)、すべてのキーボード入力が取得され、ElectricSheep を終了する唯一の方法は、ssh セッションから終了するか、X 自体を終了するかのいずれかになります。

XBMC の実行中に xev を実行すると、入力が受信されません。

アプリケーションを起動して、明示的に X キーボードを割り当てる方法はありますか? ご協力いただければ幸いです。

答え1

どのアプリケーションに「フォーカス」があるかによって異なります。私は「フォーカスはマウスに従う」を好みます。つまり、マウスが置かれているウィンドウにキーボードの押下が登録されることになります。他のモードには「クリックしてフォーカス」や「マウスの下にフォーカス」のバリエーションがあります。Microsoft Windows は「クリックしてフォーカス」です (例)。ただし、いくつかの tweakui ツールを操作すれば、必要に応じて「フォーカスはマウスに従う」にすることができます。

X-windows デスクトップが最初にどのモードになっているかはわかりませんが、通常はデフォルトで「クリックしてフォーカス」になっていると思います。自分の設定を確認する必要があります。私のマウス フォーカスの設定は、システム設定の「ウィンドウの動作」の下にあります (KDE 4.7.4)

私は Electric Sheep (夢のスクリーンセーバーですよね?) と XMBC (メディアセンター、記憶が確かなら) についてはあまり経験がないことを認めます。どちらもフルスクリーン アプリにしたいようですが、フォーカスが失われるため問題が発生する可能性があります。ES の問題のように聞こえます。ES がフォアグラウンドにある場合 (スクリーンセーバーとして機能している場合など)、キーストロークをすべてキャプチャして、それを中止信号として使用して終了し、画面を他の実行中のものに戻す必要があるためです。

実行中のさまざまなアプリを切り替えるには、ALT + TAB を試してください。これにより、アプリ間でフォーカスが回転するはずです。これは、XMBC と ES がウィンドウ形式か全画面形式かによって多少異なります。

もちろん、いくつかのプログラムを使用してコマンドラインでフォーカスを制御することはできますが、頭が真っ白になってしまいました... /bin ディレクトリとメモを調べて見つけました。数か月前、プロジェクト用に独自の制御プログラムを作成し、ウィンドウとフォーカスをプログラムで制御するために何ができるかを確認しました...

ああ、ここに一つあります:

wmctrl のマニュアルページには、「-R」オプションを使用してウィンドウを表示できると書かれています...

もっと役に立つと思ったものがもう 1 つあるのですが、今日は名前がまったく思い浮かびません。誰かが私が何をほのめかしているのかわかって投稿してくれるかもしれません。でも、私は探し続けます。どうやら私のブロンドは今日は力強く動いているようです。

答え2

ハックとして、「貪欲な」アプリをゼファーまたは翻訳または、実際の X サーバーから切り離します。リモートで使用します。

より正確な答えは、コードを再構成または修正して、「貪欲な」アプリがそうならないようにすることかもしれません。

または、アプリが実際に画面を占有することを意図している場合は、ES を何らかのプラグインとして実行する方法を見つけます。

関連情報