#include #include #include #include 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; }