linuxinput输入子系统分析《一》:初识input输入子系统.docxVIP

linuxinput输入子系统分析《一》:初识input输入子系统.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

大宝&小宝 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档