IMS:EventHub设备底层上报Input事件对象处理

IMS:EventHub设备底层上报Input事件对象处理

android11-release
IMS:EventHub 设备添加和InputDevice转化
IMS:InputReader线程获取输入事件
IMS:InputDispatcher线程分发事件
Android 知识体系


input_event 封装成 RawEvent

IMS:InputReader线程获取输入事件 将 input_event 信息封装成 RawEvent ,而IMS:EventHub 设备添加和InputDevice转化 这里除了新增外部设备时InputDevice转化,还有getEvents读取事件input_event 并封装成 RawEvent

external\kernel-headers\original\uapi\linux\input.h
frameworks\native\services\inputflinger\reader\include\EventHub.h
frameworks\native\services\inputflinger\reader\EventHub.cpp

在这里插入图片描述在这里插入图片描述
InputReader::loopOnce() -> mEventHub->getEvents
在这里插入图片描述

添加NotifyArgs对象

InputReader::loopOnce() -> InputReader::processEventsLocked -> InputReader::processEventsForDeviceLocked -> device->process

frameworks\native\services\inputflinger\reader\InputDevice.cpp

在这里插入图片描述
这里InputMapper就是IMS:EventHub 设备添加和InputDevice转化新增设备(不只是外界,手机默认的物理按键和触摸屏幕也是设备)时添加对应的各种InputMapper:常见有物理按键KeyboardInputMapper、触摸点击SingleTouchInputMapper、MultiTouchInputMapper(都是继承TouchInputMapper)
在这里插入图片描述
mapper.process(rawEvent)这里就是各种事件InputMapper处理,如KeyboardInputMapper,最终添加NotifyKeyArgs
device->process -> mapper.process(rawEvent) -> KeyboardInputMapper::processKey -> getListener()->notifyKey(&args) -> QueuedInputListener::notifyKey

frameworks\native\services\inputflinger\reader\mapper\KeyboardInputMapper.cpp
frameworks\native\services\inputflinger\InputListener.cpp

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

notify通知InputDispatcher分发

frameworks\native\services\inputflinger\reader\InputReader.cpp
frameworks\native\services\inputflinger\InputListener.cpp
frameworks\native\services\inputflinger\dispatcher\InputDispatcher.cpp

loopOnce() -> mQueuedListener->flush() -> args->notify(mInnerListener) -> InputDispatcher::notify***
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

剩下整体流程可查看IMS:InputReader线程获取输入事件IMS:InputDispatcher线程分发事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xhBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值