本文是一篇很长~很长~很长~~~的技术笔记
如果有什么问题,欢迎指正.
Zero 前言
前边儿已经说过,要想了解鼠标就要研究三个东西
- 鼠标的挂载/卸载
- 鼠标事件处理,也就是鼠标操作
- 鼠标绘制
不论是鼠标挂载/卸载还是鼠标操作,基本上算是对输入事件的一个监听了,属于一类东西
但是鼠标绘制,这涉及到surface绘制鼠标,对于我本人,基本上没接触过那么多绘制的东西,一点点尝试分析.
鼠标事件本身又包括什么?
- 事件监听
- 事件处理
接下来实现一个阶段性的小目标,就先愉快的分析一下鼠标事件的监听吧.
ok,怎么分析?
从宏观角度出发,千万别一头扎进某个小片段里.
先整体看下整个流程,再来特殊分析.
鼠标也属于输入设备对吧,那鼠标是不是遵循针对输入设备的处理逻辑?
你总不至于给每一种输入设备都配置一套独特的逻辑吧?那岂不是太冗余了.
逻辑是一套,只不过在处理时需要区分一下type而已.
所以呢,本文就来分析手机是如何监听输入事件InputEvent的?
One IMS
这个有时候也需要一些基础和经验.
源码中管理输入的服务是什么?IMS(InputManagerService)
那就从InputManager.h(目录位于/frameworks/native/services/inputflinger/)出发
为啥我先看头文件?
第一,头文件一般会有注释说明,交代整个文件作用,便于代码理解
第二,头文件可以直接看出代码结构structure.一眼就可以知道有哪些方法,哪些filed
果然没让我失望,这个文件里的注释完全表明了framework层所做的工作.