RT,编译高通M8660 ics运行后 menu, search , back 都正常,只有HOME键出问题。
查找之后发现EventHub.cpp中打印的event->keyCode =122 与 KeycodeLabels.h 中 home值 = 3 不同,
其他三个键值都是对的。
请问各位大侠这个是什么问题?event->keyCode匹配是在哪个地方?
代码:
EventHub.cpp getEvent():
                        if (iev.type == EV_KEY && device->keyMap.haveKeyLayout()) {
                            status_t err = device->keyMap.keyLayoutMap->mapKey(iev.code,
                                        &event->keyCode, &event->flags);
                            LOGW("iev.code=%d keyCode=%d flags=0x%08x err=%d\n",
                                    iev.code, event->keyCode, event->flags, err);
                        }
KeycodeLabels.h 定义:
static const KeycodeLabel KEYCODES[] = {
    { "SOFT_LEFT", 1 },
    { "SOFT_RIGHT", 2 },
    { "HOME", 3 },
    { "BACK", 4 },
    { "CALL", 5 },
    { "ENDCALL", 6 },

解决方案 »

  1.   

    是ics 4.0 通过属性系统获取键值表出错。
      

  2.   

    最近移植Android 4.0.3的时候也发现了这个问题,MENU,BACK,SEARCH可以用,就是HOME有问题。
    最后发现问题是系统加载按键映射文件不对导致的,系统会默认加载system/usr/keylayout下的Generic.kl映射文件,这个与我们实际的不符合。
    解决方法是添加自己的kl文件到keylayout目录下,注意文件的名字要与你在按键驱动中注册的输入设备名字一致。
      

  3.   

    我最近也遇到了同样的问题,event->keyCode =122 ,这个键值从哪个属性文件中得来的?我的HomeKey是虚拟按键。
      

  4.   

    kernel发上来的键值,需要重新map一下才能和上面的对应上啊。
    呵呵,基础的移植知识哦这里有个貌似是韩国人整理的移植文档,新入android的同学们可以看看的
    http://www.kandroid.org/online-pdk/guide/index.html