From 4633c1e57389e49324302246a611766aa043ecf4 Mon Sep 17 00:00:00 2001 From: Aleksandrs Stier Date: Wed, 3 Apr 2024 00:12:11 +0200 Subject: Publish xhidecursor --- main.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 main.c (limited to 'main.c') diff --git a/main.c b/main.c new file mode 100644 index 0000000..d80e968 --- /dev/null +++ b/main.c @@ -0,0 +1,45 @@ +#include + +#include + +static void xi_select_events(int); + +static Display *d; +static Window r; // root-window + +void xi_select_events(const int event) { + unsigned char mask[3] = {None}; + XISetMask(mask, event); + XIEventMask event_mask; + event_mask.deviceid = XIAllMasterDevices; + event_mask.mask_len = sizeof(mask); + event_mask.mask = mask; + XISelectEvents(d, r, &event_mask, 1); +} + +int main(void) { + if (!(d = XOpenDisplay(NULL))) { + printf("Couldn't open Display.\n"); + return 1; + } + r = XDefaultRootWindow(d); + xi_select_events(XI_RawKeyPress); + XEvent e; + XGenericEventCookie *c; + while (!XNextEvent(d, &e)) { + if (!XGetEventData(d, (c = &e.xcookie))) + continue; + switch (c->evtype) { + case XI_RawKeyPress: + xi_select_events(XI_RawMotion); + XFixesHideCursor(d, r); + break; + case XI_RawMotion: + xi_select_events(XI_RawKeyPress); + XFixesShowCursor(d, r); + break; + } + XFreeEventData(d, c); + } + XCloseDisplay(d); +} -- cgit v1.2.3