From 33163fb30686fdac5891ec860c19996ebec7683a Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Mon, 4 Mar 2024 03:41:46 -0800 Subject: initial import --- xlockkbd.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 xlockkbd.c (limited to 'xlockkbd.c') diff --git a/xlockkbd.c b/xlockkbd.c new file mode 100644 index 0000000..fd9e659 --- /dev/null +++ b/xlockkbd.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include + +static void die(const char *s) +{ + fprintf(stderr, "xlockkbd: %s\n", s); + exit(1); +} + +static bool grab_kbd(Display *d, int screen) +{ + return (XGrabKeyboard(d, RootWindow(d, screen), True, GrabModeAsync, + GrabModeAsync, CurrentTime) + == GrabSuccess); +} + +static void wait_for_key(Display *d) +{ + XEvent ev; + while (!XNextEvent(d, &ev)) { + if (ev.type == KeyPress && + XLookupKeysym(&ev.xkey, 0) == XK_Escape) + break; + } +} + +int main() +{ + Display *d = XOpenDisplay(NULL); + if (!d) + die("cannot open display"); + + for (int i = 0; i < ScreenCount(d); ++i) { + if (!grab_kbd(d, i)) + die("failed to grab keyboard"); + } + + wait_for_key(d); + return 0; +} -- cgit v1.2.3-70-g09d2