Loop your X cursor around the screen 👉😎👉
git clone https://github.com/m-col/xoop
Files | Refs | Readme | License

Commit b33ae8ecbbad7be4705da00d9d7c4bf0e1847111
Parent: ec463d8252e42551f4270053edbd289162f4b049
Author: mcol <mcol@posteo.net>
Date: 2020-04-17 22:56:48 +0100
Committer: mcol <mcol@posteo.net>
Committed: 2020-04-17 22:56:48 +0100

Create WM-unmanaged InputOnly window to move mouse upon entry

xinf.c Modified

@@ -1,21 +1,42 @@
-// gcc xinf.c -lX11
-
 #include <stdlib.h>
 #include <X11/Xlib.h>
+#include <X11/Xatom.h>
 
 int main()
 {
-   Display *dpy;
+    Display *dpy;
+    Window root;
+    Window win;
+    XSetWindowAttributes attrs;
+    XEvent ev; 
+
+    if (NULL == (dpy = XOpenDisplay(NULL))) {
+	exit(1);
+    }
+
+    root = RootWindow(dpy, DefaultScreen(dpy));
+    attrs.event_mask = KeyPressMask;
+    Atom window_type = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
+    long value = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_NOTIFICATION", False);
+
+    win = XCreateWindow(
+        dpy, root, 10,10,200,200, 0, CopyFromParent, InputOnly, 0, 0, &attrs
+    );
+    XChangeProperty(dpy, win, window_type, 4, 32,
+                    PropModeReplace, (unsigned char *)&value, 1);
 
-   if (NULL == (dpy = XOpenDisplay(NULL))) {
-      exit(1);
-   }
+    XSelectInput(dpy, win, EnterWindowMask);
+    XMapWindow(dpy, win);
+    XFlush(dpy);
 
-   XWarpPointer(dpy, None, DefaultRootWindow(dpy), 0, 0, 0, 0, 0, 0);
+    while(1) {
+        XNextEvent(dpy, &ev);
+	XWarpPointer(dpy, None, root, 0, 0, 0, 0, 0, 0);
+    }   
 
-   if (XCloseDisplay(dpy)) {
-      exit(1);
-   }
+    if (XCloseDisplay(dpy)) {
+	exit(1);
+    }
 
-   return 0;
+    return 0;
 }