1.优秀文档
android输入系统官方文档:http://source.android.com/devices/input/index.html 中文官方文档
《深入理解Android 卷III》第五章 深入理解Android输入系统: http://blog.csdn.net/innost/article/details/47660387 主要讲EventHub
图解Android - Android GUI 系统 (5) - Android的Event Input System: http://www.cnblogs.com/samchen2009/p/3368158.html 关注里面的Dispatcher处理流程
2.输入系统可以分为读取、分发、处理三大流程
(1)读取:
a.要支持多设备,如GPIO键盘,红外遥控器、USB键盘鼠标、触摸屏灯
b.即插即用,可以随时插入和拔出。
c.支持多语言映射,同一键盘同一按键,code在不同语言的情况下映射成不同的值。
(2)分发:
a.分辨
对于按键,区分是SystemKey(控制音量、电源),还是GlobalKey(做特殊处理),还是UserKey(发给App去处理)。
对于触摸屏,有VirtualKey和手势。
b.发送
找出当前App,然后发送给它。
(3)处理:
a.App等收到事件后做处理。
3.输入子系统的总体流程与参与者
Reader线程和Dispatcher线程与App之间的通信使用的就是socketpair来实现的。