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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++网络编程——socket

在服务器中,需要建立一个socket套接字才能对外提供一个网络通信接口,在Linux系统中套接字仅是一个文件描述符,也就是一个int类型的值 socket概念 socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字…

骆驼大赛

目录 一,主版图 二,骰子 三,初始设置 四,核心规则 五,结算 这是适合5-8人玩的一个概率推理类的回合制桌游。 一,主版图 赛道由16个格子组成,编号为1-16。 一共7个骆驼,其中正…

python如何巧妙地利用内置函数与列表切片组织舞会派对

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、问题分析 三、解决方案 1. 利用内置函数创建参会人员名单 2. 利用列表切片…

【教学类-58-06】黑白三角拼图06(1页3张彩色黑点卡片,一种宫格36张,适合一个班级一次操作)

作品展示 背景需求 【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)-CSDN博客文章浏览阅读343次,点赞10次,收藏6次。【教学类-58-05】黑白三角拼图…

基于深度强化学习的无人车自适应速度规划

论文:Adaptive speed planning for Unmanned Vehicle Based on Deep Reinforcement Learning 编辑:东岸因为一点人工一点智能 基于深度强化学习的无人车自适应速度规划本文对无人车辆的速度规划部分进行了一些改进。首先,将车辆速度与车辆与…

Excel中怎样将第一行建立好的规则套用到每一行?

考虑使用条件格式来完成,有两种方式可以尝试: 一、一次性创建条件格式 1.选中需要设置条件格式的区域,如果是不连续的区域,可以按住Ctrl键,然后用鼠标依次选中需要的数据区域 2.点击 开始选项卡,条件格式…

探索python循环逻辑的魅力:从无限到有限

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:循环逻辑的初步认识 二、无限循环:持续运转的引擎 三、有…

OpenHarmony Camera源码分析

一、简介 当前,开源在科技进步和产业发展中发挥着越来越重要的作用,OpenAtom OpenHarmony(简称“OpenHarmony”)赋予了开发者孕育创新的种子,也为数字化产业发展开辟了一片土壤。深开鸿是开源的坚定践行者&#xff0c…

云服务器平台AutoDL--基本介绍与使用感受

因为课程作业需要复现DreamBooth,找了几个教程之后,发现了AutoDL这个好东西,芜湖~ 相关概念 以下回答来自于ChatGPT。 云计算平台:云服务器平台是提供按需计算资源和服务的在线平台,通常包括存储、处理能力、数据库、…

所以研究生有不变胖的吗?

天天吃 记得和骏骏一样减肥 分享昨天无人机拍的照片

新零售收银解决方案:传统门店超市的数字化-亿发

在数字化浪潮的推动下,零售行业正经历着前所未有的变革。阿里巴巴提出的“新零售”概念,不仅仅是一个商业口号,它代表了一种全新的商业模式和运营理念。随着时代的进步和消费需求的不断升级,新零售的兴起已成为行业发展的必然趋势…

关于我转生从零开始学C++这件事:升级Lv.25

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ OK了老铁们,又是一个周末,大伟又来继续给大家更新我们的C的内容了。那么根据上一篇博…

Python读取Excel表格文件并绘制多列数据的曲线图

本文介绍基于Python语言,读取Excel表格数据,并基于给定的行数范围内的指定列数据,绘制多条曲线图,并动态调整图片长度的方法。 首先,我们来明确一下本文的需求。现有一个.csv格式的Excel表格文件,其第一列为…

鸿蒙OS开发:【一次开发,多端部署】(音乐专辑主页)

一多音乐专辑主页 介绍 本示例展示了音乐专辑主页。 头部返回栏: 因元素单一、位置固定在顶部,因此适合采用自适应拉伸,充分利用顶部区域。专辑封面: 使用栅格组件控制占比,在小尺寸屏幕下封面图与歌单描述在同一行。歌曲列表: 使用栅格组…

【详细介绍WebKit的结构】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

2.搜索游戏中不可见的数据坐标

内容参考于: 易道云信息技术研究院VIP课 首先一般游戏在设计时会把人物相关的属性放到一起,在 1.搜索游戏中的数据与环境搭建 里也能证实,角色的等级、攻击力、生命值、经验等它们的内存地址都是相差4字节也就是用int类型存储的,…

QT学习(20):QStyle类

Qt包含一组QStyle子类,这些子类(QWindowsStyle,QMacStyle等)模拟Qt支持的不同平台的样式,默认情况下,这些样式内置在Qt GUI模块中,样式也可以作为插件提供。 Qt的内置widgets使用QStyle来执行几…

PostgreSQL入门简介

PostgreSQL 是一个功能强大、开源的对象关系型数据库管理系统,以其稳定性、可靠性和丰富的功能集著称。以下是对 PostgreSQL 的入门简介: 1. 什么是 PostgreSQL? PostgreSQL 是一个开源的关系数据库管理系统,支持 SQL(…

SpringBoot整合SpringSecurit,实现ajax的登录、退出、权限校验

1、本文章中SpringBoot整合SpringSecurity&#xff0c;只是基于session方式&#xff0c;并且没有使用到redis。 2、登录、登出都是通过ajax的方式进行。 项目目录&#xff1a; 1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xm…

栈的特性及代码实现(C语言)

目录 栈的定义 栈的结构选取 链式储存结构和顺序栈储存结构的差异 栈的代码实现 "stack.h" "stack.c" 总结 栈的定义 栈&#xff1a;栈是限定仅在表尾进行插入和删除操作的线性表。 我们把运行插入的和删除的一段叫做栈顶&#xff08;TOP&#xff…