Linux_10th_input子系统

linux中input子系统的编程模型:

  1. 命令行界面的输入类设备应用接口

  2. GUI界面

  3. struct input_event

struct input_event {

struct timeval time;

__u16 type;

__u16 code;

__s32 value;

};

通过该结构体将输入类设备的类别、特征等相关信息记录下来。


为什么需要input子系统?

各种不同的输入类设备有各自不同的特征、对应不同的寄存器操作、不同的硬件操作方法,需要一套机制来将这些设备管理起来,方便我们调用。


input子系统分为四个部分:应用层 + input event + input core + 硬件驱动


那么,input子系统如何工作呢,如何去判断发生了什么输入类设备呢?


例如,当按下鼠标按键时,会触发一个硬件中断事件,进入中断服务函数,读取寄存器得知是哪个硬件发生了动作,如得知是鼠标的左键被按下了,将该事件记录下来后会上报给input core层,进行一系列处理后上报到input event层,input event层把这些事件的相关信息封装成一个input_event结构体,之后通过应用层接口上报给应用层,应用层通过read系统调用把input_event结构体的内容读取出来,应用层通过去解析input_event结构体,得知到底发生了什么输入类事件。


如通过time得知是什么时候发生的输入类事件,通过type得知是一个鼠标输入而不是键盘输入,通过code得知是鼠标的左键,通过value得知是左键被按下而不是被松开。


应用层就会知道是几时几分几秒鼠标的左键被按下了,这时再去做这种情况下要实现的功能。


事件驱动型GUI框架(如QT、VC)的底层支撑就是input子系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值