有哪些命令行工具可以列出和管理 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 是否允许这样做)。
我有一个应用程序似乎抓住了鼠标(我可以移动它但不能点击任何地方),有没有办法找到哪个应用程序拥有 X.org 鼠标抓取?
假设我有一个 X 应用程序,它使用键盘和鼠标作为其正常操作模式(例如 QEMU),但是由于某个地方的错误,它非常难以挂起(例如陷入磁盘睡眠)。通常我会kill(1)从远程终端杀死一个应用程序,但如果应用程序处于磁盘睡眠模式,它就不能真正被杀死。我可以通过xkill实用程序终止此应用程序与 X 服务器的连接,但是这次我不能这样做,因为鼠标被抓住了,因此xkill将无法运行。
那么,如果我愿意牺牲这个客户端,但我无法通过操作系统的方式杀死它,我如何从 X 客户端的抓取中释放我的键盘和鼠标?
是否有一种通用的方法可以在无聊的 X 会话上重置显示?假设您在进入睡眠状态后打开笔记本电脑屏幕,并且显示屏是空白的,或乱七八糟的。您可以按下ctrlaltf1并查看 X 会话正在运行,但无论出于何种原因,您都看不到屏幕。
对于 borked 终端,您可以键入reset或stty sane。xrefresh将重新绘制屏幕,但这无助于解决由显卡引起的显示问题。
在 Gnome 3 中,gnome --replace会这样做,但我正在运行 XFCE4,老实说,这是一个全球性问题......是否有一个xdg-*或x-*包装器?我正在寻找可以在我使用的任何平台上设置键绑定的东西。