Maus mit Xlib erfassen
Ich möchte ein einfaches Xlib-Programm schreiben, das das Verhalten der Maus ändert (um ein Beispiel zu nennen, vertikale Bewegung umkehren). Ich habe ein Problem mit der Erfassung der Ereignisse.
Ich möchte den Code
Änderungen in der Position des Controllers erfassen (ich bewege die Maus nach oben,MotionEvent
)neue Cursorposition berechnen (new_x -= difference_x
)neue Cursorposition setzen (Zeiger nach unten bewegen,XWarpPointer
, Ereigniserzeugung hier verhindern)Der folgende Code sollte jedes Mal ein Bewegungsereignis erfassen, wenn die Maus bewegt wird. Er generiert das Ereignis jedoch nur, wenn sich der Mauszeiger von einem Fenster zum anderen bewegt ... Wie werden alle Bewegungsereignisse erfasst?
<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>
Verbunden: