【发布时间】:2011-05-01 14:12:26
【问题描述】:
为什么 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 似乎使 指针停留在所需位置 更多,但视觉指针没有 改变。
谢谢, 陈兹
【问题讨论】:
-
那个问题 (4124446) 不相关。我知道 Xlib 对鼠标居中的调用。但它的行为似乎不像记录的那样。
-
这个问题是相关的...stackoverflow.com/questions/4155282/…
-
4 年后,我尝试了你的代码,它在 Awesomewm 的 Arch Linux 上运行良好。
XFlush而不是XSync也可以。
标签: c x11 cursor-position