固件吧

 找回密码
 加入论坛

QQ登录

只需一步,快速开始

怎样赚取F币附件需要购买看这里新手论坛固件上传教程附件解压不了的解决方法
查看: 9792|回复: 5

[工具教程] RK3128机顶盒遥控器键值添加、修改教程

[复制链接]
发表于 2015-12-2 20:09:23 | 显示全部楼层 |阅读模式
RK3128平台android系统修改遥控器码值比全志A20、A31s稍微麻烦一些,其实本质是一样的。具体的修改方法如下:
             1,先弄清楚遥控器的状况,包括遥控器用户码、键值对应的码值。方法:adb shell,输入echo1 >/sys/module/rockchip_pwm_remotectl/parameters/code_print,
再输入,cat /proc/ksmg,也可以通过串口搞。
遥控器对着灯板按,会发现终端界面有反应,会出现类似下面的信息
e33d8d8b524bb0f09779782ddaf369be.jpg
其中USERCODE=0xff00是遥控器用户码,fa是按键对应的码值。
            2,就这样把遥控器按顺序按一遍,记录所有的键和对应的码值。
            3,进入kernel/arch/arm/boot/dts目录,找到rk3128-box-rk88.dts文件,键值就定义在这个里面,复制出来编辑。
            4,打开dts文件,找到下面这个方法
    82dac7aa788012efc713a05ef53717fe.jpg
其中usercode是遥控器用户码,在这个地方改成你的遥控器用户码如(0xff00)就行,或者在ir_key1{}代码块后面再加一个代码块ir_key2{},格式一样。
Key_table=下面就是码值和对应的键。其中,以上图为例第六个键,0xec是我们前面按遥控器键获取的遥控码值,KEY_MENU是我们为遥控器上面删除键定义的键值名称,KEY_MENU这个键必须在device/rockchip/rksdk目录下的映射的键值文件20050030_pwm.kl中有定义过才行,而且这个键一定要在KeyEvent.java中有定义才行。我们找到20050030_pwm.kl文件,打开,会发现里面定义的格式如下:
7da530ccf9752cb90514f1df574373d2.jpg
我们会发现,左边是数字,右边是定义的名称,dts中直接填KEY_MENU或139都行。
注意这里面删除键定义的是key 111  DEL,而dts里面是DELETE,不知为何,定义成一样不行。如果出现无论怎么改都不行,直接在dts文件中写111就行,这个是扫描码。
这些常用的键都是系统帮忙定义好的,如果遥控器上有要新增一个按键肿么办?
这时就要自定义键了。简单的办法是找几个系统里面已经定义过的键,而且系统又没有用到,而且这个键一定要在KeyEvent.java中有定义才行,在20050030_pwm.kl文件(不同平台这个kl文件可能不一样)中按格式定义,如#key99   SYSRQ,这个系统里面有定义,KeyEvent.java中有定义,但不知道是用来搞啥子的,而且又没用到,可以把它拿来功能定义成直播键,。
搞之前先看下系统和frameworks/base/core/java/android/view/KeyEvent.java里面有木有定义,查找Linux标准键值命令:在kernel目录下,输入,find . -name"*.h" |xargs grep -r "SYSRQ",如下图,说明系统有定义
63ceefbd6cb673aab55953312b587c3d.jpg
其中99是扫描码。关于3128遥控器系统定义的键可参考文档:3128红外遥控器键值参考文档
更简单的办法是只改个PhoneWindowManager.java文件,如Setting键在新遥控器上没有用到,可以把这个里面的功能直接替换成要添加的功能(如直播)。
复杂点的办法就是在系统中添加额外的键了,这个等有时间了专门写个文章叙述一下。
            5,对于有需求的按键,如遥控器上面一个直播键,在前面几步定义好后,需要在frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java这个类中interceptKeyBeforeDispatching(WindowState win, KeyEvent event, intpolicyFlags)这个方法中拦截,并执行相应功能(如进入直播)。


回复

使用道具 举报

发表于 2015-12-3 18:56:16 | 显示全部楼层
好东西,不知道好用不
回复 支持 反对

使用道具 举报

发表于 2016-1-1 14:18:53 | 显示全部楼层
你好!第3,“进入kernel/arch/arm/boot/dts目录,找到rk3128-box-rk88.dts文件”。 怎样进入这个目录,我用re管理器找不这个目录,在sys目录找到了kernel,但是这个目录下没找到arch目录了,谢谢朋友怎样办弄啊?是我哪儿没有对,我是一个初学者,不懂请别见笑,谢谢,非常感谢!
回复 支持 反对

使用道具 举报

发表于 2016-6-23 16:01:35 | 显示全部楼层
这个太高深,完全看不懂
回复 支持 反对

使用道具 举报

发表于 2016-6-23 16:37:55 | 显示全部楼层
好东西哦,路过
回复 支持 反对

使用道具 举报

发表于 2019-6-4 09:55:04 | 显示全部楼层
支持楼主,用户楼主,楼主英明呀!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入论坛

本版积分规则

QQ|小黑屋|固件吧移动版|固件吧论坛 ( 浙ICP备11055615号-1 )

鲁公网安备 37172502371702号

GMT+8, 2025-6-23 15:47 , Processed in 0.080378 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表