From d03f9b6616d52f77ffd939642cd93e883dedc530 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 9 Nov 2021 09:17:16 +1000 Subject: tools: add a helper tool to list all currently known codes A non-installed tool to make it easy to check if newly added codes are indeed supported correctly. Signed-off-by: Peter Hutterer --- meson.build | 5 +++++ tools/Makefile.am | 5 ++++- tools/libevdev-list-codes.c | 47 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 tools/libevdev-list-codes.c diff --git a/meson.build b/meson.build index a6ba48e..c7981b9 100644 --- a/meson.build +++ b/meson.build @@ -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], diff --git a/tools/Makefile.am b/tools/Makefile.am index 86222f7..83d6700 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -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 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 +#include +#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; +} -- cgit v1.2.1