rk3568 android13 适配 红外遥控器

当前网上讲android 按键流程的文章,要么专注在android收到事件后的处理流程。
要么只讲解底层红外硬件解码原理,没有能将android层和linux层面联合讲解的透彻而简单易懂的。

对android的 Generic.kl和底层红外解码到内核驱动的转换对应关系部分含糊不清,使人看来一头雾水
对那些想要弄清楚整系统完整流程全貌的人来说,不禁要问这写的什么玩意。

本文目的:

通过适配一款红外遥控器,完全讲清楚 按键事件从硬件--》驱动-》Android的转换流程,

祭奠这苦逼的爆肝12个小时。

在Android系统中,按键事件的转换对齐主要有两次,

第1次,在驱动底层的 通过dts ,红外解码到 linux 按键的对应:

rk 平台获取解码红外按键后的值的方法是:

echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print

按遥控器向右按键:

读取到 RMC_GETDATA=3e ,3e 修改到上面的 dts中。

经过这个对齐,在红外控制驱动中,解码到红外按键值为3e 的时候,调用内标准接口

input_event、input_sync。

input_event(ddata->input, EV_KEY, ddata->keycode, 1);
input_sync(ddata->input);

向设备节

点/dev/input/event0 写入dts中对齐好的KEY_RIGHT事件,从底层驱动的角度,可以理解为是向上层上报事件。

第2次 是Android上层的input 应用程序服务 通过遍历监听/dev/input/ 下的文件,获取到驱动底层上报的按键事件后,通过二次对齐文件 Generic.kl ,

 find frameworks/ -name Generic.kl
frameworks/base/data/keyboards/Generic.kl

格式:key <SCAN_CODE> <ANDROID_KEYCODE> [FLAGS]

将linux 标准定义的事件

转换为按Android标准定义的按键事件:

然后分发给Android系统进行处理。

至于纯Android 层面的按键分发处理流程也比较绕,

但不是本文描述的目的了

2025年3月18日01:45:18

在此吐槽下某思的Android红外按键流程,还引入了一个用户态的ir_user 应用程序,码红外文章后,
再通过应用程序中转然后再次通过vinput 注入内核态,然后再上报给Android,真的非常低效而无用又过度设计

上效果视频:

AOSP 13 rk3568红外操作效果视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值