首页 > 其他分享 >input子系统二

input子系统二

时间:2024-03-31 16:44:26浏览次数:14  
标签:触点 ID MT ABS 上报 input EV 子系统

参考资料: 正点原子Linux设备驱动 韦东山第二期   触摸屏分为电阻屏和电容屏。电阻屏结构简单,以前很流行;电容屏支持多点触摸,现在手机基本都是使用电容屏 注:LCD和touch screen不是一个东西,制作触摸屏时特地把它的尺寸做得跟LCD大小一模一样,并不是将触摸屏覆盖在LCD上   电阻屏: 0 电阻屏基于欧姆定律制作得,上下两层薄膜,这个薄膜就是两个电阻,通过检测触摸点得的y方向和x方向电压(屏的大小是固定的),就可以得到触摸点坐标 电阻屏的输入数据: Linux驱动程序中,会上报触电的X/Y数据,注意:这不是LCD坐标值,需要经过APP再次处理才能转换为LCD坐标值

按下时:
EV_KEY   BTN_TOUCH     1        /* 按下 */
EV_ABS   ABS_PRESSURE  1        /* 压力值,可以上报,也可以不报,可以是其他压力值 */
EV_ABS   ABS_X         x_value  /* X坐标 */
EV_ABS   ABS_Y         y_value  /* Y坐标 */
EV_SYNC  0             0        /* 同步事件 */

松开时:
EV_KEY   BTN_TOUCH     0        /* 松开 */
EV_ABS   ABS_PRESSURE  0        /* 压力值,可以上报,也可以不报 */
EV_SYNC  0             0        /* 同步事件 */
  电容屏: 电容屏中有一个控制芯片,它会周期产生驱动信号,接收电极接收到信号,并可测量电荷大小。当电容屏被按下,相当于引入了新的电容,从而影响接收电极接收到的电荷大小。主控芯片根据电荷大小即可计算出触点位置。可以通过芯片IC就可以得到坐标值。 0 type B触摸屏能分辨是哪一个触点,上报数据时会先上报触点ID,再上报它的数据 具体例子如下,使用场景分析来看看它上报的数据:
EV_ABS   ABS_MT_SLOT 0                  // 这表示“我要上报一个触点信息了”,用来分隔触点信息
EV_ABS   ABS_MT_TRACKING_ID 45          // 这个触点的ID是45
EV_ABS   ABS_MT_POSITION_X x[0]         // 触点X坐标
EV_ABS   ABS_MT_POSITION_Y y[0]         // 触点Y坐标
EV_ABS   ABS_MT_SLOT 1                  // 这表示“我要上报一个触点信息了”,用来分隔触点信息
EV_ABS   ABS_MT_TRACKING_ID 46          // 这个触点的ID是46
EV_ABS   ABS_MT_POSITION_X x[1]         // 触点X坐标
EV_ABS   ABS_MT_POSITION_Y y[1]         // 触点Y坐标
EV_SYNC  SYN_REPORT        0            // 全部数据上报完毕,同步事件
当ID为45的触点正在移动时:
EV_ABS   ABS_MT_SLOT 0   // 这表示“我要上报一个触点信息了”,之前上报过ID,就不用再上报ID了
EV_ABS   ABS_MT_POSITION_X x[0]   // 触点X坐标
EV_SYNC  SYN_REPORT         0     // 全部数据上报完毕
松开ID为45的触点时(在前面slot已经被设置为0,这里这需要再重新设置slot,slot就像一个全局变量一样:如果它没变化的话,就无需再次设置):
// 刚刚设置了ABS_MT_SLOT为0,它对应ID为45,这里设置ID为-1就表示ID为45的触点被松开了
EV_ABS   ABS_MT_TRACKING_ID -1   
EV_SYNC  SYN_REPORT         0    // 全部数据上报完毕
最后上,松开ID为46的触点:
EV_ABS   ABS_MT_TRACKING_ID -1  // ID为-1,表示slot 1被松开,即ID为46的触点被松开
EV_SYNC  SYN_REPORT             // 全部数据上报完毕

 

以百问网的举例说明: 一个手指点击触摸屏: 0 BIT_TOUCH表示触摸屏被按下,为了兼容老的触摸屏,还上报了ABS_X和ABS_Y的数据(这两个是老的电阻屏的参数),上报同步事件EV_SYNC。松开,将ABS_MT_TRACKING_ID设置为-1就可以了   两根手指点击触摸屏时,得到类似如下的数据: 0 兼容老程序,ABS_X和ABS_Y只上报了第一个触点的坐标。100为ABS_MT_SLOT 1。ABS_MT_SLOT 0和ABS_MT_TRACKING_ID -1,表示松开了ID为7的触点。ABS_MT_SLOT 1和ABS_MT_TRACKING_ID -1,表示松开了ID为8的触点   ABS_MT_TOUCH_MAJOR和ABS_MT_WIDTH_MAJOR的含义: 表示触摸点的大小和手指的大小,不是很重要          

标签:触点,ID,MT,ABS,上报,input,EV,子系统
From: https://www.cnblogs.com/lethe1203/p/18106902

相关文章

  • input子系统一
    参考资料:正点原子Linux设备驱动韦东山第二期 input子系统框架图: 用户空间:用户空间可直接访问驱动节点,/dev/input/event0,1,2,也可以通过1tslib/libinput库来使用输入设备输入系统事件层:处理核心层上报的输入事件,给用户层提供访问接口输入系统核心层:承上启下,接收来自底层的......
  • 电子系统集成
    单路DAC和多路模拟开关生成多路信号源题目:利用一个DAC0832和一个模拟开关设计8路模拟信号源,要求控制器为8051单片机,每路信号源的输出电压为0~5V,信号频率均为1KHz,输出精度优于2%,要求画出原理图(电源部分可不画),每路信号源一个周期内的量化点数可以一样,计算模拟开关的切换速度,写出关......
  • HTML学习 之 <input>标签
    目录标签属性type属性textpasswordnumberemailcheckboxradio<input>标签用于搜集用户信息。在html中,<input>标签可以没有结束标签,但在xhtml中<input>必须被正确地关闭。<input>标签属性<input>标签属性共约有29个,比较常用的是下面这几个:type规定input元素的类型......
  • 转:cpu性能和功耗相关的内核子系统
    http://arthurchiao.art/blog/linux-cpu-2-zh/ 1.1调度器:时分复用+任务调度——sched1.3有任务:用哪个频率执行任务?——cpufreq1.4无任务:执行轻量级占坑程序——idletask从原理来说,非常简单。产品经理:什么都不做。从实现来说,非常模糊。程序员:“什么都不做”的代......
  • vue3背景下,el-input嵌套在弹出框中,自动聚焦“失效”?如何实现自动聚焦
    情景:在一个弹出框中,有一个el-input输入框,想要实现当弹出框出现时,input会自动聚焦。使用input的原生属性autofocus去自动获取焦点失效;使用ref获取el-input元素也显示undefined!!!<el-dialogv-model="dialogFormVisible"width="300">.......<el-input......
  • elementui组件el-input 类型为number时,去掉上下箭头,并且解决输入中文后光标上移问题
    //去掉number输入框的上下箭头.def-input-numberinput::-webkit-outer-spin-button,.def-input-numberinput::-webkit-inner-spin-button{-webkit-appearance:none;}.def-input-numberinput[type="number"]{-moz-appearance:textfield;}//解决inputnumber框......
  • Windows的Linux子系统迁移
    默认Windows的Linux子系统(WSL)安装的C盘,如果有用作Docker镜像制作很容易磁盘不够用。可采取如下步骤迁移(以下在WindowsPowerShell中进行的,但在CMD.exe中执行效果相同):1、执行一下命令查看Linux子系统的发行版名称(distroname)PSD:\>wsl-l-vNAME......
  • 求助,路过的大佬帮忙看一下!!!!elment中input组件使用prefix-icon="el-icon-search"不加载
    背景:创建了一个简单的vue工程想用测试一下el-input组件的功能,没有显示图标。代码如下所示<template><el-inputv-model="value"placeholder="请输入内容":disabled="false":show-password="true":clearable="true"prefix......
  • input子系统
    input子系统  输入设备包括鼠标、键盘、触摸屏、按钮等,它们都能产生输入事件,产生输入数据给计算机系统。  Linux系统为了统一管理输入设备,实现了一套能够兼容所有输入设备的框架,这个框架就是input子系统。  驱动开发人员基于input子系统开发输入设备的驱动程序,input......
  • wsl2 ubuntu子系统安装显卡驱动与cuda
    wsl2安装参考文档:http://t.csdnimg.cn/ClwJ9演示安装ubuntu22列出可安装的子系统命令:wsl--list--onlinePSC:\Users\linyu>wsl--list--online以下是可安装的有效分发的列表。使用'wsl.exe--install<Distro>'安装。NAMEF......