1. 输入系统框架及调试
1.1 框架概述

APP 发起读操作,若无数据则休眠;
用户操作设备,硬件上产生中断;
输入系统驱动层对应的驱动程序处理中断:
读取到数据,转换为标准的输入事件,向核心层汇报。 所谓输入事件就是一个
input_event结构体。核心层可以决定把输入事件转发给上面哪个 handler 来处理:
从 handler 的名字来看,它就是用来处输入操作的。有多种 handler,比 如:evdev_handler、kbd_handler、joydev_handler 等等。
最常用的是 evdev_handler:它只是把 input_event 结构体保存在内核buffer 等,APP 来读取时就原原本本地返回。它支持多个 APP 同时访问输入设备,每个 APP 都可以获得同一份输入事件。
当 APP 正在等待数据时,evdev_handler 会把它唤醒,这样 APP 就可以返回数据。
APP 对输入事件的处理:
APP获得数据的方法有2种:直接访问设备节点( 比如
/dev/input/event0,1,2,...),或者通过tslib、libinput这类库来间接访问设备节点。这些库简化了对数据的处理。




