驱动----输入子系统(input子系统)基本概念

输入子系统提出来的前提:

输入模型的建立:

输入子系统的层次关系:

应用层 + input event + input core + 硬件驱动

硬件驱动驱动工程师

硬件驱动部分:就是来操作具体的硬件部分。
USB 鼠标
蓝牙鼠标

input core:
就是输入类设备的核心部分,协调所有的工作。
就是所谓的驱动框架部分。

input event

就是负责向应用层上报事件  event事件 (填充一个event事件) ,给应用层


应用层 :解析一个event事件,并且做出相应的响应



第三点:如何确定输入类型设备所对应的硬件,例如:串口 鼠标 按键 键盘 等等等

第一步:应用层操作驱动有2条路:/dev目录下的设备文件,/sys目录下的属性文件

第二步:cat event0   动不同硬件,看效果(例如:动动鼠标 ,动动键盘等等)

注意:当你读硬件设备的时候,如果没有数据的时候。这个时候就处于一种阻塞式的。


第四点:

解析struct input_event

     所有关于输入类型的设备相关相应(比如:按键被按下  按键松开 那个按键按下 等等)都在这个文件中

        //用来管理所有的输入性设备 上报事件的结构体
struct input_event {
struct timeval time; //事件点  输入类事件发送的时间
__u16 type;//表示 输入类事件的类型(哪一种输入性设备输入的) 比如:鼠标 键盘 触摸屏
__u16 code;//编码  这个事件的编码值是多少 (例如:例如按键类事件,按下一个按键,编码会对应一个编码值)
__s32 value;//表示 操作值 按下  还是 抬起了
};
/*
举例说明这个结构体: 比如你在键盘上按下了A这个键盘
struct input_event
1.struct timeval time 表示时间
2.type                表示事件的类型  键盘
3.code  表示键盘上A的值
4.value               表示按下还是松开
例如:触摸屏 如果按下的是触摸屏
1.struct timeval time 表示时间
2.type                表示事件的类型  触摸屏
3.code  表示按下或者松开
4.value               表示坐标

*/

总结:

分析方法:分析 按键类事件和鼠标类事件,解释方法、
总结一些:
无论是驱动还是应用都应该按照 input.h这个文件中
定义的规范。
应用程序:需要按照这个解析来应用
驱动程序:需要搞清楚是怎么上报的。-----不是职业做的,不清楚的。
//include/linux/input.h------------
无论是应用程序,还是驱动程序都需要按照/include/linux/input,h来解析 和 编写相应的输入子系统。 这是内核专门提供好的。















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值