input子系统基础之按键2——input设备应用层编程实践
来源:互联网 发布:wings 知乎 编辑:程序博客网 时间:2024/06/08 05:07
以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。
一、input设备应用层编程实践1
1、确定设备文件名
(1)应用层操作驱动有2条路:/dev目录下的设备文件,/sys目录下的属性文件
(2)input子系统用的/dev目录下的设备文件,具体一般都是在 /dev/input/eventn
(3)用cat命令来确认某个设备文件名对应哪个具体设备。
- 实测的键盘是event1,而鼠标是event3。
2、标准接口打开并读取文件
3、解析struct input_event
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <linux/input.h>#include <string.h>#define DEVICE_KEY"/dev/input/event1"#define DEVICE_MOUSE"/dev/input/event3"int main(void){int fd = -1, ret = -1;struct input_event ev;// 第1步:打开设备文件fd = open(DEVICE_KEY, O_RDONLY);if (fd < 0){perror("open");return -1;}while (1){// 第2步:读取一个event事件包memset(&ev, 0, sizeof(struct input_event));ret = read(fd, &ev, sizeof(struct input_event));if (ret != sizeof(struct input_event)){perror("read");close(fd);return -1;}// 第3步:解析event包,才知道发生了什么样的输入事件printf("%s.\n", (unsigned char *)&ev);}// 第4步:关闭设备close(fd);return 0;}
二、input设备应用层编程实践2
1、解析键盘事件数据、鼠标事件数据
即更换设备文件,第三步换成下面代码,运行查看。
// 第3步:解析event包,才知道发生了什么样的输入事件printf("-------------------------\n");printf("type: %hd\n", ev.type);printf("code: %hd\n", ev.code);printf("value: %d\n", ev.value);printf("\n");
2、事件类型分析(type)
阅读全文
0 0
- input子系统基础之按键2——input设备应用层编程实践
- input子系统基础之按键5——按键驱动
- input子系统基础之按键4——输入核心层源码分析
- input子系统基础之按键1——什么是input子系统?
- input子系统基础之按键3——input子系统架构总览
- Linux input 子系统应用之按键驱动
- linux设备驱动(三)--应用input子系统实现按键驱动
- linux设备驱动之输入(input)子系统——核心层实现
- 完全解析input子系统设备模型之mini2440按键驱动程序
- 完全解析input子系统设备模型之mini2440按键驱动程序
- 完全解析input子系统设备模型之mini2440按键驱动程序
- 完全解析input子系统设备模型之mini2440按键驱动程序
- 完全解析input子系统设备模型之mini2440按键驱动程序
- Linux的input输入子系统:设备驱动之按键驱动
- Linux内核驱动之Input子系统设备驱动层
- Linux设备驱动工程师之路——input子系统
- Linux设备驱动之——input子系统
- Linux设备驱动之——input子系统
- [BZOJ1212]-[HNOI2004]L语言-trie+DP
- qt5.7.1+pcl1.8.0+win7 32位配置
- 并发编程之ThreadLocal类的理解(二)
- 文件句柄NSFileHandle
- CF#450 B.Position in Fraction
- input子系统基础之按键2——input设备应用层编程实践
- apache nginx 配置文件权限问题 403错误
- 持续集成遇到的问题总结
- 设计模式的艺术之道--备忘录模式
- AppBarLayout+CollapsingToolbarLayout+TabLayout+ViewPager 组合使用
- 微服务架构的理论基础
- LruCache
- 学生信息管理系统(wampserver+php+oracle+前端_环境搭建)
- nefu 1268 区间最小值求和(单调队列)