码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-10-11 11:40:05      阅读:636      评论:0      收藏:0      [点我收藏+]

标签:kl文件

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

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的解决办法

标签:kl文件

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!