captura el mouse con Xlib

Quiero escribir un programa Xlib simple cambiando el comportamiento del mouse (para dar un ejemplo, invertir el movimiento vertical). Tengo un problema con la captura de los eventos.

Me gustaría que el código

Capturar cambios en la posición de los controladores (muevo el ratón hacia arriba,MotionEvent)calcular la nueva posición del cursor (new_x -= difference_x)establecer nueva posición del cursor (mover el puntero hacia abajo,XWarpPointer, previene la generación de eventos aquí)

El código a continuación debe capturar un evento de movimiento cada vez que mueva el mouse, pero genera el evento solo cuando el puntero se mueve de una ventana a otra ... ¿Cómo capturar todos los eventos de movimiento?

<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>

Relacionado:

X11: ¿Cómo realmente agarro el puntero del mouse?

Respuestas a la pregunta(2)

Su respuesta a la pregunta