linux 多点协议,Linux入门教程:Linux多点触控协议
上面的四个参数用来描术接触面的一些附加信息, ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR的比值可以用来反应接触时的压力值。ABS_MT_PRESSURE接触工具对接触面的压力大小,可以用来代替上面的四个参数。ABS_MT_ORIENTATION描述随圆的转动趋势,这是一个抽相值,O值表示接触面在平行与触摸屏的Y轴,向左是负值,向右是正值,如果完全平行于X轴,则上
上面的四个参数用来描术接触面的一些附加信息, ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR的比值可以用来反应接触时的压力值。
ABS_MT_PRESSURE
接触工具对接触面的压力大小,可以用来代替上面的四个参数。
ABS_MT_ORIENTATION
描述随圆的转动趋势,这是一个抽相值,O值表示接触面在平行与触摸屏的Y轴,向左是负值,向右是正值,如果完全平行于X轴,则上向返回最大值。如果接触面是圆形,则可以忽略这个参数。如果内核不能获得这个参数有有效值,但可以区分接触面的长短轴,这个功能还是可以被部份支持,在一些设备中, ABS_MT_ORIENTATION 的值只能是 0和1。
ABS_MT_POSITION_X
接触面的形心的X坐标值。
ABS_MT_POSITION_Y
接触面的形心的Y坐标值。
ABS_MT_TOOL_TYPE
触摸工具的类型
ABS_MT_BLOB_ID
用来标识多边形的边的集合,大多数内核不支持这个参数。
ABS_MT_TRACKING_ID
仅有少数设备支持,用来区别一个触摸动作的周期。
计算方法
一些设备将触摸面作为一个矩形上报,可以通过下面这些公式来计算出协议中所需要的信息。
ABS_MT_TOUCH_MAJOR := max(X, Y)
ABS_MT_TOUCH_MINOR := min(X, Y)
ABS_MT_ORIENTATION := bool(X 》 Y)
ABS_MT_ORIENTATION的取值范围为0至1,用来标识矩形接触面偏向X轴或Y轴的程度。
触摸轨迹
仅有少数设备可以明触的标识真实的 trackingID,多数情况下 trackingID只能来标识一次触摸动作的过程。
手势
多点触摸指定的应用是创建手势动作, TOUCH和 WIDTH参数经常用来区别手指的压力和手指间的距离,另外 MINOR类的参数可以用来区别设备的接触面的大小(点接触还是面接触) ,ORIENTATION可以产生旋转事件。
说明:
为了完作支持己有的应用,多点触控驱动应上报单点触控相应的 event,另外,所有的触控事件需要通过 input子系统向上传递。
目前内核只有 bcm5974这么一个驱动支持多点触控,可以以此为例设计你的驱动。
1) ABS_MT_APPROACH_X和 ABS_MT_APPROACH_Y在不同的触摸设备中可以有不同的意义。
2)这个协议需要补充。
3)多点触控的驱动尚没不成熟,到目前为此( 2009年4月) ,多点触控协议还没有 merged到内核主开发分支。
更多推荐
所有评论(0)