Android9 rk3528适配红外遥控 - 实践

目录

一、底层驱动

二、上层的映射

三、验证

一、底层驱动
1、在编译的dts中加入以下:
#include "rk-stb-ir-keymap.dtsi"
&pwm3 {
compatible = "rockchip,remotectl-pwm";
pinctrl-names = "default";
pinctrl-0 = ;
remote_pwm_id = ;
handle_cpu_id = ;
remote_support_psci = ;
status = "okay";
以下节点是对键值的修改,可对照附件rk-stb-ir-keymap.dtsi查看
ir_key8 {
rockchip,usercode = ;
rockchip,key_table =
, //M
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
;

在以上代码中,rockchip,usercode = <0xdd22>; 这里的0xdd22是遥控器厂商需要提供的用户码

keytable中第一列的数值是遥控器的红外键值

第二列对应的则是驱动底层对键值的定义,路径位于

kernel/include/dt-bindings/input/rk-input.h
二、上层的映射

RK平台的frameworks层与底层驱动对键值相对应的定义一般位于以下路径:

frameworks/base/data/keyboards/Generic.kl

也可以以其同级目录下的,以pid,vid命名的kl文件,作修改。

Generic.kl该文件位于设备的以下路径:

/system/usr/keylayout/Generic.kl

frameworks层对键值定义的文件位于

frameworks/base/core/java/android/view/KeyEvent.java
三、验证

确认设备的键值是否有映射正确,例如,以下是音量加,音量减

130|console:/ # logcat | grep keycode
09-23 10:41:42.655   340   402 D WindowManager: interceptKeyTq keycode=24 interactive=true keyguardActive=false policyFlags=22000000
09-23 10:41:42.757   340   402 D WindowManager: interceptKeyTq keycode=24 interactive=true keyguardActive=false policyFlags=22000000
09-23 10:41:46.684   340   402 D WindowManager: interceptKeyTq keycode=25 interactive=true keyguardActive=false policyFlags=22000000
09-23 10:41:46.787   340   402 D WindowManager: interceptKeyTq keycode=25 interactive=true keyguardActive=false policyFlags=22000000

posted @ 2025-10-23 21:28  yjbjingcha  阅读(0)  评论(0)    收藏  举报