• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Linux设备模型之input子系统详解

Linux设备模型之input子系统详解

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了linux input子系统,linux input,linux input event,linux input命令,linux sort命令详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Linux设备模型之input子系统详解


本节从整体上讲解了输入子系统的框架结构。有助于读者从整体上认识linux的输入子系统。在陷入代码分析的过程中,通过本节的知识能够找准方向,明白原理。

本节重点:


  • 输入子系统的框架结构
  • 各层对应内核中的文件位置
  • 输入子系统的事件处理机制
  • 输入子系统的驱动层基本操作流程
  • 输入子系统的驱动层常用函数


本节难点:

  • 输入子系统的事件处理机制
  • 输入子系统的驱动工作流程


1 初识linux输入子系统

linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler)、输入子系统核心层(InputCore)和输入子系统设备驱动层。

对于输入子系统设备驱动层而言,主要实现对硬件设备的读写访问,中断设置,并把硬件产生的事件转换为核心层定义的规范提交给事件处理层。

对于核心层而言,为设备驱动层提供了规范和接口。设备驱动层只要关心如何驱动硬件并获得硬件数据(例如按下的按键数据),然后调用核心层提供的接口,核心层会自动把数据提交给事件处理层。

对于事件处理层而言,则是用户编程的接口(设备节点),并处理驱动层提交的数据处理。

对于linux输入子系统的框架结构如下图1所示:


图1 linux输入子系统框架结构

由上图所展现的内容就是linux输入子系统的分层结构。

/dev/input目录下显示的是已经注册在内核中的设备编程接口,用户通过open这些设备文件来打开不同的输入设备进行硬件操作。

事件处理层为不同硬件类型提供了用户访问及处理接口。例如当我们打开设备/dev/input/mice时,会调用到事件处理层的Mouse Handler来处理输入事件,这也使得设备驱动层无需关心设备文件的操作,因为Mouse Handler已经有了对应事件处理的方法。

输入子系统由内核代码drivers/input/input.c构成,它的存在屏蔽了用户到设备驱动的交互细节,为设备驱动层和事件处理层提供了相互通信的统一界面。

下图2简单描述了linux输入子系统的事件处理机制:


图2 linux输入子系统事件处理机制

由上图可知输入子系统核心层提供的支持以及如何上报事件到input event drivers。

作为输入设备的驱动开发者,需要做以下几步:

?在驱动加载模块中,设置你的input设备支持的事件类型,类型参见表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_MAX 0x1f事件类型最大个数和提供位掩码支持

由表1可知,设备所能表示的事件种类,一个设备可以选择一个或多个事件类型上报给输入子系统。

Linux输入子系统提供了设备驱动层上报输入事件的函数,在includ

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Linux设备模型之input子系统详解

相关文章

  • 2017-05-26JRebel for Android 1.0发布!,jrebelandroid
  • 2017-05-26仿拉手团购App8-- 更多模块,拉手团购app8--模块
  • 2017-05-26Android面试准备 第一天 第2-4例
  • 2017-05-26java.lang.IllegalArgumentException: Illegal character in query at index 261,
  • 2017-05-26android:Activity启动模式之singleInstance
  • 2017-05-26Android handler 详解(面试百分之100问到),androidhandler
  • 2017-05-26Ionic2/angularJs2中的静态类 PhotoLibrary 调用不上,ionic2angularjs2
  • 2017-05-228.2.1 Bitmap(位图)全解析 Part 1
  • 2017-05-26安卓---Toast工具类,有点懒,安卓---toast工具类
  • 2017-05-26Android项目:手机安全卫士(16)—— 复杂 ListView浅析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android细笔记--ContentProvider,--contentprovider
    • Android开发笔记(8)——调用子Activity,androidactivity
    • OpenDigg安卓开源项目月报201704,opendigg安卓201704
    • Android MVP 设计模式,androidmvp
    • 【读书笔记】【Android 开发艺术探索】第3章 View 的事件体系
    • Android 系统常用的权限,android权限
    • Android触摸事件分发机制完全解析《一》
    • Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知),android.qq5.0
    • [Android]Android布局优化之<include />,androidinclude
    • Android中使用ViewPager实现屏幕页面切换和页面轮播效果,androidviewpager

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有