我能够抓住鼠标,但我的问题是在抓住鼠标时发生的鼠标事件只是排队,并且在我释放鼠标后发生。
这是我到目前为止的代码:
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{
XEvent e;
Display* dispaly = XOpenDisplay(NULL);
Window window = XDefaultRootWindow(dispaly);
unsigned int count = 0;
XGrabPointer(dispaly, window, true, PointerMotionMask | ButtonPressMask | ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, None, CurrentTime);
while(count < 500000) {
if (XPending(dispaly))
XNextEvent(dispaly, &e);
count++;
printf("%d\n", count);
}
XFlush(dispaly);
XCloseDisplay(dispaly);
scanf("%d", &count);
printf("end\n");
return 0;
}
如您所见,我尝试以多种方式使用所有事件,例如使用 XPending 和 XNextEvent、使用 XFlush 以及使用 XSync。无论我尝试什么功能,我在鼠标被抓住时所做的所有鼠标事件都发生在我关闭显示器之后。
有人可以帮忙吗?