欢迎光临散文网 会员登陆 & 注册

linux 系统编程 input子系统

2022-09-17 20:18 作者:GXTon_阿通  | 我要投稿

input子系统就是针对于各种输入的一种框架.

框架可以认为是,一种实现方法,linux中有很多框架,很多子系统.
比如之前没有框架的时候,大家各写各的,随意定义函数.
后来有个人写的很好,得到认可,他写的就是模板,大家都模仿他,之后他写的代码就是框架了.

输入设备: 鼠标,键盘,触摸屏 ...
输入设备通用的特点就是,会向linux输入数据.
input子系统就是为了统一所有的交互设备而产生的.


它规定了输入设备接入linux,linux识别后会在哪个文件中产生节点.
它规定了操作输入设备的步骤.
它规定了输入的数据会填充到哪个结构体.

第一步: linux识别设备
操作目标之前,要知道设备在哪里.
基于input子系统注册成功的输入设备,都会在 /dev/input 目录下生成相应的设备节点(设备文件).设备节点名称通常为eventX(X为0.1.2.3...).通过读取这些设备节点,可以获取输入设备上报的数据.

第二步: 打开设备
打开/dev/input/event0 设备文件;
获取fd;

传入两个参数

第三步: 根据fd读设备

应用程序发起读操作(譬如调用 read),刷新结构体;
如果没有数据可读则会进入休眠(阻塞 I/O 情况下); 
当有数据可读时,应用程序会被唤醒,读操作获取到数据返回;

传入三个参数

第四步: 获取设备输入数据
应用程序从结构体中得到输入的数据。

获得数据(在in_ev结构体中)

如何获取数据:

每次read,都会刷新一下结构体.

struct input_event.

该结构体在<linux/input.h>中.

测试一个usb键盘程序.

1,首先是让系统识别到usb键盘
把键盘按到linux板子上.
板子终端就会打印出信息.(表示板子已经识别到usb键盘了)

可以查看ubs键盘对应的设备节点,
使用命令: cat /proc/bus/input/devices

现象:
运行程序 ./testApp /dev/input/event3


键盘的上下左右,分别是:103, 108 ,105, 106


linux 系统编程 input子系统的评论 (共 条)

分享到微博请遵守国家法律