一个用户空间读取输入事件的例子
来源:互联网 发布:sql servercheck 编辑:程序博客网 时间:2024/06/06 07:51
armlinux设备驱
这是一个读取触摸屏触摸事件的例子
实验程序:
#include<sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
#include <unistd.h>
#include <linux/input.h>
#include <stdlib.h>
#include <string.h>
int fd;
struct input_event event;
void input_handler(int signum)
{
}
main()
{
}
上图是在等待触摸屏按下。
这些信息是如何产生的:
看触摸屏驱动程序中当触摸屏按下时有如下事件报告函数:
#defineEV_SYN
#defineEV_ABS
code:
#defineABS_X
#defineABS_Y
#defineABS_PRESSURE
#defineSYN_REPORT
value:
分别是x坐标值300,y坐标值239,按下事件值1,同步事件值0。
还有就是事件发生时的时间值,秒,毫秒。
还有一个键盘事件的值没有打印出来一开始我也很纳闷儿,仔细一检查才发现驱动程序有bug。
在驱动源程序中有这样一句代码:
dev->keybit[BITS_TO_LONGS(BTN_TOUCH)] =BIT(BTN_TOUCH);
将其更改如下:
dev->keybit[BITS_TO_LONGS(BTN_TOUCH)] |=BIT_MASK(BTN_TOUCH);
BTN_TOUCH的定义是:
#defineBTN_TOUCH
上面两个宏的定义在文件linux/bitops.h中
#defineBIT(nr)
#define BIT_MASK(nr)
现在该明白问题在哪儿了吧,^_^
当然这个代码不是linux内核源码,这是天嵌科技提供的驱动代码。
- 一个用户空间读取输入事件的例子
- 一个用户空间读取输入事件的例子
- Java 小例子:读取控制台的用户输入
- Java 小例子:读取控制台的用户输入
- Java 小例子:读取控制台的用户输入
- java小例子:读取控制台用户输入数据
- Java中读取控制台的用户输入
- angular2用户输入的一些事件
- Shell读取用户输入
- shell 读取用户输入
- Shell读取用户输入
- 一个日期输入的JSTL例子
- strut2输入校验框架的一个例子
- 使用PBDOM读取XML的一个例子
- 一个xmlhttp读取xml的例子
- 使用PBDOM读取XML的一个例子
- 一个javascript读取ACCEE数据库的例子
- 使用PBDOM读取XML的一个例子
- Linux 2.6.19.x 内核编译配置选项…
- Linux 2.6.19.x 内核编译配置选项…
- 触摸屏驱动分析之S3C2440_ts.c
- 触摸屏驱动分析之S3C2440_ts.c
- 一个用户空间读取输入事件的例子
- 一个用户空间读取输入事件的例子
- 输入事件的传递过程
- 输入事件的传递过程
- 输入子系统设备模型分析
- 输入子系统设备模型分析
- USB驱动程序之描述符
- USB驱动程序之描述符
- 一般的,在s3c2440中,要想进行dma…
- 一般的,在s3c2440中,要想进行dma…