[PATCH 5/6] Allow compiling against older headers

Dmitry Torokhov dtor at chromium.org
Wed Sep 27 17:58:30 UTC 2017


Instead of requiring to compile against the newest kernel headers or
lose newer certain event definitions, let's check for the presence of
"official" defines and add missing ones ourselves (they form ABI so
there is no risk of them changing and getting out of sync). This allows
us to produce fully-functional version of evtest even if kernel headers
on the build system are slightly older.

Signed-off-by: Dmitry Torokhov <dtor at chromium.org>
---
 event-codes.h | 546 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 evtest.c      | 330 +++++++++--------------------------
 2 files changed, 632 insertions(+), 244 deletions(-)
 create mode 100644 event-codes.h

diff --git a/event-codes.h b/event-codes.h
new file mode 100644
index 0000000..0231b33
--- /dev/null
+++ b/event-codes.h
@@ -0,0 +1,546 @@
+/*
+ *  Copyright (c) 2017 Google, Inc
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/input.h>
+
+/*
+ * Device properties and quirks
+ */
+
+#ifndef INPUT_PROP_SEMI_MT
+#define INPUT_PROP_POINTER		0x00
+#define INPUT_PROP_DIRECT		0x01
+#define INPUT_PROP_BUTTONPAD		0x02
+#define INPUT_PROP_SEMI_MT		0x03
+#endif
+
+#ifndef INPUT_PROP_TOPBUTTONPAD
+#define INPUT_PROP_TOPBUTTONPAD		0x04
+#endif
+
+#ifndef INPUT_PROP_POINTING_STICK
+#define INPUT_PROP_POINTING_STICK	0x05
+#endif
+
+#ifndef INPUT_PROP_ACCELEROMETER
+#define INPUT_PROP_ACCELEROMETER	0x06
+#endif
+
+#define LOCAL_INPUT_PROP_MAX		0x1f
+#ifndef INPUT_PROP_MAX
+#define INPUT_PROP_MAX			LOCAL_INPUT_PROP_MAX
+#endif
+
+/*
+ * Event types
+ */
+
+#ifndef EV_SYN
+#define EV_SYN				0
+#endif
+
+#define LOCAL_EV_MAX			0x1f
+#ifndef EV_MAX
+#define EV_MAX				LOCAL_EV_MAX
+#endif
+
+/*
+ * Synchronization events.
+ */
+
+#ifndef SYN_MT_REPORT
+#define SYN_MT_REPORT			2
+#endif
+
+#ifndef SYN_DROPPED
+#define SYN_DROPPED			3
+#endif
+
+#define LOCAL_SYN_MAX			3
+#ifndef SYN_MAX
+#define SYN_MAX				LOCAL_SYN_MAX
+#endif
+
+/*
+ * Keys and buttons
+ */
+
+#ifndef KEY_SCALE
+#define KEY_SCALE			120
+#endif
+
+#ifndef KEY_DASHBOARD
+#define KEY_DASHBOARD			204
+#endif
+
+#ifndef KEY_WWAN
+#define KEY_WLAN			238
+#endif
+
+#ifndef KEY_UWB
+#define KEY_UWB				239
+#endif
+
+#ifndef KEY_VIDEO_NEXT
+#define KEY_VIDEO_NEXT			241
+#define KEY_VIDEO_PREV			242
+#define KEY_BRIGHTNESS_CYCLE		243
+#define KEY_DISPLAY_OFF			245
+#endif
+
+#ifndef KEY_BRIGHTNESS_AUTO
+#define KEY_BRIGHTNESS_AUTO		244
+#endif
+
+#ifndef KEY_WWAN
+#define KEY_WWAN			246
+#endif
+
+#ifndef KEY_RFKILL
+#define KEY_RFKILL			247
+#endif
+
+#ifndef KEY_MICMUTE
+#define KEY_MICMUTE			248
+#endif
+
+#ifndef BTN_SOUTH
+#define BTN_SOUTH			0x130
+#define BTN_EAST			0x131
+#define BTN_NORTH			0x133
+#define BTN_WEST			0x134
+#endif
+
+#ifndef BTN_TOOL_QUINTTAP
+#define BTN_TOOL_QUINTTAP		0x148
+#endif
+
+#ifndef BTN_TOOL_QUADTAP
+#define BTN_TOOL_QUADTAP		0x14f
+#endif
+
+#ifndef KEY_SPELLCHECK
+#define KEY_SPELLCHECK			0x1b0
+#endif
+
+#ifndef KEY_LOGOFF
+#define KEY_LOGOFF			0x1b1
+#endif
+
+#ifndef KEY_DOLLAR
+#define KEY_DOLLAR			0x1b2
+#endif
+
+#ifndef KEY_EURO
+#define KEY_EURO			0x1b3
+#endif
+
+#ifndef KEY_FRAMEBACK
+#define KEY_FRAMEBACK			0x1b4
+#define KEY_FRAMEFORWARD		0x1b5
+#endif
+
+#ifndef KEY_CONTEXT_MENU
+#define KEY_CONTEXT_MENU		0x1b6
+#endif
+
+#ifndef KEY_MEDIA_REPEAT
+#define KEY_MEDIA_REPEAT		0x1b7
+#endif
+
+#ifndef KEY_10CHANNELSUP
+#define KEY_10CHANNELSUP		0x1b8
+#define KEY_10CHANNELSDOWN		0x1b9
+#endif
+
+#ifndef KEY_IMAGES
+#define KEY_IMAGES			0x1ba
+#endif
+
+#ifndef KEY_FN
+#define KEY_FN				0x1d0
+#define KEY_FN_ESC			0x1d1
+#define KEY_FN_F1			0x1d2
+#define KEY_FN_F2			0x1d3
+#define KEY_FN_F3			0x1d4
+#define KEY_FN_F4			0x1d5
+#define KEY_FN_F5			0x1d6
+#define KEY_FN_F6			0x1d7
+#define KEY_FN_F7			0x1d8
+#define KEY_FN_F8			0x1d9
+#define KEY_FN_F9			0x1da
+#define KEY_FN_F10			0x1db
+#define KEY_FN_F11			0x1dc
+#define KEY_FN_F12			0x1dd
+#define KEY_FN_1			0x1de
+#define KEY_FN_2			0x1df
+#define KEY_FN_D			0x1e0
+#define KEY_FN_E			0x1e1
+#define KEY_FN_F			0x1e2
+#define KEY_FN_S			0x1e3
+#define KEY_FN_B			0x1e4
+#endif
+
+#ifndef KEY_BRL_DOT1
+#define KEY_BRL_DOT1			0x1f1
+#define KEY_BRL_DOT2			0x1f2
+#define KEY_BRL_DOT3			0x1f3
+#define KEY_BRL_DOT4			0x1f4
+#define KEY_BRL_DOT5			0x1f5
+#define KEY_BRL_DOT6			0x1f6
+#define KEY_BRL_DOT7			0x1f7
+#define KEY_BRL_DOT8			0x1f8
+#define KEY_BRL_DOT9			0x1f9
+#define KEY_BRL_DOT10			0x1fa
+#endif
+
+#ifndef KEY_NUMERIC_0
+#define KEY_NUMERIC_0			0x200
+#define KEY_NUMERIC_1			0x201
+#define KEY_NUMERIC_2			0x202
+#define KEY_NUMERIC_3			0x203
+#define KEY_NUMERIC_4			0x204
+#define KEY_NUMERIC_5			0x205
+#define KEY_NUMERIC_6			0x206
+#define KEY_NUMERIC_7			0x207
+#define KEY_NUMERIC_8			0x208
+#define KEY_NUMERIC_9			0x209
+#define KEY_NUMERIC_STAR		0x20a
+#define KEY_NUMERIC_POUND		0x20b
+#define KEY_NUMERIC_A			0x20c
+#define KEY_NUMERIC_B			0x20d
+#define KEY_NUMERIC_C			0x20e
+#define KEY_NUMERIC_D			0x20f
+#endif
+
+#ifndef KEY_CAMERA_FOCUS
+#define KEY_CAMERA_FOCUS		0x210
+#endif
+
+#ifndef KEY_WPS_BUTTON
+#define KEY_WPS_BUTTON			0x211
+#endif
+
+#ifndef KEY_TOUCHPAD_TOGGLE
+#define KEY_TOUCHPAD_TOGGLE		0x212
+#define KEY_TOUCHPAD_ON			0x213
+#define KEY_TOUCHPAD_OFF		0x214
+#endif
+
+#ifndef KEY_CAMERA_ZOOMIN
+#define KEY_CAMERA_ZOOMIN		0x215
+#define KEY_CAMERA_ZOOMOUT		0x216
+#define KEY_CAMERA_UP			0x217
+#define KEY_CAMERA_DOWN			0x218
+#define KEY_CAMERA_LEFT			0x219
+#define KEY_CAMERA_RIGHT		0x21a
+#endif
+
+#ifndef KEY_ATTENDANT_ON
+#define KEY_ATTENDANT_ON		0x21b
+#define KEY_ATTENDANT_OFF		0x21c
+#define KEY_ATTENDANT_TOGGLE		0x21d
+#define KEY_LIGHTS_TOGGLE		0x21e
+#endif
+
+#ifndef BTN_DPAD_UP
+#define BTN_DPAD_UP			0x220
+#define BTN_DPAD_DOWN			0x221
+#define BTN_DPAD_LEFT			0x222
+#define BTN_DPAD_RIGHT			0x223
+#endif
+
+#ifndef KEY_ALS_TOGGLE
+#define KEY_ALS_TOGGLE			0x230
+#endif
+
+#ifndef KEY_BUTTONCONFIG
+#define KEY_BUTTONCONFIG		0x240
+#define KEY_TASKMANAGER			0x241
+#define KEY_JOURNAL			0x242
+#define KEY_CONTROLPANEL		0x243
+#define KEY_APPSELECT			0x244
+#define KEY_SCREENSAVER			0x245
+#define KEY_VOICECOMMAND		0x246
+#endif
+
+#ifndef KEY_ASSISTANT
+#define KEY_ASSISTANT			0x247
+#endif
+
+#ifndef KEY_BRIGHTNESS_MIN
+#define KEY_BRIGHTNESS_MIN		0x250
+#define KEY_BRIGHTNESS_MAX		0x251
+#endif
+
+#ifndef KEY_KBDINPUTASSIST_PREV
+#define KEY_KBDINPUTASSIST_PREV		0x260
+#define KEY_KBDINPUTASSIST_NEXT		0x261
+#define KEY_KBDINPUTASSIST_PREVGROUP	0x262
+#define KEY_KBDINPUTASSIST_NEXTGROUP	0x263
+#define KEY_KBDINPUTASSIST_ACCEPT	0x264
+#define KEY_KBDINPUTASSIST_CANCEL	0x265
+#endif
+
+#ifndef KEY_RIGHT_UP
+#define KEY_RIGHT_UP			0x266
+#define KEY_RIGHT_DOWN			0x267
+#define KEY_LEFT_UP			0x268
+#define KEY_LEFT_DOWN			0x269
+#endif
+
+#ifndef KEY_ROOT_MENU
+#define KEY_ROOT_MENU			0x26a
+#define KEY_MEDIA_TOP_MENU		0x26b
+#define KEY_AUDIO_DESC			0x26e
+#define KEY_3D_MODE			0x26f
+#define KEY_NEXT_FAVORITE		0x270
+#define KEY_STOP_RECORD			0x271
+#define KEY_PAUSE_RECORD		0x272
+#define KEY_VOD				0x273
+#define KEY_UNMUTE			0x274
+#define KEY_FASTREVERSE			0x275
+#define KEY_SLOWREVERSE			0x276
+#endif
+
+#ifndef KEY_NUMERIC_11
+#define KEY_NUMERIC_11			0x26c
+#define KEY_NUMERIC_12			0x26d
+#endif
+
+#ifndef KEY_DATA
+#define KEY_DATA			0x277
+#endif
+
+#ifndef KEY_ONSCREEN_KEYBOARD
+#define KEY_ONSCREEN_KEYBOARD		0x278
+#endif
+
+#ifndef BTN_TRIGGER_HAPPY
+#define BTN_TRIGGER_HAPPY		0x2c0
+#define BTN_TRIGGER_HAPPY1		0x2c0
+#define BTN_TRIGGER_HAPPY2		0x2c1
+#define BTN_TRIGGER_HAPPY3		0x2c2
+#define BTN_TRIGGER_HAPPY4		0x2c3
+#define BTN_TRIGGER_HAPPY5		0x2c4
+#define BTN_TRIGGER_HAPPY6		0x2c5
+#define BTN_TRIGGER_HAPPY7		0x2c6
+#define BTN_TRIGGER_HAPPY8		0x2c7
+#define BTN_TRIGGER_HAPPY9		0x2c8
+#define BTN_TRIGGER_HAPPY10		0x2c9
+#define BTN_TRIGGER_HAPPY11		0x2ca
+#define BTN_TRIGGER_HAPPY12		0x2cb
+#define BTN_TRIGGER_HAPPY13		0x2cc
+#define BTN_TRIGGER_HAPPY14		0x2cd
+#define BTN_TRIGGER_HAPPY15		0x2ce
+#define BTN_TRIGGER_HAPPY16		0x2cf
+#define BTN_TRIGGER_HAPPY17		0x2d0
+#define BTN_TRIGGER_HAPPY18		0x2d1
+#define BTN_TRIGGER_HAPPY19		0x2d2
+#define BTN_TRIGGER_HAPPY20		0x2d3
+#define BTN_TRIGGER_HAPPY21		0x2d4
+#define BTN_TRIGGER_HAPPY22		0x2d5
+#define BTN_TRIGGER_HAPPY23		0x2d6
+#define BTN_TRIGGER_HAPPY24		0x2d7
+#define BTN_TRIGGER_HAPPY25		0x2d8
+#define BTN_TRIGGER_HAPPY26		0x2d9
+#define BTN_TRIGGER_HAPPY27		0x2da
+#define BTN_TRIGGER_HAPPY28		0x2db
+#define BTN_TRIGGER_HAPPY29		0x2dc
+#define BTN_TRIGGER_HAPPY30		0x2dd
+#define BTN_TRIGGER_HAPPY31		0x2de
+#define BTN_TRIGGER_HAPPY32		0x2df
+#define BTN_TRIGGER_HAPPY33		0x2e0
+#define BTN_TRIGGER_HAPPY34		0x2e1
+#define BTN_TRIGGER_HAPPY35		0x2e2
+#define BTN_TRIGGER_HAPPY36		0x2e3
+#define BTN_TRIGGER_HAPPY37		0x2e4
+#define BTN_TRIGGER_HAPPY38		0x2e5
+#define BTN_TRIGGER_HAPPY39		0x2e6
+#define BTN_TRIGGER_HAPPY40		0x2e7
+#endif
+
+#define LOCAL_KEY_MAX			0x2ff
+#ifndef KEY_MAX
+#define KEY_MAX				LOCAL_KEY_MAX
+#endif
+
+/*
+ * Relative axes
+ */
+
+#define LOCAL_REL_MAX			0x0f
+#ifndef REL_MAX
+#define REL_MAX				LOCAL_REL_MAX
+#endif
+
+/*
+ * Absolute axes
+ */
+
+#ifndef ABS_MT_SLOT
+#define ABS_MT_SLOT			0x2f
+#endif
+
+#ifndef ABS_MT_BLOB_ID
+#define ABS_MT_TOUCH_MAJOR		0x30
+#define ABS_MT_TOUCH_MINOR		0x31
+#define ABS_MT_WIDTH_MAJOR		0x32
+#define ABS_MT_WIDTH_MINOR		0x33
+#define ABS_MT_ORIENTATION		0x34
+#define ABS_MT_POSITION_X		0x35
+#define ABS_MT_POSITION_Y		0x36
+#define ABS_MT_TOOL_TYPE		0x37
+#define ABS_MT_BLOB_ID			0x38
+#endif
+
+#ifndef ABS_MT_TRACKING_ID
+#define ABS_MT_TRACKING_ID		0x39
+#endif
+
+#ifndef ABS_MT_PRESSURE
+#define ABS_MT_PRESSURE			0x3a
+#endif
+
+#ifndef ABS_MT_DISTANCE
+#define ABS_MT_DISTANCE			0x3b
+#endif
+
+#ifndef ABS_MT_TOOL_X
+#define ABS_MT_TOOL_X			0x3c
+#define ABS_MT_TOOL_Y			0x3d
+#endif
+
+#define LOCAL_ABS_MAX			0x3f
+#ifndef ABS_MAX
+#define ABS_MAX				LOCAL_ABS_MAX
+#endif
+
+/*
+ * Switches.
+ */
+
+#ifndef SW_RFKILL_ALL
+#define SW_RFKILL_ALL			0x03
+#endif
+
+#ifndef SW_MICROPHONE_INSERT
+#define SW_MICROPHONE_INSERT		0x04
+#endif
+
+#ifndef SW_DOCK
+#define SW_DOCK				0x05
+#endif
+
+#ifndef SW_LINEOUT_INSERT
+#define SW_LINEOUT_INSERT		0x06
+#endif
+
+#ifndef SW_JACK_PHYSICAL_INSERT
+#define SW_JACK_PHYSICAL_INSERT		0x07
+#endif
+
+#ifndef SW_VIDEOOUT_INSERT
+#define SW_VIDEOOUT_INSERT		0x08
+#endif
+
+#ifndef SW_CAMERA_LENS_COVER
+#define SW_CAMERA_LENS_COVER		0x09
+#define SW_KEYPAD_SLIDE			0x0a
+#define SW_FRONT_PROXIMITY		0x0b
+#endif
+
+#ifndef SW_ROTATE_LOCK
+#define SW_ROTATE_LOCK			0x0c
+#endif
+
+#ifndef SW_LINEIN_INSERT
+#define SW_LINEIN_INSERT		0x0d
+#endif
+
+#ifndef SW_MUTE_DEVICE
+#define SW_MUTE_DEVICE			0x0e
+#endif
+
+#ifndef SW_PEN_INSERTED
+#define SW_PEN_INSERTED			0x0f
+#endif
+
+#define LOCAL_SW_MAX			0x0f
+#ifndef SW_MAX
+#define SW_MAX				LOCAL_SW_MAX
+#endif
+
+/*
+ * Miscellaneous events
+ */
+#ifndef MSC_TIMESTAMP
+#define MSC_TIMESTAMP			0x05
+#endif
+
+#define LOCAL_MSC_MAX			0x07
+#ifndef MSC_MAX
+#define MSC_MAX				LOCAL_MSC_MAX
+#endif
+
+/*
+ * LEDs.
+ */
+
+#ifndef LED_MAIL
+#define LED_MAIL			0x09
+#endif
+
+#ifndef LED_CHARGING
+#define LED_CHARGING			0x0a
+#endif
+
+#define LOCAL_LED_MAX			0x0f
+#ifndef LED_MAX
+#define LED_MAX				LOCAL_LED_MAX
+#endif
+
+/*
+ * Autorepeat
+ */
+
+#define LOCAL_REP_MAX			0x01
+#ifndef REP_MAX
+#define REP_MAX				LOCAL_REP_MAX
+#endif
+
+/*
+ * Sounds
+ */
+
+#define LOCAL_SND_MAX			0x07
+#ifndef SND_MAX
+#define SND_MAX				LOCAL_SND_MAX
+#endif
+
+/*
+ * Force feedback.
+ */
+
+#define LOCAL_FF_MAX			0x7f
+#ifndef FF_MAX
+#define FF_MAX				LOCAL_FF_MAX
+#endif
+
+#define LOCAL_FF_STATUS_MAX		0x0f
+#ifndef FF_STATUS_MAX
+#define FF_STATUS_MAX			LOCAL_FF_STATUS_MAX
+#endif
diff --git a/evtest.c b/evtest.c
index 44d3f4d..60714c6 100644
--- a/evtest.c
+++ b/evtest.c
@@ -60,6 +60,8 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include "event-codes.h"
+
 #define BITS_PER_LONG (sizeof(long) * 8)
 #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
 #define OFF(x)  ((x)%BITS_PER_LONG)
@@ -70,22 +72,23 @@
 #define DEV_INPUT_EVENT "/dev/input"
 #define EVENT_DEV_NAME "event"
 
-#ifndef EV_SYN
-#define EV_SYN 0
-#endif
-#ifndef SYN_MAX
-#define SYN_MAX 3
-#define SYN_CNT (SYN_MAX + 1)
-#endif
-#ifndef SYN_MT_REPORT
-#define SYN_MT_REPORT 2
-#endif
-#ifndef SYN_DROPPED
-#define SYN_DROPPED 3
-#endif
-
 #define NAME_ELEMENT(element) [element] = #element
 
+#define max(v1, v2)		((v1) > (v2) ? (v1) : (v2))
+#define EVTEST_EV_MAX		max(EV_MAX, LOCAL_EV_MAX)
+#define EVTEST_SYN_MAX		max(SYN_MAX, LOCAL_SYN_MAX)
+#define EVTEST_KEY_MAX		max(KEY_MAX, LOCAL_KEY_MAX)
+#define EVTEST_REL_MAX		max(REL_MAX, LOCAL_REL_MAX)
+#define EVTEST_ABS_MAX		max(ABS_MAX, LOCAL_ABS_MAX)
+#define EVTEST_MSC_MAX		max(MSC_MAX, LOCAL_MSC_MAX)
+#define EVTEST_SW_MAX		max(SW_MAX, LOCAL_SW_MAX)
+#define EVTEST_LED_MAX		max(LED_MAX, LOCAL_LED_MAX)
+#define EVTEST_SND_MAX		max(SND_MAX, LOCAL_SND_MAX)
+#define EVTEST_REP_MAX		max(REP_MAX, LOCAL_REP_MAX)
+#define EVTEST_FF_MAX		max(FF_MAX, LOCAL_FF_MAX)
+#define EVTEST_FF_STATUS_MAX	max(FF_STATUS_MAX, LOCAL_FF_STATUS_MAX)
+#define EVTEST_INPUT_PROP_MAX	max(INPUT_PROP_MAX, LOCAL_INPUT_PROP_MAX)
+
 enum evtest_mode {
 	MODE_CAPTURE,
 	MODE_QUERY,
@@ -98,10 +101,10 @@ static const struct query_mode {
 	int max;
 	int rq;
 } query_modes[] = {
-	{ "EV_KEY", EV_KEY, KEY_MAX, EVIOCGKEY(KEY_MAX) },
-	{ "EV_LED", EV_LED, LED_MAX, EVIOCGLED(LED_MAX) },
-	{ "EV_SND", EV_SND, SND_MAX, EVIOCGSND(SND_MAX) },
-	{ "EV_SW",  EV_SW, SW_MAX, EVIOCGSW(SW_MAX) },
+	{ "EV_KEY", EV_KEY, EVTEST_KEY_MAX, EVIOCGKEY(EVTEST_KEY_MAX) },
+	{ "EV_LED", EV_LED, EVTEST_LED_MAX, EVIOCGLED(EVTEST_LED_MAX) },
+	{ "EV_SND", EV_SND, EVTEST_SND_MAX, EVIOCGSND(EVTEST_SND_MAX) },
+	{ "EV_SW",  EV_SW, EVTEST_SW_MAX, EVIOCGSW(EVTEST_SW_MAX) },
 };
 
 static int grab_flag = 0;
@@ -171,8 +174,8 @@ static const struct query_mode *find_query_mode(const char *query_mode)
 	}
 }
 
-static const char * const events[EV_MAX + 1] = {
-	[0 ... EV_MAX] = NULL,
+static const char * const events[EVTEST_EV_MAX + 1] = {
+	[0 ... EVTEST_EV_MAX] = NULL,
 	NAME_ELEMENT(EV_SYN),			NAME_ELEMENT(EV_KEY),
 	NAME_ELEMENT(EV_REL),			NAME_ELEMENT(EV_ABS),
 	NAME_ELEMENT(EV_MSC),			NAME_ELEMENT(EV_LED),
@@ -181,8 +184,8 @@ static const char * const events[EV_MAX + 1] = {
 	NAME_ELEMENT(EV_FF_STATUS),		NAME_ELEMENT(EV_SW),
 };
 
-static const int maxval[EV_MAX + 1] = {
-	[0 ... EV_MAX] = -1,
+static const int maxval[EVTEST_EV_MAX + 1] = {
+	[0 ... EVTEST_EV_MAX] = -1,
 	[EV_SYN] = SYN_MAX,
 	[EV_KEY] = KEY_MAX,
 	[EV_REL] = REL_MAX,
@@ -196,28 +199,19 @@ static const int maxval[EV_MAX + 1] = {
 	[EV_FF_STATUS] = FF_STATUS_MAX,
 };
 
-
-#ifdef INPUT_PROP_SEMI_MT
-static const char * const props[INPUT_PROP_MAX + 1] = {
-	[0 ... INPUT_PROP_MAX] = NULL,
+static const char * const props[EVTEST_INPUT_PROP_MAX + 1] = {
+	[0 ... EVTEST_INPUT_PROP_MAX] = NULL,
 	NAME_ELEMENT(INPUT_PROP_POINTER),
 	NAME_ELEMENT(INPUT_PROP_DIRECT),
 	NAME_ELEMENT(INPUT_PROP_BUTTONPAD),
 	NAME_ELEMENT(INPUT_PROP_SEMI_MT),
-#ifdef INPUT_PROP_TOPBUTTONPAD
 	NAME_ELEMENT(INPUT_PROP_TOPBUTTONPAD),
-#endif
-#ifdef INPUT_PROP_POINTING_STICK
 	NAME_ELEMENT(INPUT_PROP_POINTING_STICK),
-#endif
-#ifdef INPUT_PROP_ACCELEROMETER
 	NAME_ELEMENT(INPUT_PROP_ACCELEROMETER),
-#endif
 };
-#endif
 
-static const char * const keys[KEY_MAX + 1] = {
-	[0 ... KEY_MAX] = NULL,
+static const char * const keys[EVTEST_KEY_MAX + 1] = {
+	[0 ... EVTEST_KEY_MAX] = NULL,
 	NAME_ELEMENT(KEY_RESERVED),		NAME_ELEMENT(KEY_ESC),
 	NAME_ELEMENT(KEY_1),			NAME_ELEMENT(KEY_2),
 	NAME_ELEMENT(KEY_3),			NAME_ELEMENT(KEY_4),
@@ -260,7 +254,7 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(KEY_KPPLUS),		NAME_ELEMENT(KEY_KP1),
 	NAME_ELEMENT(KEY_KP2),			NAME_ELEMENT(KEY_KP3),
 	NAME_ELEMENT(KEY_KP0),			NAME_ELEMENT(KEY_KPDOT),
-	NAME_ELEMENT(KEY_ZENKAKUHANKAKU), 	NAME_ELEMENT(KEY_102ND),
+	NAME_ELEMENT(KEY_ZENKAKUHANKAKU),	NAME_ELEMENT(KEY_102ND),
 	NAME_ELEMENT(KEY_F11),			NAME_ELEMENT(KEY_F12),
 	NAME_ELEMENT(KEY_RO),			NAME_ELEMENT(KEY_KATAKANA),
 	NAME_ELEMENT(KEY_HIRAGANA),		NAME_ELEMENT(KEY_HENKAN),
@@ -307,7 +301,7 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(KEY_EXIT),			NAME_ELEMENT(KEY_MOVE),
 	NAME_ELEMENT(KEY_EDIT),			NAME_ELEMENT(KEY_SCROLLUP),
 	NAME_ELEMENT(KEY_SCROLLDOWN),		NAME_ELEMENT(KEY_KPLEFTPAREN),
-	NAME_ELEMENT(KEY_KPRIGHTPAREN), 	NAME_ELEMENT(KEY_F13),
+	NAME_ELEMENT(KEY_KPRIGHTPAREN),		NAME_ELEMENT(KEY_F13),
 	NAME_ELEMENT(KEY_F14),			NAME_ELEMENT(KEY_F15),
 	NAME_ELEMENT(KEY_F16),			NAME_ELEMENT(KEY_F17),
 	NAME_ELEMENT(KEY_F18),			NAME_ELEMENT(KEY_F19),
@@ -366,45 +360,21 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(KEY_ZOOMIN),		NAME_ELEMENT(KEY_ZOOMOUT),
 	NAME_ELEMENT(KEY_ZOOMRESET),		NAME_ELEMENT(KEY_WORDPROCESSOR),
 	NAME_ELEMENT(KEY_EDITOR),		NAME_ELEMENT(KEY_SPREADSHEET),
-	NAME_ELEMENT(KEY_GRAPHICSEDITOR), 	NAME_ELEMENT(KEY_PRESENTATION),
+	NAME_ELEMENT(KEY_GRAPHICSEDITOR),	NAME_ELEMENT(KEY_PRESENTATION),
 	NAME_ELEMENT(KEY_DATABASE),		NAME_ELEMENT(KEY_NEWS),
 	NAME_ELEMENT(KEY_VOICEMAIL),		NAME_ELEMENT(KEY_ADDRESSBOOK),
 	NAME_ELEMENT(KEY_MESSENGER),		NAME_ELEMENT(KEY_DISPLAYTOGGLE),
-#ifdef KEY_SPELLCHECK
 	NAME_ELEMENT(KEY_SPELLCHECK),
-#endif
-#ifdef KEY_LOGOFF
 	NAME_ELEMENT(KEY_LOGOFF),
-#endif
-#ifdef KEY_DOLLAR
-	NAME_ELEMENT(KEY_DOLLAR),
-#endif
-#ifdef KEY_EURO
-	NAME_ELEMENT(KEY_EURO),
-#endif
-#ifdef KEY_FRAMEBACK
-	NAME_ELEMENT(KEY_FRAMEBACK),
-#endif
-#ifdef KEY_FRAMEFORWARD
-	NAME_ELEMENT(KEY_FRAMEFORWARD),
-#endif
-#ifdef KEY_CONTEXT_MENU
+	NAME_ELEMENT(KEY_DOLLAR),		NAME_ELEMENT(KEY_EURO),
+	NAME_ELEMENT(KEY_FRAMEBACK),		NAME_ELEMENT(KEY_FRAMEFORWARD),
 	NAME_ELEMENT(KEY_CONTEXT_MENU),
-#endif
-#ifdef KEY_MEDIA_REPEAT
 	NAME_ELEMENT(KEY_MEDIA_REPEAT),
-#endif
-#ifdef KEY_10CHANNELSUP
 	NAME_ELEMENT(KEY_10CHANNELSUP),
-#endif
-#ifdef KEY_10CHANNELSDOWN
 	NAME_ELEMENT(KEY_10CHANNELSDOWN),
-#endif
-#ifdef KEY_IMAGES
 	NAME_ELEMENT(KEY_IMAGES),
-#endif
 	NAME_ELEMENT(KEY_DEL_EOL),		NAME_ELEMENT(KEY_DEL_EOS),
-	NAME_ELEMENT(KEY_INS_LINE),	 	NAME_ELEMENT(KEY_DEL_LINE),
+	NAME_ELEMENT(KEY_INS_LINE),		NAME_ELEMENT(KEY_DEL_LINE),
 	NAME_ELEMENT(KEY_FN),			NAME_ELEMENT(KEY_FN_ESC),
 	NAME_ELEMENT(KEY_FN_F1),		NAME_ELEMENT(KEY_FN_F2),
 	NAME_ELEMENT(KEY_FN_F3),		NAME_ELEMENT(KEY_FN_F4),
@@ -421,74 +391,49 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(KEY_BRL_DOT5),		NAME_ELEMENT(KEY_BRL_DOT6),
 	NAME_ELEMENT(KEY_BRL_DOT7),		NAME_ELEMENT(KEY_BRL_DOT8),
 	NAME_ELEMENT(KEY_BRL_DOT9),		NAME_ELEMENT(KEY_BRL_DOT10),
-#ifdef KEY_NUMERIC_0
+
 	NAME_ELEMENT(KEY_NUMERIC_0),		NAME_ELEMENT(KEY_NUMERIC_1),
 	NAME_ELEMENT(KEY_NUMERIC_2),		NAME_ELEMENT(KEY_NUMERIC_3),
 	NAME_ELEMENT(KEY_NUMERIC_4),		NAME_ELEMENT(KEY_NUMERIC_5),
 	NAME_ELEMENT(KEY_NUMERIC_6),		NAME_ELEMENT(KEY_NUMERIC_7),
 	NAME_ELEMENT(KEY_NUMERIC_8),		NAME_ELEMENT(KEY_NUMERIC_9),
 	NAME_ELEMENT(KEY_NUMERIC_STAR),		NAME_ELEMENT(KEY_NUMERIC_POUND),
-#endif
-#ifdef KEY_NUMERIC_11
 	NAME_ELEMENT(KEY_NUMERIC_11),		NAME_ELEMENT(KEY_NUMERIC_12),
-#endif
+
 	NAME_ELEMENT(KEY_BATTERY),
 	NAME_ELEMENT(KEY_BLUETOOTH),		NAME_ELEMENT(KEY_BRIGHTNESS_CYCLE),
-	NAME_ELEMENT(KEY_BRIGHTNESS_ZERO),
-#ifdef KEY_DASHBOARD
+	NAME_ELEMENT(KEY_BRIGHTNESS_AUTO),
+
 	NAME_ELEMENT(KEY_DASHBOARD),
-#endif
+
 	NAME_ELEMENT(KEY_DISPLAY_OFF),		NAME_ELEMENT(KEY_DOCUMENTS),
 	NAME_ELEMENT(KEY_FORWARDMAIL),		NAME_ELEMENT(KEY_NEW),
 	NAME_ELEMENT(KEY_KBDILLUMDOWN),		NAME_ELEMENT(KEY_KBDILLUMUP),
-	NAME_ELEMENT(KEY_KBDILLUMTOGGLE), 	NAME_ELEMENT(KEY_REDO),
+	NAME_ELEMENT(KEY_KBDILLUMTOGGLE),	NAME_ELEMENT(KEY_REDO),
 	NAME_ELEMENT(KEY_REPLY),		NAME_ELEMENT(KEY_SAVE),
-#ifdef KEY_SCALE
 	NAME_ELEMENT(KEY_SCALE),
-#endif
 	NAME_ELEMENT(KEY_SEND),
 	NAME_ELEMENT(KEY_SCREENLOCK),		NAME_ELEMENT(KEY_SWITCHVIDEOMODE),
-#ifdef KEY_UWB
 	NAME_ELEMENT(KEY_UWB),
-#endif
-#ifdef KEY_VIDEO_NEXT
 	NAME_ELEMENT(KEY_VIDEO_NEXT),
-#endif
-#ifdef KEY_VIDEO_PREV
 	NAME_ELEMENT(KEY_VIDEO_PREV),
-#endif
-#ifdef KEY_WIMAX
-	NAME_ELEMENT(KEY_WIMAX),
-#endif
-#ifdef KEY_WLAN
+	NAME_ELEMENT(KEY_WWAN),
 	NAME_ELEMENT(KEY_WLAN),
-#endif
-#ifdef KEY_RFKILL
 	NAME_ELEMENT(KEY_RFKILL),
-#endif
-#ifdef KEY_MICMUTE
 	NAME_ELEMENT(KEY_MICMUTE),
-#endif
-#ifdef KEY_CAMERA_FOCUS
 	NAME_ELEMENT(KEY_CAMERA_FOCUS),
-#endif
-#ifdef KEY_WPS_BUTTON
 	NAME_ELEMENT(KEY_WPS_BUTTON),
-#endif
-#ifdef KEY_TOUCHPAD_TOGGLE
+
 	NAME_ELEMENT(KEY_TOUCHPAD_TOGGLE),
 	NAME_ELEMENT(KEY_TOUCHPAD_ON),
 	NAME_ELEMENT(KEY_TOUCHPAD_OFF),
-#endif
-#ifdef KEY_CAMERA_ZOOMIN
+
 	NAME_ELEMENT(KEY_CAMERA_ZOOMIN),	NAME_ELEMENT(KEY_CAMERA_ZOOMOUT),
 	NAME_ELEMENT(KEY_CAMERA_UP),		NAME_ELEMENT(KEY_CAMERA_DOWN),
 	NAME_ELEMENT(KEY_CAMERA_LEFT),		NAME_ELEMENT(KEY_CAMERA_RIGHT),
-#endif
-#ifdef KEY_ATTENDANT_ON
+
 	NAME_ELEMENT(KEY_ATTENDANT_ON),		NAME_ELEMENT(KEY_ATTENDANT_OFF),
 	NAME_ELEMENT(KEY_ATTENDANT_TOGGLE),	NAME_ELEMENT(KEY_LIGHTS_TOGGLE),
-#endif
 
 	NAME_ELEMENT(BTN_0),			NAME_ELEMENT(BTN_1),
 	NAME_ELEMENT(BTN_2),			NAME_ELEMENT(BTN_3),
@@ -506,13 +451,8 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(BTN_BASE3),		NAME_ELEMENT(BTN_BASE4),
 	NAME_ELEMENT(BTN_BASE5),		NAME_ELEMENT(BTN_BASE6),
 	NAME_ELEMENT(BTN_DEAD),			NAME_ELEMENT(BTN_C),
-#ifdef BTN_SOUTH
 	NAME_ELEMENT(BTN_SOUTH),		NAME_ELEMENT(BTN_EAST),
 	NAME_ELEMENT(BTN_NORTH),		NAME_ELEMENT(BTN_WEST),
-#else
-	NAME_ELEMENT(BTN_A),			NAME_ELEMENT(BTN_B),
-	NAME_ELEMENT(BTN_X),			NAME_ELEMENT(BTN_Y),
-#endif
 	NAME_ELEMENT(BTN_Z),			NAME_ELEMENT(BTN_TL),
 	NAME_ELEMENT(BTN_TR),			NAME_ELEMENT(BTN_TL2),
 	NAME_ELEMENT(BTN_TR2),			NAME_ELEMENT(BTN_SELECT),
@@ -522,77 +462,34 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(BTN_TOOL_BRUSH),		NAME_ELEMENT(BTN_TOOL_PENCIL),
 	NAME_ELEMENT(BTN_TOOL_AIRBRUSH),	NAME_ELEMENT(BTN_TOOL_FINGER),
 	NAME_ELEMENT(BTN_TOOL_MOUSE),		NAME_ELEMENT(BTN_TOOL_LENS),
-	NAME_ELEMENT(BTN_TOUCH),		NAME_ELEMENT(BTN_STYLUS),
-	NAME_ELEMENT(BTN_STYLUS2),		NAME_ELEMENT(BTN_TOOL_DOUBLETAP),
-	NAME_ELEMENT(BTN_TOOL_TRIPLETAP),
-#ifdef BTN_TOOL_QUADTAP
-	NAME_ELEMENT(BTN_TOOL_QUADTAP),
-#endif
-	NAME_ELEMENT(BTN_GEAR_DOWN),
-	NAME_ELEMENT(BTN_GEAR_UP),
-
-#ifdef BTN_DPAD_UP
+	NAME_ELEMENT(BTN_TOUCH),
+	NAME_ELEMENT(BTN_STYLUS),		NAME_ELEMENT(BTN_STYLUS2),
+	NAME_ELEMENT(BTN_TOOL_DOUBLETAP),	NAME_ELEMENT(BTN_TOOL_TRIPLETAP),
+	NAME_ELEMENT(BTN_TOOL_QUADTAP),		NAME_ELEMENT(BTN_TOOL_QUINTTAP),
+	NAME_ELEMENT(BTN_GEAR_DOWN),		NAME_ELEMENT(BTN_GEAR_UP),
 	NAME_ELEMENT(BTN_DPAD_UP),		NAME_ELEMENT(BTN_DPAD_DOWN),
 	NAME_ELEMENT(BTN_DPAD_LEFT),		NAME_ELEMENT(BTN_DPAD_RIGHT),
-#endif
-#ifdef KEY_ALS_TOGGLE
 	NAME_ELEMENT(KEY_ALS_TOGGLE),
-#endif
-#ifdef KEY_BUTTONCONFIG
 	NAME_ELEMENT(KEY_BUTTONCONFIG),
-#endif
-#ifdef KEY_TASKMANAGER
 	NAME_ELEMENT(KEY_TASKMANAGER),
-#endif
-#ifdef KEY_JOURNAL
 	NAME_ELEMENT(KEY_JOURNAL),
-#endif
-#ifdef KEY_CONTROLPANEL
 	NAME_ELEMENT(KEY_CONTROLPANEL),
-#endif
-#ifdef KEY_APPSELECT
 	NAME_ELEMENT(KEY_APPSELECT),
-#endif
-#ifdef KEY_SCREENSAVER
 	NAME_ELEMENT(KEY_SCREENSAVER),
-#endif
-#ifdef KEY_VOICECOMMAND
 	NAME_ELEMENT(KEY_VOICECOMMAND),
-#endif
-#ifdef KEY_ASSISTANT
 	NAME_ELEMENT(KEY_ASSISTANT),
-#endif
-#ifdef KEY_BRIGHTNESS_MIN
-	NAME_ELEMENT(KEY_BRIGHTNESS_MIN),
-#endif
-#ifdef KEY_BRIGHTNESS_MAX
-	NAME_ELEMENT(KEY_BRIGHTNESS_MAX),
-#endif
-#ifdef KEY_KBDINPUTASSIST_PREV
+	NAME_ELEMENT(KEY_BRIGHTNESS_MIN),	NAME_ELEMENT(KEY_BRIGHTNESS_MAX),
+
 	NAME_ELEMENT(KEY_KBDINPUTASSIST_PREV),
-#endif
-#ifdef KEY_KBDINPUTASSIST_NEXT
 	NAME_ELEMENT(KEY_KBDINPUTASSIST_NEXT),
-#endif
-#ifdef KEY_KBDINPUTASSIST_PREVGROUP
 	NAME_ELEMENT(KEY_KBDINPUTASSIST_PREVGROUP),
-#endif
-#ifdef KEY_KBDINPUTASSIST_NEXTGROUP
 	NAME_ELEMENT(KEY_KBDINPUTASSIST_NEXTGROUP),
-#endif
-#ifdef KEY_KBDINPUTASSIST_ACCEPT
 	NAME_ELEMENT(KEY_KBDINPUTASSIST_ACCEPT),
-#endif
-#ifdef KEY_KBDINPUTASSIST_CANCEL
 	NAME_ELEMENT(KEY_KBDINPUTASSIST_CANCEL),
-#endif
 
-#ifdef KEY_RIGHT_UP
 	NAME_ELEMENT(KEY_RIGHT_UP),		NAME_ELEMENT(KEY_RIGHT_DOWN),
 	NAME_ELEMENT(KEY_LEFT_UP),		NAME_ELEMENT(KEY_LEFT_DOWN),
-#endif
 
-#ifdef KEY_ROOT_MENU
 	NAME_ELEMENT(KEY_ROOT_MENU),
 	NAME_ELEMENT(KEY_MEDIA_TOP_MENU),
 	NAME_ELEMENT(KEY_AUDIO_DESC),
@@ -604,17 +501,10 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(KEY_UNMUTE),
 	NAME_ELEMENT(KEY_FASTREVERSE),
 	NAME_ELEMENT(KEY_SLOWREVERSE),
-#endif
 
-#ifdef KEY_DATA
 	NAME_ELEMENT(KEY_DATA),
-#endif
-
-#ifdef KEY_ONSCREEN_KEYBOARD
 	NAME_ELEMENT(KEY_ONSCREEN_KEYBOARD),
-#endif
 
-#ifdef BTN_TRIGGER_HAPPY
 	NAME_ELEMENT(BTN_TRIGGER_HAPPY1),	NAME_ELEMENT(BTN_TRIGGER_HAPPY11),
 	NAME_ELEMENT(BTN_TRIGGER_HAPPY2),	NAME_ELEMENT(BTN_TRIGGER_HAPPY12),
 	NAME_ELEMENT(BTN_TRIGGER_HAPPY3),	NAME_ELEMENT(BTN_TRIGGER_HAPPY13),
@@ -636,16 +526,12 @@ static const char * const keys[KEY_MAX + 1] = {
 	NAME_ELEMENT(BTN_TRIGGER_HAPPY28),	NAME_ELEMENT(BTN_TRIGGER_HAPPY38),
 	NAME_ELEMENT(BTN_TRIGGER_HAPPY29),	NAME_ELEMENT(BTN_TRIGGER_HAPPY39),
 	NAME_ELEMENT(BTN_TRIGGER_HAPPY30),	NAME_ELEMENT(BTN_TRIGGER_HAPPY40),
-#endif
-#ifdef BTN_TOOL_QUINTTAP
-	NAME_ELEMENT(BTN_TOOL_QUINTTAP),
-#endif
 };
 
 static const char * const absval[6] = { "Value", "Min  ", "Max  ", "Fuzz ", "Flat ", "Resolution "};
 
-static const char * const relatives[REL_MAX + 1] = {
-	[0 ... REL_MAX] = NULL,
+static const char * const relatives[EVTEST_REL_MAX + 1] = {
+	[0 ... EVTEST_REL_MAX] = NULL,
 	NAME_ELEMENT(REL_X),			NAME_ELEMENT(REL_Y),
 	NAME_ELEMENT(REL_Z),			NAME_ELEMENT(REL_RX),
 	NAME_ELEMENT(REL_RY),			NAME_ELEMENT(REL_RZ),
@@ -654,8 +540,8 @@ static const char * const relatives[REL_MAX + 1] = {
 	NAME_ELEMENT(REL_MISC),
 };
 
-static const char * const absolutes[ABS_MAX + 1] = {
-	[0 ... ABS_MAX] = NULL,
+static const char * const absolutes[EVTEST_ABS_MAX + 1] = {
+	[0 ... EVTEST_ABS_MAX] = NULL,
 	NAME_ELEMENT(ABS_X),			NAME_ELEMENT(ABS_Y),
 	NAME_ELEMENT(ABS_Z),			NAME_ELEMENT(ABS_RX),
 	NAME_ELEMENT(ABS_RY),			NAME_ELEMENT(ABS_RZ),
@@ -669,7 +555,6 @@ static const char * const absolutes[ABS_MAX + 1] = {
 	NAME_ELEMENT(ABS_DISTANCE),		NAME_ELEMENT(ABS_TILT_X),
 	NAME_ELEMENT(ABS_TILT_Y),		NAME_ELEMENT(ABS_TOOL_WIDTH),
 	NAME_ELEMENT(ABS_VOLUME),		NAME_ELEMENT(ABS_MISC),
-#ifdef ABS_MT_BLOB_ID
 	NAME_ELEMENT(ABS_MT_TOUCH_MAJOR),
 	NAME_ELEMENT(ABS_MT_TOUCH_MINOR),
 	NAME_ELEMENT(ABS_MT_WIDTH_MAJOR),
@@ -679,112 +564,74 @@ static const char * const absolutes[ABS_MAX + 1] = {
 	NAME_ELEMENT(ABS_MT_POSITION_Y),
 	NAME_ELEMENT(ABS_MT_TOOL_TYPE),
 	NAME_ELEMENT(ABS_MT_BLOB_ID),
-#endif
-#ifdef ABS_MT_TRACKING_ID
 	NAME_ELEMENT(ABS_MT_TRACKING_ID),
-#endif
-#ifdef ABS_MT_PRESSURE
 	NAME_ELEMENT(ABS_MT_PRESSURE),
-#endif
-#ifdef ABS_MT_SLOT
 	NAME_ELEMENT(ABS_MT_SLOT),
-#endif
-#ifdef ABS_MT_TOOL_X
 	NAME_ELEMENT(ABS_MT_TOOL_X),
 	NAME_ELEMENT(ABS_MT_TOOL_Y),
 	NAME_ELEMENT(ABS_MT_DISTANCE),
-#endif
-
 };
 
-static const char * const misc[MSC_MAX + 1] = {
-	[ 0 ... MSC_MAX] = NULL,
+static const char * const misc[EVTEST_MSC_MAX + 1] = {
+	[ 0 ... EVTEST_MSC_MAX] = NULL,
 	NAME_ELEMENT(MSC_SERIAL),		NAME_ELEMENT(MSC_PULSELED),
 	NAME_ELEMENT(MSC_GESTURE),		NAME_ELEMENT(MSC_RAW),
 	NAME_ELEMENT(MSC_SCAN),
-#ifdef MSC_TIMESTAMP
 	NAME_ELEMENT(MSC_TIMESTAMP),
-#endif
 };
 
-static const char * const leds[LED_MAX + 1] = {
-	[0 ... LED_MAX] = NULL,
+static const char * const leds[EVTEST_LED_MAX + 1] = {
+	[0 ... EVTEST_LED_MAX] = NULL,
 	NAME_ELEMENT(LED_NUML),			NAME_ELEMENT(LED_CAPSL),
 	NAME_ELEMENT(LED_SCROLLL),		NAME_ELEMENT(LED_COMPOSE),
 	NAME_ELEMENT(LED_KANA),			NAME_ELEMENT(LED_SLEEP),
 	NAME_ELEMENT(LED_SUSPEND),		NAME_ELEMENT(LED_MUTE),
 	NAME_ELEMENT(LED_MISC),
-#ifdef LED_MAIL
 	NAME_ELEMENT(LED_MAIL),
-#endif
-#ifdef LED_CHARGING
 	NAME_ELEMENT(LED_CHARGING),
-#endif
 };
 
-static const char * const repeats[REP_MAX + 1] = {
-	[0 ... REP_MAX] = NULL,
+static const char * const repeats[EVTEST_REP_MAX + 1] = {
+	[0 ... EVTEST_REP_MAX] = NULL,
 	NAME_ELEMENT(REP_DELAY),		NAME_ELEMENT(REP_PERIOD)
 };
 
-static const char * const sounds[SND_MAX + 1] = {
-	[0 ... SND_MAX] = NULL,
+static const char * const sounds[EVTEST_SND_MAX + 1] = {
+	[0 ... EVTEST_SND_MAX] = NULL,
 	NAME_ELEMENT(SND_CLICK),		NAME_ELEMENT(SND_BELL),
 	NAME_ELEMENT(SND_TONE)
 };
 
-static const char * const syns[SYN_MAX + 1] = {
-	[0 ... SYN_MAX] = NULL,
+static const char * const syns[EVTEST_SYN_MAX + 1] = {
+	[0 ... EVTEST_SYN_MAX] = NULL,
 	NAME_ELEMENT(SYN_REPORT),
 	NAME_ELEMENT(SYN_CONFIG),
 	NAME_ELEMENT(SYN_MT_REPORT),
 	NAME_ELEMENT(SYN_DROPPED)
 };
 
-static const char * const switches[SW_MAX + 1] = {
-	[0 ... SW_MAX] = NULL,
+static const char * const switches[EVTEST_SW_MAX + 1] = {
+	[0 ... EVTEST_SW_MAX] = NULL,
 	NAME_ELEMENT(SW_LID),
 	NAME_ELEMENT(SW_TABLET_MODE),
 	NAME_ELEMENT(SW_HEADPHONE_INSERT),
-#ifdef SW_RFKILL_ALL
 	NAME_ELEMENT(SW_RFKILL_ALL),
-#endif
-#ifdef SW_MICROPHONE_INSERT
 	NAME_ELEMENT(SW_MICROPHONE_INSERT),
-#endif
-#ifdef SW_DOCK
 	NAME_ELEMENT(SW_DOCK),
-#endif
-#ifdef SW_LINEOUT_INSERT
 	NAME_ELEMENT(SW_LINEOUT_INSERT),
-#endif
-#ifdef SW_JACK_PHYSICAL_INSERT
 	NAME_ELEMENT(SW_JACK_PHYSICAL_INSERT),
-#endif
-#ifdef SW_VIDEOOUT_INSERT
 	NAME_ELEMENT(SW_VIDEOOUT_INSERT),
-#endif
-#ifdef SW_CAMERA_LENS_COVER
 	NAME_ELEMENT(SW_CAMERA_LENS_COVER),
 	NAME_ELEMENT(SW_KEYPAD_SLIDE),
 	NAME_ELEMENT(SW_FRONT_PROXIMITY),
-#endif
-#ifdef SW_ROTATE_LOCK
 	NAME_ELEMENT(SW_ROTATE_LOCK),
-#endif
-#ifdef SW_LINEIN_INSERT
 	NAME_ELEMENT(SW_LINEIN_INSERT),
-#endif
-#ifdef SW_MUTE_DEVICE
 	NAME_ELEMENT(SW_MUTE_DEVICE),
-#endif
-#ifdef SW_PEN_INSERTED
 	NAME_ELEMENT(SW_PEN_INSERTED),
-#endif
 };
 
-static const char * const force[FF_MAX + 1] = {
-	[0 ... FF_MAX] = NULL,
+static const char * const force[EVTEST_FF_MAX + 1] = {
+	[0 ... EVTEST_FF_MAX] = NULL,
 	NAME_ELEMENT(FF_RUMBLE),		NAME_ELEMENT(FF_PERIODIC),
 	NAME_ELEMENT(FF_CONSTANT),		NAME_ELEMENT(FF_SPRING),
 	NAME_ELEMENT(FF_FRICTION),		NAME_ELEMENT(FF_DAMPER),
@@ -795,13 +642,13 @@ static const char * const force[FF_MAX + 1] = {
 	NAME_ELEMENT(FF_GAIN),			NAME_ELEMENT(FF_AUTOCENTER),
 };
 
-static const char * const forcestatus[FF_STATUS_MAX + 1] = {
-	[0 ... FF_STATUS_MAX] = NULL,
+static const char * const forcestatus[EVTEST_FF_STATUS_MAX + 1] = {
+	[0 ... EVTEST_FF_STATUS_MAX] = NULL,
 	NAME_ELEMENT(FF_STATUS_STOPPED),	NAME_ELEMENT(FF_STATUS_PLAYING),
 };
 
-static const char * const * const names[EV_MAX + 1] = {
-	[0 ... EV_MAX] = NULL,
+static const char * const * const names[EVTEST_EV_MAX + 1] = {
+	[0 ... EVTEST_EV_MAX] = NULL,
 	[EV_SYN] = syns,			[EV_KEY] = keys,
 	[EV_REL] = relatives,			[EV_ABS] = absolutes,
 	[EV_MSC] = misc,			[EV_LED] = leds,
@@ -970,7 +817,7 @@ static void print_repdata(int fd)
 
 	ioctl(fd, EVIOCGREP, rep);
 
-	for (i = 0; i <= REP_MAX; i++) {
+	for (i = 0; i <= EVTEST_REP_MAX; i++) {
 		printf("    Repeat code %d (%s)\n", i, names[EV_REP] ? (names[EV_REP][i] ? names[EV_REP][i] : "?") : "?");
 		printf("      Value %6d\n", rep[i]);
 	}
@@ -979,20 +826,18 @@ static void print_repdata(int fd)
 
 static inline const char* typename(unsigned int type)
 {
-	return (type <= EV_MAX && events[type]) ? events[type] : "?";
+	return (type <= EVTEST_EV_MAX && events[type]) ? events[type] : "?";
 }
 
 static inline const char* codename(unsigned int type, unsigned int code)
 {
-	return (type <= EV_MAX && code <= maxval[type] && names[type] && names[type][code]) ? names[type][code] : "?";
+	return (type <= EVTEST_EV_MAX && code <= maxval[type] && names[type] && names[type][code]) ? names[type][code] : "?";
 }
 
-#ifdef INPUT_PROP_SEMI_MT
 static inline const char* propname(unsigned int prop)
 {
-	return (prop <= INPUT_PROP_MAX && props[prop]) ? props[prop] : "?";
+	return (prop <= EVTEST_INPUT_PROP_MAX && props[prop]) ? props[prop] : "?";
 }
-#endif
 
 static int get_state(int fd, unsigned int type, unsigned long *array, size_t size)
 {
@@ -1033,12 +878,10 @@ static int print_device_info(int fd)
 	int version;
 	unsigned short id[4];
 	char name[256] = "Unknown";
-	unsigned long bit[EV_MAX][NBITS(KEY_MAX)];
-	unsigned long state[KEY_CNT] = {0};
-#ifdef INPUT_PROP_SEMI_MT
+	unsigned long bit[EVTEST_EV_MAX][NBITS(EVTEST_KEY_MAX)];
+	unsigned long state[EVTEST_KEY_MAX + 1] = {0};
 	unsigned int prop;
-	unsigned long propbits[INPUT_PROP_MAX];
-#endif
+	unsigned long propbits[EVTEST_INPUT_PROP_MAX];
 	int stateval;
 	int have_state;
 
@@ -1058,16 +901,16 @@ static int print_device_info(int fd)
 	printf("Input device name: \"%s\"\n", name);
 
 	memset(bit, 0, sizeof(bit));
-	ioctl(fd, EVIOCGBIT(0, EV_MAX), bit[0]);
+	ioctl(fd, EVIOCGBIT(0, EVTEST_EV_MAX), bit[0]);
 	printf("Supported events:\n");
 
-	for (type = 0; type < EV_MAX; type++) {
+	for (type = 0; type < EVTEST_EV_MAX; type++) {
 		if (test_bit(type, bit[0]) && type != EV_REP) {
 			have_state = (get_state(fd, type, state, sizeof(state)) == 0);
 
 			printf("  Event type %d (%s)\n", type, typename(type));
 			if (type == EV_SYN) continue;
-			ioctl(fd, EVIOCGBIT(type, KEY_MAX), bit[type]);
+			ioctl(fd, EVIOCGBIT(type, EVTEST_KEY_MAX), bit[type]);
 			for (code = 0; code < KEY_MAX; code++)
 				if (test_bit(code, bit[type])) {
 					if (have_state) {
@@ -1088,15 +931,14 @@ static int print_device_info(int fd)
 		printf("  Repeat type %d (%s)\n", EV_REP, events[EV_REP] ?  events[EV_REP] : "?");
 		print_repdata(fd);
 	}
-#ifdef INPUT_PROP_SEMI_MT
+
 	memset(propbits, 0, sizeof(propbits));
 	ioctl(fd, EVIOCGPROP(sizeof(propbits)), propbits);
 	printf("Properties:\n");
-	for (prop = 0; prop < INPUT_PROP_MAX; prop++) {
+	for (prop = 0; prop < EVTEST_INPUT_PROP_MAX; prop++) {
 		if (test_bit(prop, propbits))
 			printf("  Property type %d (%s)\n", prop, propname(prop));
 	}
-#endif
 
 	return 0;
 }
-- 
2.14.2.822.g60be5d43e6-goog



More information about the Input-tools mailing list