移植kl档,但调用默认Generic.kl解决的方法

移植kl档,但调用默认Generic.kl解决的方法

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

从飞机到现在移植模型来开发遥控器按键,调查发现,大部分的功能键始终没有任何效果。

dumpsys input

要查看当前的关键kl, 查找KeyLayoutFile它原来是默认Generic.kl,而不是我希望映射的Vendor_xxxx_Product_xxxx.kl这类的文件。

移植kl档,但调用默认Generic.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获得到了正确的值:

移植kl档,但调用默认Generic.kl解决的方法

移植kl档,但调用默认Generic.kl解决的方法

看来android会对kl中设定的按键与KeycodeLabels.h中的定做一个KeyLayoutMap的动作,而一旦没有map成功。KeyLayoutFile就会使用默认的Generic.kl文件。

这个KeyLayoutMap的机制是我之前不知道的。看来接下来,须要细致分析下这个机制了~~~


版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116767.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • osip和mysql_osip2/eXosip2调试笔记

    osip和mysql_osip2/eXosip2调试笔记软件版本:libosip2-3.3.0.tar.gzlibeXosip2-3.3.0.tar.gz./configure–prefix=/opt/sip/target–disable-staticmakemakeinstall测试代码:代码来源:http://blog.csdn.net/bat603/archive/2006/11/15/1386277.aspx1、UAS…

    2022年6月24日
    28
  • ❄️全网最详细的Python入门基础教程,Python最全教程(非常详细,整理而来)

    ❄️全网最详细的Python入门基础教程,Python最全教程(非常详细,整理而来)最近想要学习Python,所以就在网上整理了好多整理而来超级详细的Python入门教程

    2022年6月10日
    36
  • pycharm上传代码到gitlab_可以在gitlab里查看代码

    pycharm上传代码到gitlab_可以在gitlab里查看代码1.Pycharm关联Git安装路径(1)确定自己已经安装git,并且知晓git安装目录,我这里git安装在D盘目录下。(2)打开pycharm—->File——>Settings【点击Test后,出现弹框5,点击OK,此时Pycharm已关联git路径成功。】2.pycharm从gitlab上拉取代码(1)依次点击下图中…

    2022年8月28日
    0
  • sql报错未明确定义列_人的基本定义

    sql报错未明确定义列_人的基本定义当数据库根据字段名无法确定具体哪一列时,就会报未明确定义列的错误。如表中有相同的字段,然后要查询此表的重复的某一字段就会报未明确定义列的错误。有时候,一个sql语句没错,但根据sql语句执行的子表查询,就很有可能报错。selectt1.*fromt1;上例中的“sql语句”,可能会有重复的字段,sql语句没错,但像上例它作为子表查询的时候就会报未明确定义列的错误selectt.*from(selectt1.a,t1.afromt1)t…

    2022年10月5日
    0
  • 个人web服务器搭建教程_服务器是干嘛的

    个人web服务器搭建教程_服务器是干嘛的网上资料加自己整理========================一、Apache的配置(已经掌握)  Apache的核心配置文件是“Httpd.conf”,它在电脑中的位置为Apache的安装路径/Conf/,如果安装在C盘的根目录下,则该文件应该在“C:/Apache/Conf/”中,此外,打开Windows的“开始菜单”→“程序”→“ApacheHTTPServ

    2022年8月31日
    2
  • 学习Spark的入门教程——《Spark大数据实例开发教程》

    学习Spark的入门教程——《Spark大数据实例开发教程》去年年底出的一本学习Spark大数据的教程,文笔上言简意赅,只讲最常用的内容,很适合入门学习。是面向Spark开发者的一本实用参考书,结合实例全面系统的介绍了Spark工具的开发与使用。全书包括五章内容,第一章介绍Spark生态圈以及SparkRDD的编程模型等内容;第二章介绍SparkRDD实战案例与解析,包含Spark应用程序的部署、Spark的各种应用案例与解析、…

    2022年5月2日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号