- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中的文件位置 输入子系统的事件处理机制
中的文件位置 输入子系统的事件处理机制
linux input 输入子系统分析《一》 :初识 input 输入子系统
转自: /ielife/article/details/7798952 主
要讲述本人在学习 Linux 内核 input 子系统的全部过程, 如有 分析不当,多谢指正。以下交流方式,文章欢迎转载,保留
联系信息,以便交流。
邮箱:
邮箱:
eabi010@
主页:博客:/ielife
主页:
博客:
/ielife
(爱嵌论坛——嵌入式技术学习交流)
开发环境
主 机:ubuntu10.04
主 机:
ubuntu10.04
开发板:mini2440
开发板:
mini2440
内 核:linux-编译器:arm-linux-gcc
内 核:
linux-
编译器:
arm-linux-gcc ( 3.4.5)
linux 输入子系统
本节从整体上讲解了输入子系统的框架结构。有助于读者从 整体上认识 linux 的输入子系统。在陷入代码分析的过程中, 通过本节的知识能够找准方向,明白原理。
本节重点:
输入子系统的框架结构各层对应内核
输入子系统的框架结构
各层对应内核
输入子系统的驱动层基本操作流程输入子系统的
输入子系统的驱动层基本操作流程
输入子系统的
驱动层常用函数
本节难点:
输入子系统的事件处理机制输入子系
输入子系统的事件处理机制
输入子系
统的驱动工作流程
2.1 初识 linux 输入子系统
linux 输入子系统( linux input subsystem )从上到下由三层实 现,分别为:输入子系统事件处理层( EventHandler )、输入 子系统核心层( InputCore )和输入子系统设备驱动层。
对于输入子系统设备驱动层而言,主要实现对硬件设备的读 的规范提交给事件处理层。
写访问,中断设置,并把硬件产生的事件转换为核心层定义
写访问,
中断设置,并把硬件产生的事件转换为核心层定义
对于核心层而言,为设备驱动层提供了规范和接口。设备驱 动层只要关心如何驱动硬件并获得硬件数据(例如按下的按 键数据),然后调用核心层提供的接口,核心层会自动把数 据提交给事件处理层。
对于事件处理层而言,则是用户编程的接口(设备节点)
并处理驱动层提交的数据处理。
对于 linux 输入子系统的框架结构如下图 1 所示:图 1 linux
输入子系统框架结构
由上图所展现的内容就是 linux 输入子系统的分层结构。
/dev/input 目录下显示的是已经注册在内核中的设备编程接 口,用户通过 open 这些设备文件来打开不同的输入设备进行 硬件操作。
事件处理层为不同硬件类型提供了用户访问及处理接口。例 如当我们打开设备 /dev/input/mice 时,会调用到事件处理层
的 Mouse Handler 来处理输入事件,这也使得设备驱动层无 事件处理的方法。
需关心设备文件的操作,因为Mouse Handler
需关心设备文件的操作,因为
Mouse Handler 已经有了对应
输入子系统由内核代码 drivers/input/input.c 构成,它的存在 屏蔽了用户到设备驱动的交互细节,为设备驱动层和事件处 理层提供了相互通信的统一界面。
图 2 简单描述了 linux 输入子系统的事件处理机制:图 2 linux 输入子系统事件处理机制 由上图可知输入子系统核心层提供的支持以及如何上报事 件到 input event drivers 。
作为输入设备的驱动开发者,需要做以下几步:
在驱动加载模块中,设置你的 input 设备支持的
事件类型,类型参见表 1 设置
注册中断处理函数,例如键盘设备需要编写按
键的抬起、放下,触摸屏设备需要编写按下、抬起、绝对移 动,鼠标设备需要编写单击、抬起、相对移动,并且需要在 必要的时候提交硬件数据(键值 /坐标 /状态等等)
将输入设备注册到输入子系统中
表 1
表 1 Linux
输入子系统支持的数据类型
EV_SYN
0x00
同步事件
EV_KEY
0x01
按键事件
EV_REL
0x02
相对坐标 (如:鼠标移动,报告相对
最后一次位置的偏移 )
EV_ABS
0x03
绝对坐标 (如:触摸屏或操作杆,报
告绝对的坐标位置 )
EV_MSC
0x04
其它
EV_SW
0x05
开关
EV_LED
0x11
按键 /设备灯
EV_SND
0x12
声音 /警报
EV_REP
0x14
重复
EV_FF
0x15
力反馈
EV_PWR 0x16 电源
EV_FF_STATUS 0x17 力反馈状态
EV_MAX0x1f
EV_MAX
0x1f 事件类型最大个数和提
文档评论(0)