rendered paste body#include <X11/Xlib.h>#include <X11/Xutil.h>#include <stdio.h>#include <unistd.h>Display *dpy;Window wnd;#define print(...) (printf(__VA_ARGS__) >= 0 && fflush(stdin))#define DELAY 5 /* seconds */#define stop() ((print("Type something now.\n") || 1) && \ sleep(DELAY) >= 0)int grab();int ungrab();int main(int argc, char *argv[]){ int black; print("Bug 202389 test starts.\n"); dpy = XOpenDisplay(0); black = BlackPixel(dpy, DefaultScreen(dpy)); wnd = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 1, 1, 0, black, black); XMapWindow(dpy, wnd); XRaiseWindow(dpy, wnd); XClearWindow(dpy, wnd); XSync(dpy, False); if(grab() && stop() && ungrab()) print("No errors.\n"); else print("\t...Error.\n"); print("Test ends.\n"); return 0;}int grab(){ int ret; print("Grabbing keyboard"); ret = XGrabKeyboard(dpy, wnd, False, GrabModeSync, GrabModeAsync, CurrentTime); print(" (returned %d)\n", ret); XSync(dpy, False); return ret == GrabSuccess;}int ungrab(){ print("Ungrabbing keyboard.\n"); sleep(1); /* to see the output */ XUngrabKeyboard(dpy, CurrentTime); XSync(dpy, False); return 1;}