diff options
Diffstat (limited to 'input.c')
-rw-r--r-- | input.c | 66 |
1 files changed, 61 insertions, 5 deletions
@@ -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", |