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

news2024/10/7 10:20:14

【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 = 0

05-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 = 0

05-15 11:19:30.973   384   475 E InputReader: liangji mViewport.deviceHeight = 800, mViewport.deviceWidth = 1280

05-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 = 0

05-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 = 0

05-15 11:28:31.335   387   477 E InputReader: liangji mViewport.deviceHeight = 1920, mViewport.deviceWidth = 1080

05-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.coloradmin.cn/o/1707290.html

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

相关文章

C#中的事件聚合器实现方法

概述:_对象之间的关系_是使代码库难以理解和难以维护的原因。为了更好地理解它,我们求助于马丁福勒(Martin Fowler):事件聚合器是间接的简单元素。在最简单的形式中,您可以让它注册到您感兴趣的所有源对象&…

JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(MES与ERP系统的区别和联系)

MES与ERP系统的区别和联系 MES制造执行系统,是一套面向制造公司车间执行层的生产信息化管理系统。MES 可觉得公司提供涉及制造数据管理、计划排产管理、生产调度管理、库存管理、质量管理、人力资源管理、工作中心、设备管理、工具工装管理、采购管理、成本管理、项…

C++牛客周赛43题目分享(3)小红平分糖果,小红的完全平方数,小苯的字符串变化,小红的子数组排列判断

目录 ​编辑 1.前言 2.四道题目 2.1小红平分糖果 2.1.1题目描述 2.1.2输入描述 2.1.3输出描述 2.1.4示例 2.1.5代码 2.2小红的完全平方数 2.1.1题目描述 2.1.2输入描述 2.1.3输出描述 2.1.4示例 2.1.5代码 2.3小苯的字符串变化 2.1.1题目描述 2.1.2输入描述 …

Steam游戏搬砖:靠谱吗,详细版说下搬砖中的核心内容!

可能大家也比较关注国外Steam游戏搬砖这个项目,最近单独找我了解的也比较多,其实也正常,因为现在市面上的项目很多都很鸡肋,而且很多都是一片红海,内卷太过严重,所以对于Steam的关注度也高很多,…

CTF-web-WP-攻防世界-1

1、view_source:打开开发者工具F12就能看到flag 2、robots (1)、使用目录扫描工具 工具:dirsearch命令:python dirsearch.py -u http://61.147.171.105:55644/ -e * (2)、看到下面有robots.txt文件,在URL后面输入&#xff0c…

torch.matmul()的用法

这篇文章记录torch.matmul()的用法 这里仿照官方文档中的例子说明,此处取整数随机数,用于直观的查看效果: vector x vector 两个一维向量的matmul相当于点积,得到一个标量 tensor1 torch.randint(1, 6, (3,)) tensor2 torch.…

SYD881X HID工程重连后连接参数没有更新功耗下不来

SYD881X HID工程重连后连接参数没有更新功耗下不来 现在测试到一个问题,第一次连接上的时候过一段时间功耗会下来到100UA以内,这个是正常的,但是关掉手机蓝牙再打开手机蓝牙就发现功耗是500UA左右下不来了! 抓包发现第一次连接和重连的时候手机给的连接参数是一样的: 问题是当…

nginx设置一个TCP代理(用于RDP连接)

在 Nginx 中,stream 上下文必须在 http 上下文之外,并且只能位于顶级配置文件中或包含在主配置文件中的单独文件中。 Nginx 的配置文件通常包含一个 http 块,用于处理 HTTP 和 HTTPS 请求,但是 stream 块是独立的,并且…

微信好友,如此的陌生,渐渐都成了只是人名!也许没有利益关系导致!

微信里一直聊天聊的挺好的朋友,不知怎么到后来却联系少了,最后渐渐的变成躺在微信备注里的一个陌生朋友! 以前通过工作认识了一个朋友,初次见面的印象不是很深刻了,只记得当时给我的印象是对方很有礼貌,特别…

段位在于面对人性之恶,一笑而过

这个小哥哥不知道是哪里不对劲了,突然给我留言说我在骗流量,骗关注。公众号是我的,文章是我写的,主要分享的就是我创业的一些接单案例,因为之前收到很多无效的留言,寻求合作就几个字我不想接收无效信息&…

【Android14 ShellTransitions】(一)开篇

说来惭愧,AndroidU都已经开发这么久了,但是我还没有整理过ShellTransition相关的知识。我本来希望能够系统的写一篇关于ShellTransition的笔记出来,但是发现一来这是一个比较庞大的模块,二来我个人能力有限,对ShellTra…

一文搞懂oracle事务提交以及脏数据落盘的原则

本文基于oracle 19c 做事务提交以及oracle脏数据落盘的相关解读 第一章 相关进程及组件介绍: 1.LGWR: 重做日志条目在系统全局区域 (SGA) 的重做日志缓冲区中生成。LGWR 按顺序将重做日志条目写入重做日志文件。如果数据库具有…

Jenkins安装启动(JDK8/11/17)

目录 传送门前言一、概念1、Jenkins是什么2、Jenkins 的安装概念图 二、下载1、下载war包(JDK17环境推荐)2、下载rpm安装包(JDK8环境推荐) 三、对应JDK8的实际安装(Jenkins2.346.1)1、安装指令2、Jenkins2.…

Java入门基础学习笔记46——String的案例

完成用户登录功能: 需求: 系统的正确的用户名和密码:changchunhua/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进…

2024HBCPC:E Breakfast II

题目描述 作为一个合格的大学生,你不仅需要学习成绩好,还需要会买包子和鸡蛋。 今天,又轮到你们给你的导师买早饭了! 这一次你们一共需要给导师买 n n n 个包子和 m m m 个鸡蛋(请注意,这一次可能不再只…

【class18】人工智能初步----语音识别(4)

【class17】 上节课,我们学习了: 语音端点检测的相关概念,并通过代码切分和保存了音频。 本节课,我们将学习这些知识点:1. 序列到序列模型2. 循环神经网络3. 调用短语音识别接口 知其然,知其所以然 在调用语…

JS——对象

1.什么是对象 对象是什么? 对象是一种数据类型 无序的数据的集合( 数组是有序的数据集合 ) 对象有什么特点? 无序的数据的集合 可以详细地描述某个事物 静态特征 (姓名, 年龄, 身高, 性别, 爱好) > 可以使用数字, 字符串…

数据结构算法题day03

数据结构算法题day03 题目 题目 2.设计一个高效算法&#xff0c;将顺序表L的所有元素逆置&#xff0c;要求算法的空间复杂度为O(1)算法思想&#xff1a; 1、常规的解法&#xff1a; Void reverse (sqlist &L){Elemtype temp; //辅助变量for(i 0,i < L.length; i){temp…

985上交应届生转正12天,被某东辞退了!

&#x1f447;我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299&#xff0c;限时特价2杯咖啡&#xff0c;满100人涨10元。 01.事情起源 最近粉丝群都在转发一个截图&#xff0c;某应届毕业生在某东实习一年&#xff0c;才转正才12天&#xff0c;就因为自己调侃…

kafka-消费者组-发布订阅测试

文章目录 1、发布订阅测试1.1、创建消费者4并指定组 my_group21.2、列出所有的消费者组1.3、查看 my_group2 组的详细信息1.4、发送第六条消息accomplish1.4.1、查看 my_group1 组的详细信息1.4.2、查看 my_group2 组的详细信息 1、发布订阅测试 接着上一篇点对点博客测试 kafk…