Linux输入子系统即通常所说的键盘、鼠标、触摸等功能实现部分。Linux输入系统已经实现了字符设备驱动的文件操作接口函数,使得实现键盘、鼠标、触摸屏等字符设备驱动功能变得非常简单,调试也比较方便,然而如果要做到灵活应用,还得深入分析Linux输入子系统是如何实现的。对这部分源码反复阅读,还有利于对c语言编程中类、继承、抽象等感念的理解(别以为c中没有类,c++中类的概念在c中照应能实现),有利于对数据结构组织的理解,比如链表操作等。
Linux输入子系统包括三个层次,有上到下别是事件处理层(Event Handler)、核心层(Input Core)
和驱动层(Input Driver)。
1.事件处理层负责与用户程序打交道,将硬件驱动层传来的事件报告给用户程序。
2.核心层是链接其他两个层之间的纽带与桥梁,向下提供驱动层的接口,向上提供事件处理层的接口。
3.驱动层负责操作具体的硬件设备,这层的代码是针对具体的驱动程序的,键盘、鼠标、触摸屏等字符设备驱动功能的实现工作主要在这层。
结构框图如下图:
在Input子系统三层框架中对应3个结构体。
1.结构体input_dev表示底层硬件设备,是所有输入设备的抽象。
2.handle是手柄的意思,结构体input_handle表示连接杆,连接底层硬件和上层事件处理层。
3.结构体input_handler表示事件处理器,是对事件处理的抽象。
注:基于linux-kernel2.6.32
参考:linux内核input子系统解析.
linux输入子系统分析一.http://blog.chinaunix.net/uid-26620753-id-3132688.html
阅读(3691) | 评论(1) | 转发(0) |