移植kl文件,却调用到默认的Generic.kl的解决办法

从之前一个机种向现在要开发的机种移植遥控按键,发现总是有部份的功能键无作用。执行

dumpsys input
查看当前的按键的kl, 发现KeyLayoutFile居然是默认的Generic.kl,而不是我希望映射的Vendor_xxxx_Product_xxxx.kl这类的文件。


会映射到默认的Generic.kl通常是因为driver中的verdor/product/version没有指定对,我检查kernel driver中的dev->driver_name等配置也没有问题。另一方面,从dump出的Identifier也可以印证我的driver配置是正确的。

于是只好在InputDevice.cpp的getInputDeviceConfigurationFilePathByDeviceIdentifier()函数中加log,发现获取的vendor/product/versin都是正确的,load到的kl文件也没有问题。但是在log的下一行,却发现有KeyLayoutMap的错误:

[20:34:57]E/KeyLayoutMap( 1437): /system/usr/keylayout/Vendor_xxxx_Product_0001.kl:88:Expected key code label, got 'VIRGIN'.


猛然醒悟,我还没有在KeycodeLabels.h 等文件中移植添加“VIRGIN”等按键。于是我先把我的Vendor_xxxx_Product_0001.kl这个文件中的“VIRGIN”之类的键先注释掉。再编译,dumpsys input,果然KeyLayoutFile获得到了正确的值:



看来android会对kl中设定的按键与KeycodeLabels.h中的定做一个KeyLayoutMap的动作,而一旦没有map成功,KeyLayoutFile就会使用默认的Generic.kl文件。 这个KeyLayoutMap的机制是我之前不知道的。看来接下来,需要仔细分析下这个机制了~~~


  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

回头看踏雪

为美好生活编码,一起加油吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值