阅读:6588回复:1

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

楼主#
更多 发布于:2019-07-24 19:25
从之前一个机种向现在要开发的机种移植遥控按键,发现总是有部份的功能键无作用。执行

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

图片:1.png



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

图片:2.png



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

最新喜欢:

PazivalPaziva... zhaoyf13zhaoyf...
If you have nothing to lose, then you can do anything.
沙发#
发布于:2019-07-25 09:34
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
游客

返回顶部