aboutsummaryrefslogtreecommitdiffstats
path: root/input.c
diff options
context:
space:
mode:
Diffstat (limited to 'input.c')
-rw-r--r--input.c66
1 files changed, 61 insertions, 5 deletions
diff --git a/input.c b/input.c
index 9d27d5a..d57a31e 100644
--- a/input.c
+++ b/input.c
@@ -11,19 +11,69 @@
/* ------------------------------------------------------------------ */
-char *EV_NAME[EV_MAX] = {
+char *EV_NAME[EV_CNT] = {
#include "EV.h"
};
-char *REL_NAME[REL_MAX] = {
+static char *REL_NAME[REL_CNT] = {
#include "REL.h"
};
-char *KEY_NAME[KEY_MAX] = {
+static char *ABS_NAME[ABS_CNT] = {
+#include "ABS.h"
+};
+
+static char *MSC_NAME[MSC_CNT] = {
+#include "MSC.h"
+};
+
+static char *LED_NAME[LED_CNT] = {
+#include "LED.h"
+};
+
+static char *SND_NAME[SND_CNT] = {
+#include "SND.h"
+};
+
+#ifndef REP_CNT
+#define REP_CNT (REP_MAX + 1)
+#endif
+
+static char *REP_NAME[REP_CNT] = {
+#include "REP.h"
+};
+
+static char *KEY_NAME[KEY_CNT] = {
#include "KEY.h"
#include "BTN.h"
};
+static char *SW_NAME[SW_CNT] = {
+#include "SW.h"
+};
+
+int EV_TYPE_MAX[EV_CNT] = {
+ [EV_REL] = REL_MAX,
+ [EV_ABS] = ABS_MAX,
+ [EV_MSC] = MSC_MAX,
+ [EV_LED] = LED_MAX,
+ [EV_SND] = SND_MAX,
+ [EV_REP] = REP_MAX,
+ [EV_KEY] = KEY_MAX,
+ [EV_SW] = SW_MAX,
+};
+
+char **EV_TYPE_NAME[EV_CNT] = {
+ [EV_REL] = REL_NAME,
+ [EV_ABS] = ABS_NAME,
+ [EV_MSC] = MSC_NAME,
+ [EV_LED] = LED_NAME,
+ [EV_SND] = SND_NAME,
+ [EV_REP] = REP_NAME,
+ [EV_KEY] = KEY_NAME,
+ [EV_SW] = SW_NAME,
+};
+
char *BUS_NAME[] = {
#include "BUS.h"
};
@@ -111,12 +161,18 @@ void print_event(struct input_event *event)
switch (event->type) {
case EV_KEY:
fprintf(stderr," %s %s",
- KEY_NAME[event->code],
+ ev_type_name(EV_KEY, event->code),
event->value ? "pressed" : "released");
break;
case EV_REL:
+ case EV_ABS:
+ case EV_MSC:
+ case EV_LED:
+ case EV_SND:
+ case EV_REP:
+ case EV_SW:
fprintf(stderr," %s %d",
- REL_NAME[event->code], event->value);
+ ev_type_name(event->type, event->code), event->value);
break;
default:
fprintf(stderr," code=%u value=%d",