commit 400bf83b1f67e24e9615699c48d6a469baf0db8e
parent 9514cb8f2bb57de34c8e5a63bda8da79e92aae64
Author: Louis Burda <quent.burda@gmail.com>
Date: Thu, 22 Jun 2023 22:44:34 +0200
Add MIT license
Diffstat:
M | xkeylog.c | | | 46 | +++++++++++++++++++++++++++++++--------------- |
1 file changed, 31 insertions(+), 15 deletions(-)
diff --git a/xkeylog.c b/xkeylog.c
@@ -9,20 +9,38 @@
#include <X11/extensions/XKB.h>
#include <sys/types.h>
#include <signal.h>
-#include <err.h>
#include <ctype.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
+#include <stdarg.h>
#include <stdlib.h>
-const int mask = KeyPressMask | KeyReleaseMask | FocusChangeMask;
+static int keysym_group;
+static int xinput_op;
+static int xkb_event;
-int keysym_group;
-int xinput_op;
-int xkb_event;
+static void
+__attribute__((format(printf,1,2)))
+die(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ fputs("xkeylog: ", stderr);
+ vfprintf(stderr, fmt, ap);
+ if (*fmt && fmt[strlen(fmt)-1] == ':') {
+ fputc(' ', stderr);
+ perror(NULL);
+ } else {
+ fputc('\n', stderr);
+ }
+ va_end(ap);
-void
+ exit(1);
+}
+
+static void
check_support(Display *dpy, int *xinput_op)
{
int op, ev, err;
@@ -30,19 +48,19 @@ check_support(Display *dpy, int *xinput_op)
int ret;
ret = XQueryExtension(dpy, "XInputExtension", xinput_op, &ev, &err);
- if (!ret) errx(1, "missing XInput extension");
+ if (!ret) die("missing XInput extension");
vmajor = 2;
vminor = 0;
ret = XIQueryVersion(dpy, &vmajor, &vminor);
if (ret == BadRequest)
- errx(1, "missing XInput2 support");
+ die("missing XInput2 support");
ret = XkbQueryExtension(dpy, &op, &ev, &err, &vmajor, &vminor);
- if (!ret) errx(1, "missing Xkb extension");
+ if (!ret) die("missing Xkb extension");
}
-void
+static void
setup_xinput(Display *dpy, Window root)
{
XIEventMask mask;
@@ -50,7 +68,7 @@ setup_xinput(Display *dpy, Window root)
mask.deviceid = XIAllMasterDevices;
mask.mask_len = XIMaskLen(XI_LASTEVENT);
mask.mask = calloc(mask.mask_len, 1);
- if (!mask.mask) err(1, "calloc");
+ if (!mask.mask) die("calloc:");
XISetMask(mask.mask, XI_RawKeyPress);
XISetMask(mask.mask, XI_RawKeyRelease);
@@ -60,7 +78,7 @@ setup_xinput(Display *dpy, Window root)
free(mask.mask);
}
-void
+static void
handle_event(Display *dpy, Window root)
{
XGenericEventCookie *cookie;
@@ -127,7 +145,5 @@ main(int argc, const char **argv)
XkbGetState(dpy, XkbUseCoreKbd, &state);
keysym_group = state.group;
- while (1) {
- handle_event(dpy, root);
- }
+ while (1) handle_event(dpy, root);
}