summaryrefslogtreecommitdiff
path: root/tools/libevdev-list-codes.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/libevdev-list-codes.c')
-rw-r--r--tools/libevdev-list-codes.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/tools/libevdev-list-codes.c b/tools/libevdev-list-codes.c
new file mode 100644
index 0000000..8d4f7c2
--- /dev/null
+++ b/tools/libevdev-list-codes.c
@@ -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;
+}