为什么 XWarpPointer 只工作一次?
当我运行时:
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
int main()
{
Display *dpy = XOpenDisplay(0);
while (1) {
Window root_window;
root_window = XRootWindow(dpy, 0);
XSelectInput(dpy, root_window, KeyReleaseMask);
XWarpPointer(dpy, None, root_window, 0, 0, 0, 0, 100, 100);
XSync(dpy, False);
}
}
鼠标应该锁定在一个位置。但它只移动鼠标一次,然后让我在循环仍在运行时移动它。是什么导致 XWarpPointer 只运行一次?它是某种 X11 功能来保护用户免受应用程序的侵害吗?
仅供参考,我在 Mac OSX 10.6 上的 VMWare Fusion 上运行 RHEL 5.2。
更新:
- 运行二进制文件时,按钮或图标等组件会闪烁,但可视鼠标光标停留在我移动它的位置。
- 在 XWarpPointer 工作一次之后,当我移动鼠标时,光标会跳到我扭曲它之前的位置附近。就好像有一个 (last_x,last_y) 没有更新。
- 当我通过 OpenVMTools 更改指针时,它似乎使指针更多地粘在所需的位置,但视觉指针并没有改变。
谢谢,陈兹