该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

作者:武汉华嵌嵌入式培训中心 讲师 李家凯

对于输入类设备如键盘、鼠标、触摸屏之类的Linux驱动,内核提供input子系统,使得这类设备的处理变得非常便捷。总体上来讲,input子系统由三部分组成: 事件驱动input核心设备驱动。

其中事件驱动负责与用户程序打交道,诸如设备节点/dev之类的,都由他负责,我们在写驱动时就不用实现这个了;设备驱动负责与硬件设备打交道,这里的交互很简单,只需要读取相关硬件的数据,然后抛给input核心就可以了;

举个例子,以按键key为例,定义了设备设备号、按键值,配置管脚和中断方式,然后申请中断。在中断服务函数中,读取对应管脚值,用input_report函数发送给input核心,并用input_sync通知发送结束即可。另外,在模块初始化时,定义一个input_dev的结构体,这个input_dev是input子系统设备驱动端的核心数据结构,由于输入设备多种多样,就是通过这个结构体告诉核心你的输入设备类型。

其中的两个重要成员,这些宏具体在linux/input.h中定义。

一个是,evbit,代表事件类型的指示位,常用的如

EV_SYN 0x00 同步事件

EV_KEY 0x01 按键事件

EV_REL 0x02 相对坐标

EV_ABS 0x03 绝对坐标

EV_MSC 0x04 其它

EV_LED 0x11 LED

EV_SND 0x12 声音

EV_REP 0x14 Repeat

EV_FF 0x15 力反馈

EV_PWR 电源

EV_FF_STATUS 状态

另一个是keybit,代表键值代码

其他的还有

relbit 相对定位

absbit 绝对定位

mscbit Mouse Systems Corporation,大意是一些厂商使用了5字节的串口鼠标协议,但微软使用了一种三字节协议,于是厂商造串口鼠标时,让设备有两种工作模式,一种是MSC模式,一种是微软的模式

ledbit 键盘指示灯事件的指示位

sndbit 键盘发出声音的指示位

ffbit force feedback,强制反馈设备

swbit switch,设备切换时产生的事件

下面就分别给出驱动代码和测试程序,以供参考。

更多:www.embedhq.org/html/jsbw/2013/1121/3569.html

linux 设备驱动 百度,Linux设备驱动之input子系统相关推荐

  1. Linux 环境下载百度Linux 环境下载百度云资源,Firefox插件(百度网盘助手)

    Linux 环境下载百度云资源,Firefox插件(百度网盘助手) https://blog.csdn.net/a499957739/article/details/79593286 转载上面链接的, ...

  2. arm linux ping 通百度,linux ---之与ARM开发板相互ping 通

    本实验是采用网线直连的方式,用网线把arm开发板与PC机的网线连接起来 在虚拟机上设置网络连接方式,选择桥接,直接连到物理网络 然后进入超级用户(root)使用su 指令,输入密码即可 查看自己的网卡 ...

  3. Linux input子系统上报事件讲解(以重力传感器lis2dw12驱动为例)

    input子系统背景 以前我们写一些输入设备(键盘.鼠标等)的驱动都是采用字符设备.混杂设备处理的.问题由此而来,Linux内核为了能够处理各种不同类型的输入设备,(比如 触摸屏 ,鼠标 , 键盘 , ...

  4. 【Linux驱动】input子系统与按键驱动

    input子系统架构总览 在网上能找到一些关于input子系统架构相关的示意图,大体表达的意思都差不多. linux输入子系统(linux input subsystem)从上到下由三层实现,分别为: ...

  5. 三个子系统_「正点原子Linux连载」第五十八章Linux INPUT子系统实验(一)

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南> 关注官方微信号公众号,获取更多资料:正点原子 第五十八章Linux INPUT子系统实 ...

  6. Linux Input子系统

    1. Input子系统 按键.鼠标.键盘.触摸屏等都属于输入(input)设备,Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件.输入设备本质上还是字符设备,只是在此基础上套 ...

  7. linux用户空间flash驱动,全面掌握Linux驱动框架——字符设备驱动、I2C驱动、总线设备驱动、NAND FLASH驱动...

    原标题:全面掌握Linux驱动框架--字符设备驱动.I2C驱动.总线设备驱动.NAND FLASH驱动 字符设备驱动 哈~ 这几天都在发图,通过这种方式,我们希望能帮大家梳理学过的知识,全局的掌握Li ...

  8. linux i2c核心,总线与设备驱动,Linux2.6.37 I2C驱动框架分析(一)

    最近工作中又使用到了I2C,所以借S3C2440开发板GT2440为硬件平台温习一遍I2C驱动体系. linux内核中IIC驱动的体系框架 linux内核中IIC部分驱动代码位于:/drivers/i ...

  9. linux字符设备驱动架构,linux驱动开发--字符设备:cdd_cdev结构中private_data使用

    private_data改进 为设备驱动支持多个设备个体做准备,针对private_data进行改进 在设备打开操作中通过inode中保存的i_cdev获取代表当前设备的cdev对象 通过代表当前设备 ...

最新文章

  1. 转:Python 代码调试技巧
  2. Java 8新特性——default方法(defenece方法)介绍
  3. django之ORM介绍与基本用法(一)
  4. SAP Spartacus如何禁止某些标准的css样式
  5. 字符串题目 1 --------判断两个字符串是否为旋转词
  6. php 随机几率,php实现根据概率配置随机抽奖
  7. Sendmail在企业网中的应用
  8. Java 2017.11.20 杨浩宁作业
  9. 链上合约(On-chain) 和 链下合约(Off-chain) 是什么 区别
  10. 让Latex支持中文
  11. Linux下C语言编程风格和规范
  12. 千寻位置48小时“复活”伽利略卫星定位系统
  13. LOOP AT SCREEN ABAP
  14. Android 视频 美颜SDK对比
  15. java 当前类相对路径_JAVA文件中获取该项目的相对路径方法
  16. Ubuntu 打开摄像头
  17. Shell进阶(三) 交互式脚本 函数 数组 分片 字符串处理
  18. 华为SNS交换机(OEM博科FC交换机)configupload无法使用ftp协议处理方法
  19. Python Tricks : Function Argument Unpacking
  20. MACD指标精粹讲解

热门文章

  1. 【UAV】气压计 SPL06
  2. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第5章-不确定系统的分析与综合
  3. 9.5 程序示例--推荐系统-机器学习笔记-斯坦福吴恩达教授
  4. [工具]再更新音乐下载软件,MP3音乐无损音乐下载器
  5. Linux 下 SVN 添加多个文件的方法
  6. nginx lua 小项目:根据 user_agent 显示不同的页面,附带和 php 性能的对比
  7. [BZOJ4403]序列统计
  8. 位操作:BitVector32结构 z
  9. 第三十八讲:tapestry Ajax 关联下拉选框(select)组件
  10. Firefox XUL