为什么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。
更新:
谢谢, Chenz
答案 0 :(得分:1)
我在这里没有经验,但如果您不放弃XSync中的事件会发生什么?例如XSync(dpy, True);
?
答案 1 :(得分:1)
之后
XWarpPointer(dpy, None, root_window, 0, 0, 0, 0, 100, 100);
尝试
XFlush(dpy);
这应该可以解决问题。
答案 2 :(得分:-2)
XWarpPointer
仅将指针移动到指定位置。它不会阻止它后来移动。