захватить мышь с помощью Xlib

Я хочу написать простую программу Xlib, изменяющую поведение мыши (например, инвертирование вертикального движения). У меня проблема с захватом событий.

Я хотел бы, чтобы код

capture changes in the controllers position (I move mouse upward, MotionEvent) calculate new cursor position (new_x -= difference_x) set new cursor position ( move pointer down, XWarpPointer, prevent event generation here)

Приведенный ниже код должен фиксировать событие движения при каждом перемещении мыши, но генерирует событие только при перемещении указателя из одного окна в другое ... Как захватить все события движения?

<code>#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;
}
</code>

Связанные с:

X11: Как ДЕЙСТВИТЕЛЬНО схватить указатель мыши?

Ответы на вопрос(2)

Ваш ответ на вопрос