Linux驱动开发、17-输入子系统浅析

本文深入探讨Linux输入子系统,包括概念、好处、架构图和设备驱动程序。讲解了键盘、鼠标、指点杆、触摸板的驱动程序设计,并介绍了如何使用Evdev接口。此外,还涉及中断处理、输入事件驱动程序的注册与上报,以及调试工具evbug的使用。文章通过平台总线测试展示了按键输入事件驱动程序的设计和实现。
摘要由CSDN通过智能技术生成

输入子系统

1、概念:内核对分散的,多种不同类别的输入设备进行统一处理的驱动程序。

2、输入子系统的好处:

a) 统一物理形态各异的相似的输入设备的处理功能

b) 提供了用于分发输入报告给用户应用程序的简单事件(event)接口。驱动程序不必创建、管理/dev节点以及相关的访问方法,因此它能方便地被调用输入API以发送鼠标移动,键盘按键或者触摸事件给用户空间

c) 抽取了输入驱动程序的通用部分,简化驱动程序并引入一致性

 

3、输入子系统架构图

 

图解:

设备驱动层:将底层的硬件输入转化成统一事件形式,向输入核心汇报

输入核心层:为设备驱动层提供输入设备注册与操作接口

事件驱动层:主要作用是和用户空间层进行数据交互

 

4、输入设备驱动程序: /driver/input 目录下

a) serio:该层提供了访问老式输入硬件的库例程。为了与serio提供服务的硬件通讯,如发送命令给PS/2鼠标,需要用到:

serio_register_driver():向serio注册规定的回调例程

serio_register_port():注册open/close/write/stop/start入口函数

 

 

b) 键盘(EV_KEY/0X01:键盘驱动程序的独特之处在于它传送数据给另外一个内核子系统(TTY层),而不是通过 /dev目录下的节点传送给用户空间。驱动文件在/dev/char目录下

 

可以通过以下命令查看矩阵键盘的扫描码:showkey -s 或者 showkey

 

根据加载的键盘映射,键盘事件驱动程序进行键值翻译(查看loadkeys的操作帮助和/lib/kbd/keymaps中提供的映射文件)

 

 

c) 鼠标:鼠标输入事件驱动称为 mousedev, 通过/dev/input/mice报告鼠标事件给用户

 

d) 指点杆(EV_REL/0X02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值