MTK 平台Android系统遥控器映射关系
在我们工作中,经常要去适配遥控器的工作,但是大部时候我们是移植其他工程上的代码来修改,可能对Android系统中的按键关系有些不清楚,下面以MTK平台为例,介绍下Android系统中按键映射关系(以应用层的KEYCODE_POWER键为例)。
我们先从上往下看
第一、应用的按键值。
第一, 在应用上我们按遥控器Power按键,会抛出26,这个按键值的定义在(/framework/base/core/android/view/KeyEvent.java)文件中,如下:
public static final int KEYCODE_POWER = 26; (向应用层的抛上的键值就是26)
第二、应用层与Android系统映射关系
应用上的这个按键值会与Android系统中的键值相对应起来,
对应关系在(/framework/native/include/input/KeycodelLables.h)文件中
如下:
static const KeycodeLabel KEYCODES[] = {
{"SOFT_LEFT", 1 },
{"SOFT_RIGHT", 2 },
{"HOME", 3 },
{"BACK", 4 },
{"CALL", 5 },
{"ENDCALL", 6 },
{ "0",7 },
{ "1",8 },
{ "2",9 },
{ "3",10 },
{ "4",11 },
{ "5",12 },
{ "6",13 },
{ "7",14 },
{ "8",15 },
{ "9",16 },
{"STAR", 17 },
{"POUND", 18 },
{"DPAD_UP", 19 },
{"DPAD_DOWN", 20 },
{"DPAD_LEFT", 21 },
{"DPAD_RIGHT", 22 },
{"DPAD_CENTER", 23 },
{"VOLUME_UP", 24 },
{"VOLUME_DOWN", 25 },
{ "POWER", 26 },(POWER是android系统定义的宏,26表示应用层上的键值)
..........
};
同时系统里面有个遥控器资源文件(/framework/base/core/res/res/values/attrs.xml),这个文件里面按键关系跟上面的KeycodelLables.h文件关系是一致的。
如下:
……………………………………………………
…………………………………………………………………………
………………………………………………………………
……………………………………………………………………………………
第三步、Android系统按键跟Linux内核中键值的映射关系
涉及到文件(framework/base/data/keyboards/Vendor_000b_Product_000b.kl)