我在带有 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
Run Code Online (Sandbox Code Playgroud) 有时 Firefox 在拖动后不会释放鼠标,因此我需要终止应用程序以强制它释放指针抓取。
是否有任何命令可以强制应用程序在不杀死指针的情况下取消抓取指针?
我有一个应用程序似乎抓住了鼠标(我可以移动它但不能点击任何地方),有没有办法找到哪个应用程序拥有 X.org 鼠标抓取?
假设我有一个 X 应用程序,它使用键盘和鼠标作为其正常操作模式(例如 QEMU),但是由于某个地方的错误,它非常难以挂起(例如陷入磁盘睡眠)。通常我会kill(1)
从远程终端杀死一个应用程序,但如果应用程序处于磁盘睡眠模式,它就不能真正被杀死。我可以通过xkill
实用程序终止此应用程序与 X 服务器的连接,但是这次我不能这样做,因为鼠标被抓住了,因此xkill
将无法运行。
那么,如果我愿意牺牲这个客户端,但我无法通过操作系统的方式杀死它,我如何从 X 客户端的抓取中释放我的键盘和鼠标?
刚刚升级到 Linux Mint 18.1 KDE(Plasma 5.8.5,Qt 5.6.1)除了我以前从未遇到过的奇怪问题外,一切都很好。某些东西在 X-window 级别上抓取了我的“Ctrl+s”序列,因为它从未达到应用程序级别。因此,例如“Ctrl+s”和“Ctrl+x Ctrl+s”标准 emacs 键都不起作用。即使在更典型的 KDE 程序中,“Ctrl+s”序列也已失效。我想这也可能是 KDE 框架,但没有定义为 Ctrl+s 的全局热键(我已将全局 Ctrl+s 移至 Ctrl+Shift+s)
这是铃声;它只是死了的“Ctrl + s”序列。所有其他的,据我所知,Ctrl 键按预期工作。
从 running 中可以获得一些关于正在发生的事情的线索xev
。键入 Ctrl+s 生成以下序列
KeyPress event, serial 40, synthetic NO, window 0x3400001,
root 0x4c4, subw 0x0, time 14783934, (-711,685), root:(1159,750),
state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 40, synthetic NO, window 0x3400001,
mode NotifyGrab, detail NotifyAncestor …
Run Code Online (Sandbox Code Playgroud) 有没有办法知道哪些进程正在侦听给定的键绑定?
例如,假设我想知道当我按 Ctrl+g 时哪些程序会执行某些操作。我猜X服务器管理这个,但是我如何查看监听事件?
需要明确的是,我不是问如何在 X 上设置键绑定,而是问如何找到在使用某种按键组合(或与此相关的鼠标事件)时将执行某些操作的所有进程,可能使用命令行工具。
在某些应用程序中,输入大写字母的作用类似于按 ESC 键。
再现:
此时,新文件夹的创建被取消。(如 ESC 键被击中)
这种行为也存在于许多不同的程序和游戏中。
使用xev
(按 Shift+d)分析情况
# xev
KeyPress event, serial 37, synthetic NO, window 0x4c00001,
root 0x259, subw 0x0, time 994702, (15,-13), root:(987,197),
state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 37, synthetic NO, window 0x4c00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 37, synthetic NO, window 0x4c00001, …
Run Code Online (Sandbox Code Playgroud)