exit 1; \
fi
@echo generating $(srcdir)/parse.h
- @printf "struct parse_key {\n\tchar *name;\n\tunsigned int value;\n} " > $(srcdir)/parse.h
- @printf "keynames[] = {\n" >> $(srcdir)/parse.h
+ @printf "struct parse_event {\n\tchar *name;\n\tunsigned int value;\n};\n" > $(srcdir)/parse.h
+ @printf "struct parse_event key_events[] = {\n" >> $(srcdir)/parse.h
@more $(KERNEL_DIR)/include/uapi/linux/input.h | perl -n \
-e 'if (m/^\#define\s+(KEY_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) ' \
-e '{ printf "\t{\"%s\", %s},\n",$$1,$$2; }' \
>> $(srcdir)/parse.h
@printf "\t{ NULL, 0}\n};\n" >> $(srcdir)/parse.h
- @printf "struct event_abs {\n\tchar *name;\n\tunsigned int value;\n} " >> $(srcdir)/parse.h
- @printf "event_abs[] = {\n" >> $(srcdir)/parse.h
+ @printf "struct parse_event abs_events[] = {\n" >> $(srcdir)/parse.h
@more $(KERNEL_DIR)/include/uapi/linux/input.h | perl -n \
-e 'if (m/^\#define\s+(ABS_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) ' \
-e '{ printf "\t{\"%s\", %s},\n",$$1,$$2; }' \
static int parse_code(char *string)
{
- struct parse_key *p;
+ struct parse_event *p;
- for (p = keynames; p->name != NULL; p++) {
+ for (p = key_events; p->name != NULL; p++) {
if (!strcasecmp(p->name, string))
return p->value;
}
static void prtcode(int *codes)
{
- struct parse_key *p;
+ struct parse_event *p;
- for (p = keynames; p->name != NULL; p++) {
+ for (p = key_events; p->name != NULL; p++) {
if (p->value == (unsigned)codes[1]) {
printf("scancode 0x%04x = %s (0x%02x)\n", codes[0], p->name, codes[1]);
return;
static void test_event(int fd)
{
struct input_event ev[64];
+ struct parse_event *p;
int rd, i;
printf ("Testing events. Please, press CTRL-C to abort.\n");
ev[i].time.tv_sec, ev[i].time.tv_usec, ev[i].value);
break;
case EV_KEY: {
- struct parse_key *p;
char *name = "";
printf("%ld.%06ld: event key %s: ",
(ev[i].value == 0) ? "up" : "down"
);
- for (p = keynames; p->name != NULL; p++) {
+ for (p = key_events; p->name != NULL; p++) {
if (p->value == ev[i].code) {
name = p->name;
break;
ev[i].time.tv_sec, ev[i].time.tv_usec);
break;
case EV_ABS: {
- struct event_abs *p;
char *name = "";
printf("%ld.%06ld: event abs ",
ev[i].time.tv_sec, ev[i].time.tv_usec);
- for (p = event_abs; p->name != NULL; p++) {
+ for (p = abs_events; p->name != NULL; p++) {
if (p->value == ev[i].code) {
name = p->name;
break;