Gil*_*il' 25 command-line keyboard x11 mouse
有哪些命令行工具可以列出和管理 X 服务器抓取?(这就像在键和指针抓取中一样抓取,即将特定键或鼠标按钮的使用限制到特定应用程序,或将鼠标指针限制在特定屏幕区域中。)我正在寻找一种假设的xgrab
实用程序显示诸如
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
Run Code Online (Sandbox Code Playgroud)
意味着已经XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
使用XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(如果可能)调用了等等。显示格式无关紧要,我想要的是某种方式来查看谁在抓取什么,以及可能以某种方式撤销这些抓取(如果可能,我不确定 X11 API 是否允许这样做)。
Mec*_*ail 31
最新版本的 X(X.org 服务器?1.11)支持几个调试键符,在这个提交中引入。触发时,这些会执行与抓取相关的操作。
默认情况下(至少在最近的版本中),这些是禁用的(默认键盘映射中没有)。
但是,如果您已xdotool
安装,则可以通过在命令行上执行来调用它们:
xdotool key NameOfKey
Run Code Online (Sandbox Code Playgroud)
NameOfKey
您要激活的键符在哪里。例如,要将活动抓取列表打印到 X 服务器日志,请使用xdotool key XF86LogGrabInfo
.
相关的键符是:
请注意,XF86LogGrabInfo仅列出主动抓取,而不是被动抓取,例如抓取当前未按下的键。如果您想获取有关被动抓取的信息,您需要激活抓取:xdotool key XF86LogGrabInfo
按下您感兴趣的键和键或鼠标按钮组合时运行。做类似的事情:
sleep 1; xdotool key XF86LogGrabInfo
/var/log/Xorg.0.log
)。对于可能存在的单个键或按钮的被动抓取1,我一无所知,但有几种方法可以列出整个键盘或鼠标设备的主动抓取。
/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client
,如从 X 服务器获取信息中所述。这里还有一个用于服务器抓取,Xorg 1.11 热键目前没有涵盖。1有关主动抓取与被动抓取的定义,请参见http://tronche.com/gui/x/xlib/input/pointer-grabbing.html。
这是对机械蜗牛的回答的补充——
Xorg 日志中的条目可能非常难以辨认。我编写了一个程序来解析它们并以人类易于处理的形式呈现它们:
https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e
要使用,首先运行xdotool key XF86LogGrabInfo
,如机械蜗牛的回答中所述。然后,运行上面链接的程序。如果您的 Xorg 日志文件不在/var/log/Xorg.0.log
,您可以使用该--xorg-log
选项指定其位置。详情请参阅--help
。
归档时间: |
|
查看次数: |
4857 次 |
最近记录: |