如何区分/dev/input/event

时间:2023-03-09 07:31:09
如何区分/dev/input/event

  方法是把每一个/dev/input/event打开。通过ioctl函数来读取设备name,每一个设备name是固定的,可以根据name区分event。我这是查找触摸事件为例:代码如下:

 static int getTouchEventNum()
{
char name[]; /* RATS: Use ok, but could be better */
char buf[] = { , }; /* RATS: Use ok */
int fd = ;
int i;
for (i = ; i < ; i++)
{
sprintf(name, "/dev/input/event%d", i);
if ((fd = open(name, O_RDONLY, )) >= )
{
ioctl(fd, EVIOCGNAME(sizeof(buf)), buf);
if(strstr(buf, "MTOUC Touch"))
{
close(fd);
return i;
}
//printf("%s\n", name);
//printf("name: %s\n", buf);
close(fd);
}
}
return -;
}

这个函数的目的就是返回名字里有 MTOUC Touch 这个字段的event设备号,MTOUC Touch这个就是触摸的设备名字。