main.c
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <linux/input.h> /* UP buf[10]=0x11, buf[12]=0xff DOWN buf[10]=0x11, buf[12]=0x01 LEFT buf[10]=0x10, buf[12]=0xff RIGHT buf[10]=0x10, buf[12]=0x01 A buf[10]=0x30, buf[12]=0x01 B buf[10]=0x31, buf[12]=0x01 X buf[10]=0x33, buf[12]=0x01 Y buf[10]=0x32, buf[12]=0x01 L1 buf[10]=0x34, buf[12]=0x01 L2 buf[10]=0x3a, buf[12]=0x01 R1 buf[10]=0x35, buf[12]=0x01 R2 buf[10]=0x3b, buf[12]=0x01 MENU buf[10]=0x38, buf[12]=0x01 MENU buf[10]=0x62, buf[12]=0x01 SELECT buf[10]=0x36, buf[12]=0x01 START buf[10]=0x37, buf[12]=0x01 VOL+ buf[10]=0x73, buf[12]=0x01 VOL- buf[10]=0x72, buf[12]=0x01 */ int main(int argc, char **argv) { int fd = -1; char buf[16] = {0}; fd = open("/dev/input/event1", O_RDONLY); if (fd > 0) { while (1) { if (read(fd, buf, 16)) { int s = !!buf[12]; switch (buf[10]) { case 0x11: if (s) { printf("%s 1\n", buf[12] == 0xff ? "UP" : "DOWN"); } else { printf("UP/DOWN 0\n"); } break; case 0x10: if (s) { printf("%s 1\n", buf[12] == 0xff ? "LEFT" : "RIGHT"); } else { printf("LEFT/RIGHT 0\n"); } break; case 0x30: printf("A %d\n", s); break; case 0x31: printf("B %d\n", s); break; case 0x33: printf("X %d\n", s); break; case 0x32: printf("Y %d\n", s); break; case 0x34: printf("L1 %d\n", s); break; case 0x3a: printf("L2 %d\n", s); break; case 0x35: printf("R1 %d\n", s); break; case 0x3b: printf("R2 %d\n", s); break; case 0x38: printf("MENU %d\n", s); break; case 0x62: printf("MENU %d\n", s); break; case 0x36: printf("SELECT %d\n", s); break; case 0x37: printf("START %d\n", s); break; case 0x73: printf("VOL+ %d\n", s); break; case 0x72: printf("VOL- %d\n", s); break; } } } } return 0; }