web-dev-qa-db-ja.com

ホットキーを「所有」しているプログラムを確認するにはどうすればよいですか?

4.2.0カーネルのGentoo上でXFCE 4.12を実行しています。キーボードのPlayPauseボタンは、VLCのグローバルホットキーとして機能していました。これで、VLCはキーを認識しません。 「Alt + Media Play Pause」は表示されますが、キーだけは表示されません。

どのプログラムがそのキーをキャプチャしているかどうかを確認する方法はありますか?

xdotool key "XF86LogGrabInfo"を実行すると、tail /var/log/Xorg.0.logファイルは

[ 10138.690] (II) Printing all currently active device grabs:
[ 10138.690] (II) End list of active device grabs
33
Andrew Redd

キーを取得したアプリ/プログラムを確認するには、デバッグキーシム XF86LogGrabInfo を使用します。 xdotoolを使用して、キー+ XF86LogGrabInfoを同時に押します。ターミナルで

KEY=XF86AudioPlay
xdotool keydown ${KEY}; xdotool key XF86LogGrabInfo; xdotool keyup ${KEY} 

次に、tail /var/log/Xorg.0.logで出力を確認します
gnome 3/gdmおよびsystemdを使用すると、これはXorg.0.logに記録されなくなりました(代わりにjournalに記録されます) )。その場合、実行できます

journalctl -f

次に、別のターミナルでxdotoolコマンドを実行します。最初のターミナルに切り替えると、次のようなものが表示されます

/usr/lib/gdm/gdm-x-session[629]: Active grab 0x40c0a58e (xi2) on device 'Virtual core keyboard' (3):
/usr/lib/gdm/gdm-x-session[629]: client pid 708 /usr/bin/gnome-Shell
/usr/lib/gdm/gdm-x-session[629]: at 32595124 (from passive grab) (device frozen, state 6)
/usr/lib/gdm/gdm-x-session[629]: xi2 event mask for device 3: 0xc000
/usr/lib/gdm/gdm-x-session[629]: passive grab type 2, detail 0xac, activating key 172

上記の例では、キーを取得したプログラム(クライアント)はgnome-Shellです。

21
don_crissti