tools: add a helper tool to list all currently known codes
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 8 Nov 2021 23:17:16 +0000 (09:17 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Mon, 8 Nov 2021 23:46:16 +0000 (09:46 +1000)
A non-installed tool to make it easy to check if newly added codes are
indeed supported correctly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
meson.build
tools/Makefile.am
tools/libevdev-list-codes.c [new file with mode: 0644]

index a6ba48e5ef0c08923e2c386ace707759a8332ed6..c7981b91d6e87d9ff02b406c991d06ecbc5e191a 100644 (file)
@@ -109,6 +109,11 @@ executable('libevdev-events',
           include_directories: [includes_include],
           dependencies: dep_libevdev,
           install: false)
+executable('libevdev-list-codes',
+          sources: ['tools/libevdev-list-codes.c'],
+          include_directories: [includes_include],
+          dependencies: dep_libevdev,
+          install: false)
 executable('touchpad-edge-detector',
           sources: ['tools/touchpad-edge-detector.c'],
           include_directories: [includes_include],
index 86222f71c06eccaebf53aaf454c35777c14aa750..83d670048a4a366d3fedf0dbc8c37d9bf598a55c 100644 (file)
@@ -1,4 +1,4 @@
-noinst_PROGRAMS = libevdev-events
+noinst_PROGRAMS = libevdev-events libevdev-list-codes
 bin_PROGRAMS = \
               touchpad-edge-detector \
               mouse-dpi-tool \
@@ -10,6 +10,9 @@ libevdev_ldadd = $(top_builddir)/libevdev/libevdev.la
 libevdev_events_SOURCES = libevdev-events.c
 libevdev_events_LDADD = $(libevdev_ldadd)
 
+libevdev_list_codes_SOURCES = libevdev-list-codes.c
+libevdev_list_codes_LDADD = $(libevdev_ldadd)
+
 touchpad_edge_detector_SOURCES = touchpad-edge-detector.c
 touchpad_edge_detector_LDADD = $(libevdev_ldadd)
 
diff --git a/tools/libevdev-list-codes.c b/tools/libevdev-list-codes.c
new file mode 100644 (file)
index 0000000..8d4f7c2
--- /dev/null
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2021 Red Hat, Inc.
+ */
+
+/* Lists all event types and codes currently known by libevdev. */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <linux/input.h>
+#include "libevdev/libevdev.h"
+
+static void
+list_event_codes(unsigned int type, unsigned int max)
+{
+       const char *typestr = libevdev_event_type_get_name(type);
+
+       if (!typestr)
+               return;
+
+       printf("- %s:\n", typestr);
+
+       for (unsigned int code = 0; code <= max; code++) {
+               const char *str = libevdev_event_code_get_name(type, code);
+
+               if (!str)
+                       continue;
+
+               printf("    %d: %s\n", code, str);
+       }
+}
+
+int
+main (int argc, char **argv)
+{
+       printf("codes:\n");
+       for (unsigned int type = 0; type <= EV_MAX; type++) {
+               int max = libevdev_event_type_get_max(type);
+               if (max == -1)
+                       continue;
+
+               list_event_codes(type, (unsigned int)max);
+       }
+
+       return 0;
+}