linux创建网站,机票网站手机版建设,wordpress 搜索框 位置,物流网站哪个好以下内容源于朱有鹏嵌入式课程的学习与整理#xff0c;如有侵权请告知删除。 一、编程步骤总结 步骤1#xff1a;确定设备文件名字 步骤2#xff1a;使用标准接口打开与读取设备文件 步骤3#xff1a;解析struct input_event 二、编程步骤分析 1、确定设备文件名 应用层操作…以下内容源于朱有鹏嵌入式课程的学习与整理如有侵权请告知删除。 一、编程步骤总结 步骤1确定设备文件名字 步骤2使用标准接口打开与读取设备文件 步骤3解析struct input_event 二、编程步骤分析 1、确定设备文件名 应用层操作驱动有2条路/dev目录下的设备文件/sys目录下的属性文件。input子系统用的是/dev目录下的设备文件具体一般都是在 /dev/input/event* 。 我们可以用cat命令来确认某个设备文件名对应哪个具体设备。比如我们在开发板“ cat /dev/input/event* ”这里的*用具体的数字填充进去然后晃动鼠标或者在键盘上敲打字如果有反应就表示该设备文件对应着鼠标或者键盘。 这里实测得知键盘是event1而鼠标是event3。 2、使用标准接口操作设备文件 即使用open、read/write函数操作设备文件。 3、解析input_event结构体变量 解析input_event结构体变量即读取该结构体变量成员的信息可得知输入事件信息。 事件类型定义在x210_kernel\include\linux\input.h文件中内容如下 /** Event types*/#define EV_SYN 0x00
#define EV_KEY 0x01
#define EV_REL 0x02
#define EV_ABS 0x03
#define EV_MSC 0x04
#define EV_SW 0x05
#define EV_LED 0x11
#define EV_SND 0x12
#define EV_REP 0x14
#define EV_FF 0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX1) 三、代码与测试 1、代码示例 1键盘事件 #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/event3int 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;
} 2鼠标事件在上面代码中将设备文件换成鼠标对应的设备文件第3步换成下面代码。 // 第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、测试