ANDROID中按键的添加配置(linux按键到android处理)

Linux kernel中input子系统会负责从硬件获取按键值根据按键的用户码来分类处理(当时IR的时候),linuxkernel已经定义好了一些按键枚举,input中需要将这些枚举和按键的键值对应。
Kernel/include/linux/input.h 可以看到按键的枚举定义
hexdump/dev/input/event0 可以看到按键数据

Android 与 Linux分隔线
Android也定义了一套码,叫作键盘码,通过一个/system/usr/keylayout/来将两套码对应起来
例如:rkxx-remotectl.kl
定义了linux 键值和android键码的对应关系,如下:
【ANDROID中按键的添加配置(linux按键到android处理)】key 28ENTER
key 116POWERWAKE
key 158BACK
key 139MENU
key 217SEARCH
key 232DPAD_CENTER
key 108DPAD_DOWN
key 103DPAD_UP
key 102HOME
key 105DPAD_LEFT
key 106DPAD_RIGHT
key 115VOLUME_UP
key 114VOLUME_DOWN
key 143NOTIFICATIONWAKE
key 113VOLUME_MUTE

数值就是linux上报的按键值,后面的按键名称是android定义的。
在framework/native/include/input/KeycodeLabels.h中可以查到
KeycodeLabels.h是android的keycode和keyname的对应表
在keyevents.java中有每个按键常量的定义,按键常量的值和KeycodeLabels.h中的keycode是对应的。
例如:KEYCODE_POWER值是 26,在KeycodeLabels.h中26对应的keyname是”POWER”,在rkxx-remotectl.kl中POWER对应的是linux的keyvalue 116,在Kernel/include/linux/input.h中116对应的是KEY_POWER这个枚举。

Keyevent.javaKeycodeLabels.hrkxx-remotectl.klKernel/include/linux/input.h
KEYCODE_POWER26POWER116 =KEY_POWER


转载请注明出处!

    推荐阅读