Android 系统对加载键盘布局文件(Generic.kl ).
在 开发板的文件目录 /system/usr/idc 中有一系列的 *.idc 框架层会根据驱动中的配置,自动生成设备的idc 文件。
例如在 EventHub.cpp 中的 loadConfigurationLocked 方法中,会获取设备的idc 文件。如果没有获取到idc 文件,那么会采用默认的Generic.kl .
在EventHub.cpp 中的 openDeviceLocked方法中会 loadConfigurationLocked,一般而言根据,/dev/input 中的event0,envent1等。会多次调用 openDeviceLocked
如果找到 idc 文件,根据idc 文件获得对应的kl文件和kcm 文件的名称。
添加步骤
添加新的物理按键 DECT_REGISTER, DECT_PHONE
1.kl文件添加按键码映射,251,252 是 驱动上报上来的键值
key 251 DECT_REGISTER
key 252 DECT_PHONE
2.frameworks/base/include/androidfw/KeycodeLabels.h
对KEYCODES,添加按键码
static const KeycodeLabel KEYCODES[] = {
...
{ "DECT_REGISTER",220},
{ "DECT_PHONE",221},
3.frameworks/base/core/res/res/values/attr.xml
<enum name="KEYCODE_DECT_REGISTER" value="220"/>