1c0abf9e6Sopenharmony_ci// SPDX-License-Identifier: MIT
2c0abf9e6Sopenharmony_ci/*
3c0abf9e6Sopenharmony_ci * Copyright © 2021 Red Hat, Inc.
4c0abf9e6Sopenharmony_ci */
5c0abf9e6Sopenharmony_ci
6c0abf9e6Sopenharmony_ci/* Lists all event types and codes currently known by libevdev. */
7c0abf9e6Sopenharmony_ci
8c0abf9e6Sopenharmony_ci#include "config.h"
9c0abf9e6Sopenharmony_ci
10c0abf9e6Sopenharmony_ci#include <stdio.h>
11c0abf9e6Sopenharmony_ci#include <linux/input.h>
12c0abf9e6Sopenharmony_ci#include "libevdev/libevdev.h"
13c0abf9e6Sopenharmony_ci
14c0abf9e6Sopenharmony_cistatic void
15c0abf9e6Sopenharmony_cilist_event_codes(unsigned int type, unsigned int max)
16c0abf9e6Sopenharmony_ci{
17c0abf9e6Sopenharmony_ci	const char *typestr = libevdev_event_type_get_name(type);
18c0abf9e6Sopenharmony_ci
19c0abf9e6Sopenharmony_ci	if (!typestr)
20c0abf9e6Sopenharmony_ci		return;
21c0abf9e6Sopenharmony_ci
22c0abf9e6Sopenharmony_ci	printf("- %s:\n", typestr);
23c0abf9e6Sopenharmony_ci
24c0abf9e6Sopenharmony_ci	for (unsigned int code = 0; code <= max; code++) {
25c0abf9e6Sopenharmony_ci		const char *str = libevdev_event_code_get_name(type, code);
26c0abf9e6Sopenharmony_ci
27c0abf9e6Sopenharmony_ci		if (!str)
28c0abf9e6Sopenharmony_ci			continue;
29c0abf9e6Sopenharmony_ci
30c0abf9e6Sopenharmony_ci		printf("    %d: %s\n", code, str);
31c0abf9e6Sopenharmony_ci	}
32c0abf9e6Sopenharmony_ci}
33c0abf9e6Sopenharmony_ci
34c0abf9e6Sopenharmony_ciint
35c0abf9e6Sopenharmony_cimain (int argc, char **argv)
36c0abf9e6Sopenharmony_ci{
37c0abf9e6Sopenharmony_ci	printf("codes:\n");
38c0abf9e6Sopenharmony_ci	for (unsigned int type = 0; type <= EV_MAX; type++) {
39c0abf9e6Sopenharmony_ci		int max = libevdev_event_type_get_max(type);
40c0abf9e6Sopenharmony_ci		if (max == -1)
41c0abf9e6Sopenharmony_ci			continue;
42c0abf9e6Sopenharmony_ci
43c0abf9e6Sopenharmony_ci		list_event_codes(type, (unsigned int)max);
44c0abf9e6Sopenharmony_ci	}
45c0abf9e6Sopenharmony_ci
46c0abf9e6Sopenharmony_ci	return 0;
47c0abf9e6Sopenharmony_ci}
48