Search code examples
clinuxpointerspositionx11

How to set mouse cursor position in C on linux?


how can I set the mouse cursor position in an X window using a C program under Linux? thanks :) (like setcursorpos() in WIN)

EDIT: I've tried this code, but doesn't work:

#include <curses.h>

main(){
 move(100, 100);
 refresh();
}

Solution

  • 12.4 - Moving the Pointer

    Although movement of the pointer normally should be left to the control of the end user, sometimes it is necessary to move the pointer to a new position under program control.

    To move the pointer to an arbitrary point in a window, use XWarpPointer().


    Example:

    Display *dpy;
    Window root_window;
    
    dpy = XOpenDisplay(0);
    root_window = XRootWindow(dpy, 0);
    XSelectInput(dpy, root_window, KeyReleaseMask);
    XWarpPointer(dpy, None, root_window, 0, 0, 0, 0, 100, 100);
    XFlush(dpy); // Flushes the output buffer, therefore updates the cursor's position. Thanks to Achernar.