Xサーバークロールを一覧表示および管理するためのコマンドラインツールは何ですか? (これはキーとポインタをキャッチするのと同じです。つまり、特定のキーまたはマウスボタンの使用を特定のアプリケーションに制限するか、マウスポインタが画面の特定の領域に留まるように制限することです。)私は次の仮想ユーティリティを探していますxgrab
。同じことを見せて
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
、、、、XGrabButton
がXGrabPointer
呼び出されたことを示しますXGrabKeyboard
(XGrabServer
可能な場合)。表示形式は重要ではありません。私が望むのは、誰が何をインポートしているのかを確認する方法と、そのインポートをキャンセルする方法です(可能であればX11 APIがそれを許可するかどうかはわかりません)。
答え1
最新バージョンのX(X.orgサーバー≥1.11)は、さまざまなデバッグキーボードシンボルをサポートしています。今回提出してください。トリガーされると、クロール関連のアクションが実行されます。
基本的に(少なくとも最新バージョンでは)、これは無効になります(デフォルトのキーマップにはありません)。
ただし、すでにxdotool
インストールされている場合はいコマンドラインから実行して呼び出すことができます。
xdotool key NameOfKey
NameOfKey
有効にしたいキーボード記号はどこにありますか?たとえば、Xサーバーログのアクティブクロールリストを印刷するには、を使用しますxdotool key XF86LogGrabInfo
。
関連する主な記号は次のとおりです。
- XF86LogGrabInfo:アクティブクロールリストをXサーバーログに印刷する
- XF86Ungrab:クロールを保持しているアプリケーションを終了せずに、アクティブなクロールをすべて停止します。
- XF86ClearGrab処置: アクティブなクロールを保持しているすべてのプロセスを終了します。
XF86LogGrabInfo現在押されていないキーキャッチなどの手動クロールではなく、アクティブクロールのみが一覧表示されます。パッシブキャッチに関する情報を取得するには、キャッチを有効にする必要があります。xdotool key XF86LogGrabInfo
目的のキーコードまたはマウスボタンの組み合わせを押すと実行されます。次のようにしてください。
- 走る
sleep 1; xdotool key XF86LogGrabInfo
- 1秒以内にキーまたはマウスボタンの組み合わせを押します。
- 1秒後にキー/ボタンを放します。
- Xサーバーログで「アクティブクロール...」メッセージを確認してください(常に
/var/log/Xorg.0.log
)。
答え2
個々のキーまたはボタンに存在する可能性のある手動のキャッチに関する即時の情報はわかりませんが、キーボードまたはマウスデバイス全体のアクティブなキャッチを一覧表示する方法はいくつかあります。
- すべてのプラットフォームで、Xorg 1.11以降(またはパッチが適用された以前のバージョン)のみが、次のようにクロールデータをログにダンプするようにショートカットをマップします。このパッチノートに記載されています。。
- Solaris 11(Solaris 11 Express 2010.11または実際のSolaris 11リリース)では、次のデバッガスクリプトを使用します
/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client
。Xサーバーから情報を取得する。現在、Xorg 1.11ショートカットでは扱っていないサーバースナッチ機能もあります。
1見るhttp://tronche.com/gui/x/xlib/input/pointer-grabbing.htmlアクティブおよびパッシブ クロールを定義するために使用されます。
答え3
これは機械カタツムリの答えに加えて-
Xorgログのエントリは読みにくいかもしれません。私はそれらを解析し、人間に優しい形式で提示するプログラムを書いた。
https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e
使用するには、まずxdotool key XF86LogGrabInfo
Mechanical snailの回答の説明に従って実行してください。次に、上記のリンクされたプログラムを実行します。 Xorgログファイルが見つからない場合は、オプションを使用して/var/log/Xorg.0.log
その場所を指定できます。詳細より。--xorg-log
--help
答え4
上記の答えに基づいて、次のコマンドはキーボードショートカットを持つすべてのプログラムを識別するのに役立ちました。
$ lsof -c Xorg | grep ".log" # find out the path for the Xorg log file
Xorg 16025 sr 4w REG 254,1 225839 3933229 /home/sr/.local/share/xorg/Xorg.0.log
$ xdotool key XF86LogGrabInfo # prints all Xorg registered grabs
$ cat /home/sr/.local/share/xorg/Xorg.0.log | grep grabs
[ 39303.019] (II) Printing all currently active device grabs:
[ 39303.019] (II) End list of active device grabs
[ 39303.019] Printing all currently registered grabs
[ 39303.019] Printing all registered grabs of client pid 16024 xinit /home/sr/.xinitrc -- /etc/X11/xinit/xserverrc :0 vt1 -keeptty -auth /tmp/serverauth.6AO52I3zhe
[ 39303.019] Printing all registered grabs of client pid 16045 unclutter
[ 39303.019] Printing all registered grabs of client pid 16047 xscreensaver
[ 39303.019] Printing all registered grabs of client pid 16109 /usr/lib/firefox/firefox
[ 39303.019] Printing all registered grabs of client pid 16055 xscreensaver-systemd
[ 39303.019] Printing all registered grabs of client pid 16057 xbindkeys
[ 39303.027] Printing all registered grabs of client pid 16039 /usr/bin/openbox --startup /usr/lib/openbox/openbox-autostart OPENBOX
[ 39303.039] Printing all registered grabs of client pid 16048 copyq
[ 39303.039] Printing all registered grabs of client pid 16049 konsole
[ 39303.039] Printing all registered grabs of client pid 16095 /usr/bin/copyq --clipboard-access monitorClipboard
[ 39303.039] Printing all registered grabs of client pid 16109 /usr/lib/firefox/firefox
[ 39303.039] Printing all registered grabs of client pid 16456 subl --detached
[ 39303.039] Printing all registered grabs of client pid 16465 /usr/lib/at-spi2-registryd --use-gnome-session
[ 39303.039] Printing all registered grabs of client pid 17178 xdotool key XF86LogGrabInfo
[ 39303.039] End list of registered passive grabs
だから私の場合、次のアプリケーションにキーバインディングが適用されます:xinit、unclutter、xscreensaver、firefox、xbindkeys、openbox、copyq、konsole、subl、at-spi2-registryd