Android 输入设备子系统架构

本文详细介绍了Android系统中输入设备,如摇控器、键盘的处理流程。从Linux内核驱动层接收原始事件,到Android Framework层的EventHub转换为Android Input Event。讲解了配置文件的作用,如.kl和.kcm文件,并提到了调试工具getevent。还分享了一则关于蓝牙遥控器OK键问题的实战案例。
摘要由CSDN通过智能技术生成

发表于我的博客网站(prajna.top): http://prajna.top/doc/4/124  欢迎大家前去交流。

 

 Android TV开发过程中,主要的输入设备是摇控器(IR),键盘(keypad),以及一些USBHID输入设备,本文主要讲讲这块的工作流程,使用的是AN5版本。
 

流程

首先,Linux kernel 驱动层得到硬件设备按键的原始扫描码,触摸,移动等各种事件信息,按键码会被转化为Linux 标准的KEY (uapi/linux/input.h)。最终,kernel会把设备的事件转换成一个标准的Linux Input Event (linux/input.h) ,抛给上面的系统。

 

接下来, Andorid Framework 层的 EventHub (native/services/inputflinger) 通过读取 /dev/input/ 目录下的设备文件,得到kernel层抛出来的 Linux Input Event,把它转化成 Android Input Event。这个转换过程,系统需要查找一些配置文件,大概有这么几类:

  • .kl 文件: Key Layout ,TV方案最常见就是这类文件,主要是KEY的映射。

  • .kcm文件: Key Character ,用于 Virtual Keyboard,把几个Android的组合键,变成一个输出键,比如,输入 shift + a,则输出大写的 A

  • .idc: Input Device Configuration ,基本上不需要,标准的输入设备,像HID键盘,鼠标等,系统会自动识别。

 

搜索路径一般是 /data/usr 和 /system/usr,其中 /data 和 /system 是读取的系统属性,

    /sytem = getenv("ANDROID_ROOT")
    /data = getenv("ANDROID_DATA") 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值