【RK3288 Android10 T8pro usb hid-multitouch idc配置】

【RK3288 Android10 T8pro usb hid-multitouch idc配置】

文章目录

  • 【RK3288 Android10 T8pro usb hid-multitouch idc配置】
  • 背景
  • 代码分析
    • 1. 读取配置文件
    • 2. 标志内外置屏幕
    • 3. 设置输入设备
    • 4. findviewport()
    • 5. 根据对应的viewport来计算相应的mapping的参数
  • 结论

背景

T8pro Android10,使用usb接口的hid-multitouch触摸,发现触摸映射区域异常,后来增加了idc文件,指定映射到主屏后正常。本文档主要分析一下idc文件的作用。

代码分析

1. 读取配置文件

这里会读取配置文件,及我们自己添加的触摸的idc(inputdeviceconfiguration),如果有这个idc配置文件,就回去读取device.internal这个属性,如果是1,则表示是内置,isExternalDeviceLocked返回0.

如果没有配置文件,就会返回总线类型是否是usb(0003)或者蓝牙。可以从下面的日志中看到我们的usb hid-multitouch是usb总线的。所以返回1,表示是内置。

在这里插入图片描述

05-15 14:04:26.766   387   478 E EventHub: liangji add device 1: /dev/input/event2
05-15 14:04:26.766   387   478 E EventHub: liangji   bus:        0003
05-15 14:04:26.766   387   478 E EventHub: liangji  name:       "USBest Technology SiS HID Touch Controller"
05-15 14:04:26.766   387   478 E EventHub: liangji  location:   "usb-ff500000.usb-1.4/input0"
05-15 14:04:26.766   387   478 E EventHub: liangji  unique id:  ""
05-15 14:04:26.767   387   478 E EventHub: liangji  descriptor: "bc7b0abb0520bb52c8097b668a54d31978583d09"
...
05-15 14:04:26.770   387   478 E EventHub: liangji New device: id=1, fd=127, path='/dev/input/event2', name='USBest Technology SiS HID Touch Controller', classes=0x80000014, configuration='/system/usr/idc/Vendor_0457_Product_f817.idc', keyLayout='', keyCharacterMap='', builtinKeyboard=false,

2. 标志内外置屏幕

根据isExternalDeviceLocked()的返回,这里会|=上外置的标志,
在这里插入图片描述

INPUT_DEVICE_CLASS_EXTERNAL			= 0X80000000

3. 设置输入设备

这里会用上面2中的标志位来进行判断是否是内置还是外置,然后设置到对应的inputdevice中去
在这里插入图片描述

4. findviewport()

TouchInputMapper::configure()中最终执行映射的是在TouchInputMapper::configuresurface中(),里面会调用findviewport(),根据是external还是internal来获取对应的DisplayViewport

在这里插入图片描述

这里我们可以看到如果外置视窗如果获取失败了,就默认新建一个内置视窗,所以T8使用usb触摸+单屏+无idc配置也能正常触摸。
在这里插入图片描述

5. 根据对应的viewport来计算相应的mapping的参数

下图是出错时的现象,由于没有设置idc,导致isExternalDeviceLocked返回1,默认usb总线是外置设备。然后findviewport获取到的实际上是虚线部分,并且physicalTOP的坐标符号不正确,导致后来计算出奇怪的映射范围
在这里插入图片描述

####这里是有添加idc文件,指定内置设备的时候获取的内置视窗数值,如上图实线所示
05-15 11:19:30.973   384   475 E InputReader: liangji ----------------------------------------
05-15 11:19:30.973   384   475 E InputReader: liangji mViewport.logicalBottom = 800, mViewport.logicalTop = 0
05-15 11:19:30.973   384   475 E InputReader: liangji mViewport.logicalRight = 1280, mViewport.logicalLeft = 005-15 11:19:30.973   384   475 E InputReader: liangji mViewport.physicalBottom = 800,  mViewport.physicalTop = 0
05-15 11:19:30.973   384   475 E InputReader: liangji mViewport.physicalRight = 1280, mViewport.physicalLeft = 005-15 11:19:30.973   384   475 E InputReader: liangji mViewport.deviceHeight = 800, mViewport.deviceWidth = 128005-15 11:19:30.973   384   475 E InputReader: liangji naturalLogicalWidth = 1280, naturalLogicalHeight = 800
05-15 11:19:30.973   384   475 E InputReader: liangji naturalPhysicalWidth = 1280, naturalPhysicalHeight = 800
05-15 11:19:30.973   384   475 E InputReader: liangji naturalPhysicalLeft = 0, naturalPhysicalTop = 0
05-15 11:19:30.973   384   475 E InputReader: liangji naturalDeviceWidth = 1280, naturalDeviceHeight = 800
05-15 11:19:30.973   384   475 E InputReader: liangji ----------------------------------------
05-15 11:19:30.973   384   475 E InputReader: liangji Device reconfigured: id=1, name='USBest Technology SiS HID Touch Controller', size 1280x800, orientation 0, mode 1, display id 0####这里是未添加idc文件,或者是idc里面指定外置的时候,获取的外置视窗数值,如上图虚线所示
05-15 11:28:31.334   387   477 E InputReader: liangji ----------------------------------------
05-15 11:28:31.334   387   477 E InputReader: liangji mViewport.logicalBottom = 800, mViewport.logicalTop = 0
05-15 11:28:31.334   387   477 E InputReader: liangji mViewport.logicalRight = 1280, mViewport.logicalLeft = 005-15 11:28:31.334   387   477 E InputReader: liangji mViewport.physicalBottom = 1297,  mViewport.physicalTop = 622
05-15 11:28:31.335   387   477 E InputReader: liangji mViewport.physicalRight = 1080, mViewport.physicalLeft = 005-15 11:28:31.335   387   477 E InputReader: liangji mViewport.deviceHeight = 1920, mViewport.deviceWidth = 108005-15 11:28:31.335   387   477 E InputReader: liangji naturalLogicalWidth = 800, naturalLogicalHeight = 1280
05-15 11:28:31.335   387   477 E InputReader: liangji naturalPhysicalWidth = 675, naturalPhysicalHeight = 1080
05-15 11:28:31.335   387   477 E InputReader: liangji naturalPhysicalLeft = 623, naturalPhysicalTop = 0
05-15 11:28:31.335   387   477 E InputReader: liangji naturalDeviceWidth = 1920, naturalDeviceHeight = 1080
05-15 11:28:31.335   387   477 E InputReader: liangji ----------------------------------------
05-15 11:28:31.335   387   477 E InputReader: liangji Device reconfigured: id=1, name='USBest Technology SiS HID Touch Controller', size 2275x1280, orientation 1, mode 1, display id 0
05-15 11:28:31.335   387   477 E EventHub: liangji EventHub::getDeviceLocked deviceId = 1, index = 1

结论

触摸
如果不是使用usb总线,即便是双屏也无需配置idc
如果是usb总线触摸,双屏显示时必须配置idc,且idc内部必须指定devic.internal=1;单屏可以不配置idc。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二十三篇:未来数据库革新:AI与云原生的融合之旅

未来数据库革新:AI与云原生的融合之旅 1. 智能数据库管理:AI的魔法 在数字化时代,数据库技术作为信息管理的核心,正经历着前所未有的变革。AI(人工智能)和云原生技术的融合,正在重新定义数据库…

关于k8s集群的污点和容忍,以及k8s集群的故障排查思路

一 污点(Taint) 和 容忍(Tolerations) (一)污点 在Kubernetes(K8s)中,污点(Taints)是一个重要的概念,用于实现Pod的调度控制。以下是关于污点的详细解释:1.污点定义 污点…

元宇宙vr科普馆场景制作引领行业潮流

在这个数字化高速发展的时代,北京3D元宇宙场景在线制作以其独特的优势,成为了行业内的创新引领者。它能够快速完成空间设计,根据您的个性化需求,轻松设置布局、灯光、音效以及互动元素等,为您打造出一个更加真实、丰富…

【算法】位运算算法——判断字符是否唯一

题解:判断字符是否唯一(位运算算法) 目录 1.题目2.题解3.位图参考代码4.细节5.总结 1.题目 题目链接:LINK 2.题解 题解有两种方法, 一是做一个哈希数组,去查重; 二是直接用一个变量每一位来对应表示是否有这个字母…

Android - failed to set system property

记录一次疏忽,起因是我需要在自定义的 receiver 中保存 property 方便,方便在三方 app 中使用,结果直接崩溃了,虽然结果保存成功了,但是这种情况也是无法接收的,错误日志如下: M006082 05-25 1…

【OpenGL Mathematics(GLM)下载链接】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、OpenGL Mathematics(GLM)二、使用步骤 前言 3D 图形编程会大量使用向量和矩阵代数。因此,配合一个支持常见数学计算任务的函数库或者类包&…

赶紧收藏!2024 年最常见 20道 Rocket MQ面试题(二)

上一篇地址:赶紧收藏!2024 年最常见 20道 Rocket MQ面试题(一)-CSDN博客 三、如何在RocketMQ中保证消息的顺序性? 在RocketMQ中保证消息的顺序性主要通过以下几个方面实现: 1、单线程顺序写入&#xff1a…

场景题11111

关单操作? 优先考虑定时任务、Redissonredis、RocketMQ延迟消息实现(订单量特别大的时候,不建议使用MQ) 每个订单都有一个消息会增加资源消耗可靠性问题(丢失)大量的无效消息不是所有消息队列都支持一般通…

PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线?simulink搭建PID控制,积分模块1/s

PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线, 这个问题呢其实道理很简单,用到的是初中的知识 我们做几个测试案例 如下面matlab搭建了积分1/s 那显示如下(红色曲线相当于加速度、蓝色曲线相当于速度)&a…

Flutter 中的 AnimatedPadding 小部件:全面指南

Flutter 中的 AnimatedPadding 小部件:全面指南 在 Flutter 中,动画是增强用户界面和提升用户体验的重要工具。AnimatedPadding 是 Flutter 的动画库中的一个组件,它允许你为子组件添加动态变化的内边距。这个组件可以在展开或折叠列表项、标…

5.28_Java语法_运算符,接收键盘数据

1、运算符 具体应用同我C语言操作符详解博客相同,另有补充会直接写 1.1、基本的算术运算符、符号做连接符 CSDN 具体应用同我C语言操作符详解博客相同 符号做连接符: ""符号与字符串运算连用的时候是用作连接符的,其结果依然是一个字符串…

【html项目实战】年长者便捷上网中心

作品介绍 本HTML作品名为“年长者便捷上网中心”,旨在为年长用户提供一个友好且易于操作的在线界面。考虑到年长用户对于大字体、清晰的颜色和简洁布局的需求,该作品在设计和样式上进行了精心打造,以确保用户能够轻松浏览和使用。 一、整体布局 作品采用经典的头部(head…

SQL常用基础语句(二)-- FGHIJ开头

GROUP BY GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。在GROUP BY子句后面包含了一个HAVING子句,HAVING类似于WHERE,(唯一的差别是WHERE过滤行,HAVING过滤组&#xff0…

前端响应式期末作品

网页设计成品_前端响应式 主题:租房网站,共6个html页面,包含首页,登录注册,租房新闻,租房精选,租房详情,数据可视化页面(可以修改内容) 采用技术:…

启动ChatGPT 的快捷键,探索全新 ChatGPT MacOS 应用程序!

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

前端错误监控与日志收集实践

前端错误监控与日志收集是确保应用程序稳定性和用户体验的关键部分。今天我们来聊聊前端常用的前端错误监控与日志收集方法: 使用try-catch捕获错误 在可能出现错误的代码块中,使用try-catch结构捕获错误: try {// 可能会抛出错误的代码} c…

深度解析Java 11核心新特性

码到三十五 &#xff1a; 个人主页 < 免责声明 > 避免对文章进行过度解读&#xff0c;因为每个人的知识结构和认知背景都不同&#xff0c;没有一种通用的解决方案。对于文章观点&#xff0c;不必急于评判。融入其中&#xff0c;审视自我&#xff0c;尝试从旁观者角度认清…

kafka 工作流程文件存储

爬虫组件分析 目录概述需求&#xff1a; 设计思路实现思路分析1.kafka 工作流程2.kafka 文件存储 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for…

软考结束。有什么要说的

1. 竟然是机试&#xff0c;出乎我意料。是 考试机构觉得笔试成本高了么。这次的考试是机试&#xff0c;相比以往有所不一样。感言是不是以后都会在固定地点考试也说不准。 2. 遇到年轻人。 这次旁边的一个女同学第一次参加&#xff0c;还像我询问了一些关于软考的事。我是有…

深度解析Vue.js组件间的通信方式

Vue.js 组件通信主要通过以下几种方式来实现&#xff1a; Props&#xff08;属性&#xff09; 方向&#xff1a;父组件到子组件用途&#xff1a;父组件通过属性向子组件传递数据。特性&#xff1a; 只读&#xff1a;默认情况下&#xff0c;子组件不能改变props的值。验证&…