XWarpPointer が 1 回しか機能しないのはなぜですか?
私が実行すると:
#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);
}
}
マウスは 1 つの位置にロックされているように見えるはずです。しかし、それはマウスを一度だけ動かすだけで、ループがまだ実行されている間にマウスを動かすことができます。XWarpPointer が 1 回しか実行されない原因は何ですか? ユーザーをアプリケーションから保護するのは、ある種の X11 機能ですか?
参考までに、Mac OSX 10.6 の VMWare Fusion で RHEL 5.2 を実行しています。
アップデート:
- バイナリを実行すると、ボタンやアイコンなどのコンポーネントがちらつきますが、視覚的なマウス カーソルは移動した場所にとどまります。
- 一度 XWarpPointer が機能した後、マウスを動かすと、カーソルがワープする前の近くにジャンプします。更新されていない (last_x,last_y) があるかのようです。
- OpenVMTools でポインターを変更すると、ポインターがより目的の場所にくっつくように見えますが、視覚的なポインターは変更されません。
ありがとう、チェンツ