首页 > 其他 > 详细

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

时间:2014-10-11 09:57:56      阅读:3777      评论:0      收藏:0      [点我收藏+]

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

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

bubuko.com,布布扣

会映射到默认的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获得到了正确的值:

bubuko.com,布布扣

bubuko.com,布布扣

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


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

原文:http://blog.csdn.net/mjsornp/article/details/39988275

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!