方法是把每一個/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\n", name); 19 //printf("name: %s\n", buf); 20 close(fd); 21 } 22 } 23 return -1; 24 }
這個函數的目的就是返回名字里有 MTOUC Touch 這個字段的event設備號,MTOUC Touch這個就是觸摸的設備名字。