输入输出是用户和产品交互的手段,因此输入驱动开发在Linux驱动开发中很常见。同时,input子系统的分层架构思想在Linux驱动设计中极具代表性和先进性,因此对Linux input子系统进行深入分析很有意义。
一、input子系统知识点
完整的input子系统分析包括以下几方面:
1) 软件层次
2) 输入子系统分层(input_handler,input_core, input_device)
3) 输入设备(TS)驱动开发
4) evdev handler分析
5) input设备模型视图(sysfs)和运行映象(procfs)
6) tslib分析
7) 应用框架的事件处理分析
笔者一向主张学习嵌入式应尽可能培养具备分析Linux软件架构的大局观。本文将从需求的角度去分析Linux输入所涉及的应用和内核层的相关模块所承担的角色和完成的功能,让开发人员能够对Linux驱动的所涉及的整个软件层次有清晰的认识。其他知识点将在后文进行阐述,敬请关注。
二、软件层次分析
Linux输入所涉及的软件层次如下图:
基于Linux内核的应用框架常见于Android和QT。由于Android4.2对触屏驱动的支持发生过重大的变化(将tslib完成的任务抛给驱动层来完成),所以我们以较为简单的QT框架来说明Linux输入的调用过程。假设有以下基于QT的通讯录应用场景,我们重点分析查询这个button控件的输入响应过程。