移植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获得到了正确的值:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWpzb3JucA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
看来android会对kl中设定的按键与KeycodeLabels.h中的定做一个KeyLayoutMap的动作,而一旦没有map成功。KeyLayoutFile就会使用默认的Generic.kl文件。
这个KeyLayoutMap的机制是我之前不知道的。看来接下来,须要细致分析下这个机制了~~~
版权声明:本文博主原创文章,博客,未经同意不得转载。
最新文章
- shiro权限管理框架与springmvc整合
- BZOJ 2815: [ZJOI2012]灾难
- [转]Unicode utf8等编码类型的原理
- Selenium3.0 自动化测试
- [BZOJ2876][NOI2012]骑行川藏(拉格朗日乘数法)
- linux下编译qt5.6.0静态库——configure配置
- Memcache学习php完整一例
- java 文件读取大全
- C#代码开发规范
- Python可以做什么?
- PHP自动分表程序
- POJ_3143 验证“歌德巴赫猜想”
- 设计模式(一): abstract factory抽象工厂模式 -- 创建型模式
- 第31讲 UI组件之 Gallery画廊控件
- Java中构造方法的执行顺序
- 从MongoDB的ObjectId中获取时间信息
- python高阶函数式编程
- 【转载】Excel 三维地图入门
- 破损的键盘 (Broken Keyboard)--又名悲剧文本(线性表)
- linux环境中如何删除文件的前n行?
热门文章
- 通过Type.InvokeMethod实现方法的重载
- HDU 1535 Invitation Cards (POJ 1511)
- ps中图层混合模式、多图层叠加、不透明度、填充、图层样式详解
- [Android学习笔记]使用getIdentifier()获取资源Id
- POJ 3076 Sudoku (dancing links)
- Java-WebSocket 项目的研究(三) WebSocketClient 类 具体解释
- 理解 Python 中的线程
- python之enumerate()函数的探究
- OCP读书笔记(11) - 使用闪回技术II
- Just learn how to use the JNI