我如何找出哪个程序“拥有”一个热键?


32

我在具有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

@don_crissti谢谢,但这似乎什么也没回答。还有另一种注册热键的方法吗?
Andrew Redd

@don_crissti确实相关,但是我不认为这是重复的。列出所有抓斗并找到一个特定的抓斗者是不一样的。对安德鲁有用的解决方案包含在注释中(因为安德鲁的问题不是我要的)。
吉尔(Gilles)“所以,别再邪恶了”

是的,跑步xdotool keydown "XF86AudioPlay"; xdotool key "XF86LogGrabInfo"; xdotool keyup "XF86AudioPlay"; sleep 1; tail /var/log/Xorg.0.log做到了。谷歌浏览器以某种方式注册了热键。
Andrew Redd

Answers:


21

要找出哪个应用程序/程序抓住了您的密钥,请使用debug keysym XF86LogGrabInfo。用于xdotool同时按+ XF86LogGrabInfo,例如在终端运行中

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

然后使用来检查输出,tail /var/log/Xorg.0.log
请注意,with gnome 3/gdmsystemd不再记录Xorg.0.log(而是记录到日志)。在这种情况下,您可以运行

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


lightdm有类似的东西吗?
elig

@elig-不确定您的意思是什么...这是X服务器完成的,与显示管理器无关。
don_crissti

然后我在日志或日记
中看
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.