我想编写一个简单的 Xlib 程序来改变鼠标的行为(举个例子,反转垂直移动)。我在捕获事件时遇到问题。
我希望代码
- 捕捉控制器位置的变化(我向上移动鼠标,
MotionEvent
) - 计算新的光标位置 (
new_x -= difference_x
) - 设置新的光标位置(向下移动指针
XWarpPointer
,,防止在此处生成事件)
下面的代码应该在每次鼠标移动时捕获一个运动事件,但只有当指针从一个窗口移动到另一个窗口时才会生成事件......如何捕获所有的运动事件?
#include "X11/Xlib.h"
#include "stdio.h"
int main(int argc, char *argv[])
{
Display *display;
Window root_window;
XEvent event;
display = XOpenDisplay(0);
root_window = XRootWindow(display, 0);
XSelectInput(display, root_window, PointerMotionMask );
while(1) {
XNextEvent( display, &event );
switch( event.type ) {
case MotionNotify:
printf("x %d y %d\n", event.xmotion.x, event.xmotion.y );
break;
}
}
return 0;
}
有关的: