Android 按键映射 驱动

本文介绍了Android系统的按键映射机制,包括如何在Linux内核层面修改按键码值,以及这些码值如何映射到Android应用层的标准keycode。通过调整映射表可以实现自定义按键功能。

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

Android 按键映射有一套标准的流程,平时不用我们去写,主要有的方案会更改按键的码值。(或者有的方案增加自己的设备,比如我遇到的TV方案,这里就写下更改码值后怎么处理,中间简要说明Android的按键流程。

首先,我们拿到客户给我们的按键码值,需要加到Linux ko驱动中,这个需要驱动工程师,或者底层工程师来处理。因为Linux定义了一套标准的码值表,256个,添加更改完成之后,生成ir ko文件,Linux和Android的ir接通也按照标准的流程,这里我就不解析Android读取按键时间的步骤了,同学们搜索Android中的keycode就能知道Android定义了一套标准的按键keycode,并且,Android根据Linux传上来的码值做了标准的对应,我们不用怎么关心,如果我们想自己更改不同码值对应的功能,这里Android在device中给了一个映射表,如果我们更改了这里的映射表,就能把原本码值对应Android原本的keycode,改变成我们想要的功能。163405_OFUV_2009657.png 

第二l列的数值就是Linux根据遥控器驱动真正的码值往上层传递的,第三列是Android层标准的keycode定义,如果我们这里不重新写映射,那就是默认系统自己读取Linux下传给Android的按键定义,如果我们在这里重新映射下,比如上图现在Linux中码值为9的key对应Android的8,在界面上显示出来的就是8,如果我把第二列的89换个位置那么如果我按下9建,那么在界面上显示的为7,这样的话大家就明白了。

补充下:有时候看懂了会忘记

185803_MDpL_2009657.png

这部分是遥控驱动中定义的值,左侧是真实按键的码值,即每个按键都有一个物理码值。右侧是kernel中标准的按键值;根据android的标准按键流程,

190202_eJCp_2009657.png这里在keyevent.java中对应的按键解析,即android层显示的按键码值。

转载于:https://my.oschina.net/snail0/blog/650871

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值