Android红外遥控器调制kl(KeyLayoutFile)文件的映射等知识点
一、红外遥控器kernel dts 配置大致如下。
ir_remote_controller{
compatible ="biada,ir-int";
gpio-irq = <&gpio8 0 IRQ_TYPE_EDGE_FALLING>;
status = "okay";
ir_key2{
rockchip,usercode = <0x08f7>;
rockchip,key_table =
<0xeb KEY_POWER>,
<0xec KEY_MENU>,
<0xfe KEY_BACK>,
<0xb7 KEY_HOME>,
<0xa3 KEY_ENTER>,
<0xf4 KEY_VOLUMEUP>,
<0xa7 KEY_VOLUMEDOWN>,
<0xf8 KEY_REPLY>,
<0xfc KEY_UP>,
<0xfd KEY_DOWN>,
<0xf1 KEY_LEFT>,
<0xe5 KEY_RIGHT>,
<0xb7 KEY_SEARCH>,
<0xc1 KEY_PLAY>,
<0xc0 KEY_PLAYCD>,
<0xc2 KEY_STOP>,
<0xf3 KEY_MUTE>,
<0xbe KEY_1>,
<0xba KEY_2>,
<0xb2 KEY_3>,
<0xbd KEY_4>,
<0xf9 KEY_5>,
<0xb1 KEY_6>,
<0xfc KEY_7>,
<0xf8 KEY_8>,
<0xb0 KEY_9>,
<0xb6 KEY_0>,
<0xb5 KEY_BACKSPACE>;
};
};
二、input 按键系统驱动注册
三、adb shell cat /proc/bus/input/devices 查看input设备,看一下是否已经注册上。
四、adb shell dumpsys input 提供输入组件(例如触摸屏或内置键盘)的系统数据,查看对于的上层kl文件。
五、从上图可以看出,如果没有指定的KeyLayoutFile,就会使用默认的Generic.kl文件。
六、给ir_remote_controller指定一个kl文件,很简单,copy一份现有的kl命名为ir_remote_controller.kl然后放到 system/usr/keylayout/ ,系统自动查找。
六、查找kl文件的工作在\frameworks\native\services\inputflinger\EventHub.cpp
七,查看log。
八,kl文件大致如下。
九、kl文件前面一排是底层上报上来的按键值,可通过getevent查看上层收到的按键值。
十、kl文件最后一排是android映射之后的值,具体在frameworks\native\include\android\keycodes.h 、rameworks\native\include\input\InputEventLabels.h里面定义。
十一、红外遥控器大致就是上面一个流程,测试ok,可以work。