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 <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2021-11-09 09:17:16 +10:00
parent fdba5a41dd
commit d03f9b6616
3 changed files with 56 additions and 1 deletions

View 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],

View 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)

View file

@ -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;
}