触摸屏的事件
#include <stdio.h>//printf
#include <linux/input.h>//struct input_event
#include <sys/types.h>//open
#include <sys/stat.h>//open
#include <fcntl.h>//open
#include <unistd.h>//read
#include <stdlib.h>
#include <sys/mman.h>
#include<linux/fb.h>
打开触摸屏
#define EV_KEY 0x01
#define EV_ABS 0x03
#define BTN_TOUCH 0x14a
int fd_ev0;
/* 打开触控屏(open) */
int openTouchScreen(void)
{
struct fb_var_screeninfo screen_info;
fd_ev0 = open("/dev/input/event0", O_RDWR);
if(fd_ev0 == -1)
{
printf("open touch screenfail!\n");
return -1;
}
return 0;
}
获取触摸事件
/* 读取触控屏的信息到结构体中,返回坐标 */
int readTouchScreenEvent(int *x, int *y)
{
int ret;
struct input_event ev;
while(1)
{
//读取触控屏事件
ret = read(fd_ev0,&ev,sizeof(ev));
if(ret != sizeof(ev))
{
perror("read ev error\n");
break ;
}
if(ev.type == EV_ABS && ev.code ==ABS_X)
{
*x = ev.value ;
}
if(ev.type == EV_ABS && ev.code ==ABS_Y)
{
*y = ev.value ;
}
if(ev.type == EV_KEY && ev.code==BTN_TOUCH && ev.value == 0)
{
//按键弹起,表示本次按键结束
break;
}
}
return 0;
}
关闭触摸屏
/* 关闭触控屏 */
int closeTouchScreen(void)
{
close(fd_ev0);
return 0;
}