static void keys_cb(EV_P_ ev_io *w_, int revents)
{
- static char *type = "keys";
-
ev_io_keys *w = (ev_io_keys *)w_;
int fd = w->fd;
struct input_event ev;
}
if (ev.type == 1 && ev.value == 1) {
switch (ev.code) {
- case KEY_A:
+ case BTN_TRIGGER_HAPPY1:
key = 'A';
break;
- case KEY_B:
+ case BTN_TRIGGER_HAPPY2:
key = 'B';
break;
- case KEY_C:
+ case BTN_TRIGGER_HAPPY3:
key = 'C';
break;
- case KEY_D:
+ case BTN_TRIGGER_HAPPY4:
key = 'D';
break;
- case KEY_E:
+ case BTN_TRIGGER_HAPPY5:
key = 'E';
break;
- case KEY_F:
+ case BTN_TRIGGER_HAPPY6:
key = 'F';
break;
- case KEY_G:
+ case BTN_TRIGGER_HAPPY7:
key = 'G';
break;
- case KEY_H:
+ case BTN_TRIGGER_HAPPY8:
key = 'H';
break;
- case KEY_I:
+ case BTN_TRIGGER_HAPPY9:
key = 'I';
break;
- case KEY_J:
+ case BTN_TRIGGER_HAPPY10:
key = 'J';
break;
- case KEY_K:
+ case BTN_TRIGGER_HAPPY11:
key = 'K';
break;
- case KEY_L:
+ case BTN_TRIGGER_HAPPY12:
key = 'L';
break;
- case KEY_M:
+ case BTN_TRIGGER_HAPPY13:
key = 'M';
break;
- case KEY_N:
+ case BTN_TRIGGER_HAPPY14:
key = 'N';
break;
- case KEY_O:
+ case BTN_TRIGGER_HAPPY15:
key = 'O';
break;
- case KEY_P:
+ case BTN_TRIGGER_HAPPY16:
key = 'P';
break;
- case KEY_Q:
+ case BTN_TRIGGER_HAPPY17:
key = 'Q';
break;
- case KEY_R:
+ case BTN_TRIGGER_HAPPY18:
key = 'R';
break;
- case KEY_S:
+ case BTN_TRIGGER_HAPPY19:
key = 'S';
break;
- case KEY_T:
+ case BTN_TRIGGER_HAPPY20:
key = 'T';
break;
default:
fprintf(stderr, "unsupported event code: %d\n", ev.code);
- return;
+ key = '?';
+ //return;
}
- JSON_START();
- JSON_STR(type);
- JSON_NEXT();
- JSON_CHAR(key);
- JSON_END();
+ keys_json_print(fd, key);
}
}
int mt_keys_init(mt_keys_t *self, struct ev_loop *loop, int fd)
{
- int ev = open("/dev/input/by-path/platform-gpio-keys-event", O_RDONLY);
- if (fd == -1) {
- perror("open");
+ char *dev = getenv("INPUT");
+
+ if (!dev)
+ dev = "/dev/input/by-path/platform-gpio-keys-event";
+
+ int ev = open(dev, O_RDONLY);
+ if (ev == -1) {
+ perror(dev);
return -1;
}
ev_run(loop, 0);
mt_keys_deinit(&keys);
+ ev_loop_destroy(loop);
return 0;
}