Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1681052
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类:

2012-07-06 08:42:10

原文地址:Linux 多点触摸简介 作者:fly123456789

Linxu内核中,手指信息被内核抽象为一个个ABS数据包,由驱动顺序的发送给应用。

多点触摸的ABS数据包通常由ABS_MT标志。驱动调用input_mt_sync发送SYN_MT_REPORT来表示一个ABS数据包结束。应用收到SYN_MT_REPORT事件后,会处理当前数据包并准备接收下一个数据包。如果本次多点触摸所有手指的数据包都发送完毕,需要调用input_sync发送SYN_REPORT,以通知上层本次多点触摸结束了。input_sync之后就进入了下一次多点触摸周期。

通常的多点触摸周期可以描述为:

ABS_MT_*|SYN_MT_REPORT|ABS_MT_*|SYN_MT_REPORT|SYN_REPORT

有些ABS_MT事件是必须实现的,如ABS_MT_POSITION_XABS_MT_POSITION_Y。而某些事件,如ABS_MT_TOUCH_MAJORABS_MT_WIDTH_MAJOR是否需要实现则取决于具体的硬件。

ABS_MT_TOUCH_MAJOR表示了手指接触TP的直径的近似。ABS_MT_WIDTH_MAJOR是手指的直径的近似。当手指和触摸屏接触的越紧密,则压力越大,手指和屏幕接触的面积(直径)也会越大。而手指的直径通常是一个常量。这样ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR就可以用来表示压力了。而且这个值在[0,1)间。对于某些提供了压力值的TP,可以使用ABS_MT_PRESSURE来替代ABS_MT_TOUCH_MAJOR

阅读(201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~