如何确定在X11下光标是否指向桌面

4

我该如何检查鼠标光标是否没有指向窗口?我正在使用C/C++编程,并且针对X11(特别是gnome3 shell)。


这是一个有趣的问题。弄清楚它是进入还是离开您的窗口相当容易。但是弄清楚它当前是否指向那里并不是微不足道的。我预计GTK或GNOME工具包提供了一种方法,这可能是您想要寻找的地方,而不是原始的X11 API。 - Omnifarious
2个回答

3
如果桌面确实是X11根窗口,那么我认为您需要使用 XQueryPointer:只需测试 child_return == root_return 即可。请确保使用 RootWindow(display, DefaultScreen(display))XDefaultRootWindow(display) 调用 XQueryPointer

好的。也许这很琐碎。但问题在于我怀疑 GNOME 不像 Xt 和 Motif 那样使用子窗口来控制。如果是这样,你就无法通过 XQueryPointer 找到你指向的子控件。 - Omnifarious

2
某些桌面环境可能会使用一个单独的窗口(X11定义),它不是根窗口。例如,在xfce4中,可以在其上放置图标的桌面上使用xwininfo命令:
xwininfo: Window id: 0x1c00003 "Skrivebord"

  Absolute upper-left X:  0
  Absolute upper-left Y:  0
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 1024
  Height: 600
  [...]

因此,尽管您可以确定鼠标指向的位置,但无法确定它是否指向通常所谓的“桌面”(因为在X11的上下文中,该术语本身并没有明确定义)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接