了解一下/dev/input/enventX 即可 上报的信息格式百度一下就有,下面贴代码
#include <stdio.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <errno.h>
#include <linux/input.h>
int main(int argc, char **argv){
int fd;
int x,y,id;
fd_set rds;
int ret;
struct input_event event;
struct timeval time;
fd = open( "/dev/input/event4", O_RDONLY );
if ( fd < 0 )
{
perror( "/dev/input/event4" );
return(-1);
}
while ( 1 )
{
FD_ZERO( &rds );
FD_SET( fd, &rds );
/*调用select检查是否能够从/dev/input/event0设备读取数据*/
ret = select( fd + 1, &rds, NULL, NULL, NULL );
if ( ret < 0 )
{
perror( "select" );
return(-1);
}
/*能够读取到数据*/
else if ( FD_ISSET( fd, &rds ) )
{
ret = read( fd, &event, sizeof(struct input_event) );
time = event.time;
if(event.type == EV_SYN || event.type == 0 || event.type == 1 || event.type == 2 || event.code == 1 || event.code == 0)
continue;
if(event.type == 3){
if(event.code == 53)
x = event.value;
else if(event.code == 54)
y = event.value;
else if(event.code == 47)
id=event.value;
if(event.value == 0)
printf("*************\n");
}
if(x!=0 && y!=0){
printf(" press ID(%d) : (%d ,%d)\n",id+1,x, y);
x=0;y=0;
}
}
}
close( fd );
return(0);
}