方法是把每一个/dev/input/event打开。通过ioctl函数来读取设备name,每一个设备name是固定的,可以根据name区分event。我这是查找触摸事件为例:代码如下:
1 static int getTouchEventNum() 2 { 3 char name[64]; /* RATS: Use ok, but could be better */ 4 char buf[256] = { 0, }; /* RATS: Use ok */ 5 int fd = 0; 6 int i; 7 for (i = 0; i < 32; i++) 8 { 9 sprintf(name, "/dev/input/event%d", i); 10 if ((fd = open(name, O_RDONLY, 0)) >= 0) 11 { 12 ioctl(fd, EVIOCGNAME(sizeof(buf)), buf); 13 if(strstr(buf, "MTOUC Touch")) 14 { 15 close(fd); 16 return i; 17 } 18 //printf("%s ", name); 19 //printf("name: %s ", buf); 20 close(fd); 21 } 22 } 23 return -1; 24 }
这个函数的目的就是返回名字里有 MTOUC Touch 这个字段的event设备号,MTOUC Touch这个就是触摸的设备名字。