0
点赞
收藏
分享

微信扫一扫

Android输入事件之InputReader 处理事件

醉倾城1 2022-01-13 阅读 52

原始输入事件处理
流程图

在这里插入图片描述
InputDevice
InputDevice相对于EventHub的Device多了一个InputMapper列表。

 在这里插入图片描述

 

void InputReader::addDeviceLocked(nsecs_t when, int32_t deviceId){
    //1 从EventHub 中获取厂商信息与设备类别
    //2 通过createDeviceLocked()函数创建InputDeveice
    InputDevice* device = createDeviceLocked(deviceId, identifier, class);
    //3 使用InputRead中保存的策略配置信息对新建的InputDeveice进行策略配置,并通过reset()进行设备重置
    deveice->configure(when, &mConfig, 0);
    deivece-> reset(when);
    //4 将设备放入mDeviecs字典中
    mDevices.add(deviceId,device);
}

mConfig的类型是InputReaderConfiguration,来自InputReaderPolicy的配置信息使得IMS以及应用程序得以在一定程度上影响输入事件的处理过程。

在这里插入图片描述
keyboard类型事件的加工处理
在Android中扫描码到虚拟按键值的映射便是由KeyboardInputMapper完成的。

 

touch事件
多条原始输入事件描述一次点击事件,把多次原始输入事件的信息整合后,交给InputDispatch而进行分发。

TouchInputMapper的体系

在这里插入图片描述

 

举报

相关推荐

0 条评论