android Input架构

本文深入探讨了Android系统的事件输入机制,重点介绍了EventHub的作用及其如何处理来自不同设备类型的输入事件,如键盘、触摸屏等。同时,文章还分析了键盘事件的处理流程,包括从读取键盘映射文件到生成KeyEvent的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件的传入是从EventHub开始的,EventHub是事件的抽象结构,维护着系统设备的运行情况,设备类型包括Keyboard、TouchScreen、TraceBall。它在系统启动的时候会通过open_device方法将系统提供的输入设备都增加到这个抽象结构中,并维护一个所有输入设备的文件描述符,如果输入设备是键盘的话还会读取/system/usr/keylayout/目录下对应键盘设备的映射文件,另外getEvent方法是对EventHub中的设备文件描述符使用poll操作等侍驱动层事件的发生,如果发生的事件是键盘事件,则调用Map函数按照映射文件转换成相应的键值并将扫描码和键码返回给KeyInputQueue,详见Android中Key Event流程

input调试工具:getevent 源代码:system/core/toolbox/getevent.c

框架:


详细结构:


源代码路径:frameworks/base/libs/ui/EventHub.cpp


参考:

Android 中input event的分析

Android 4.0 事件输入(Event Input)系统

Android Input系统之触摸屏

Android 【真机】与【模拟器】触摸屏事件的模拟差异分析

应用层的代码分析:

Android FrameWork——Touch事件派发过程详解


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值