什么是输入系统
常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户可以通过这些输入设备与Linux 系统进行数据交换。
问题来了?
输入设备种类繁多,能否统一它们的接口?既在驱动层面统一,也在应用程序层面统一?可以的。
Linux系统为了统一管理这些输入设备,实现了一套能兼容所有输入设备的框架:输入系统。驱动开发人员基于这套框架开发出程序,应用开发人员就可以使用统一的API去使用设备。
输入系统框架及调试
了解内核中输入子系统的框架,了解数据流程,有助于解决开发过程中碰到的硬件问题、驱动问题。输入系统框架如下图所示:

假设用户程序直接访问 /dev/input/event0 设备节点,或者使用 tslib 访问设备节点,其数据流程如下:
-
APP 发起读操作,如无数据则休眠。
-
用户操作设备,硬件上产生中断。
-
输入系统驱动层对应的驱动程序处理中断;
- 读取到数据,转换为标准的输入时间,向核心层汇报。
- 所谓输入时间就是一个
struct input_event结构体。
-
核心层可以决定把输入时间转发给上面哪个
handler来处理。- 从
handler的名字来看,它就是用来处理输入操作的。有多种handler,比如:evdev_handler、kbd_handler、joydev_handler
- 从
Linux输入系统详解

最低0.47元/天 解锁文章
1898

被折叠的 条评论
为什么被折叠?



