コマンドラインでXキーとポインタをキャッチします。

コマンドラインでXキーとポインタをキャッチします。

Xサーバークロールを一覧表示および管理するためのコマンドラインツールは何ですか? (これはキーとポインタをキャッチするのと同じです。つまり、特定のキーまたはマウスボタンの使用を特定のアプリケーションに制限するか、マウスポインタが画面の特定の領域に留まるように制限することです。)私は次の仮想ユーティリティを探していますxgrab。同じことを見せて

Key     0x00f00ba5  0x123   0
Button  0x00f00ba5  2       
Pointer 0x00abcdef  

XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)、、、、XGrabButtonXGrabPointer呼び出されたことを示しますXGrabKeyboardXGrabServer可能な場合)。表示形式は重要ではありません。私が望むのは、誰が何をインポートしているのかを確認する方法と、そのインポートをキャンセルする方法です(可能であればX11 APIがそれを許可するかどうかはわかりません)。

答え1

最新バージョンのX(X.orgサーバー≥1.11)は、さまざまなデバッグキーボードシンボルをサポートしています。今回提出してください。トリガーされると、クロール関連のアクションが実行されます。

基本的に(少なくとも最新バージョンでは)、これは無効になります(デフォルトのキーマップにはありません)。

ただし、すでにxdotoolインストールされている場合はいコマンドラインから実行して呼び出すことができます。

xdotool key NameOfKey

NameOfKey有効にしたいキーボード記号はどこにありますか?たとえば、Xサーバーログのアクティブクロールリストを印刷するには、を使用しますxdotool key XF86LogGrabInfo

関連する主な記号は次のとおりです。

XF86LogGrabInfo現在押されていないキーキャッチなどの手動クロールではなく、アクティブクロールのみが一覧表示されます。パッシブキャッチに関する情報を取得するには、キャッチを有効にする必要があります。xdotool key XF86LogGrabInfo目的のキーコードまたはマウスボタンの組み合わせを押すと実行されます。次のようにしてください。

  1. 走るsleep 1; xdotool key XF86LogGrabInfo
  2. 1秒以内にキーまたはマウスボタンの組み合わせを押します。
  3. 1秒後にキー/ボタンを放します。
  4. Xサーバーログで「アクティブクロール...」メッセージを確認してください(常に/var/log/Xorg.0.log)。

答え2

個々のキーまたはボタンに存在する可能性のある手動のキャッチに関する即時の情報はわかりませんが、キーボードまたはマウスデバイス全体のアクティブなキャッチを一覧表示する方法はいくつかあります。

  1. すべてのプラットフォームで、Xorg 1.11以降(またはパッチが適用された以前のバージョン)のみが、次のようにクロールデータをログにダンプするようにショートカットをマップします。このパッチノートに記載されています。
  2. Solaris 11(Solaris 11 Express 2010.11または実際のSolaris 11リリース)では、次のデバッガスクリプトを使用します/usr/demo/Xserver/mdb/list_Xserver_devicegrab_clientXサーバーから情報を取得する。現在、Xorg 1.11ショートカットでは扱っていないサーバースナッチ機能もあります。

1見るhttp://tronche.com/gui/x/xlib/input/pointer-grabbing.htmlアクティブおよびパッシブ クロールを定義するために使用されます。

答え3

これは機械カタツムリの答えに加えて-

Xorgログのエントリは読みにくいかもしれません。私はそれらを解析し、人間に優しい形式で提示するプログラムを書いた。

https://gist.github.com/Cyber​​Shadow/6412d11aea64144f8905cc0b8196f38e

使用するには、まずxdotool key XF86LogGrabInfoMechanical 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

関連情報