关于在设置TP参数的时候
input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0, pdata->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_POSITION_Y, 0, pdata->y_max, 0, 0);
这意味着设置输入系统可以识别X、Y范围分别为(0, pdata->x_max),(0, pdata->y_max);但是TP实际报点可能大于或小于此范围。
pdata->x_max 和 pdata->y_max 实际是指LCD因为只有分辨率TP报的坐标和LCD分辨率只有一一对应,才能准确操作TP。android系统会读出
pdata->x_max 和 pdata->y_max 来和读出的LCD比较分辨率,超出分辨率LCD分辨率范围率范围的坐标值将被忽略,然后在LCD分辨率范围内的坐标值和
LCD对分辨率进行相应的映射处理。因此,在调试中TP一定要把pdata->x_max 和 pdata->y_max 这两个值设为和LCD分辨率辨率!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等!!!!!!!!!!!!!!等等等等等等等等等等等等等等等等等等等等等等等等等等等等等!!!!!!!!!!!等等等等等等等等等等等等等等等等等等等等等等!!!!!!!!!!!!!!!!等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等!!!!!!!!!!!!!!等等等等等等等等等等等等等等等等等等等等等等等等等等!!!!!!!!!!!!!!!!!!!!等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等
可能的问题:
这里以LCD分辨率 540*960
1、TP实际报点范围大于此值 ,比如720*1280 。.jiang
若此时设置 pdata->x_max = 540 和 pdata->y_max=960,这个时候上报坐标就要了TP坐标
转换为和LCD具体方法是(如X坐标)将X坐标540平均分为720等分,然后乘以TP现在报告的实际坐标值是我们要报告
给系统的准确值,即 event->x * (540/720)。Y同样处理坐标,即event->y *(960/1280)TP坐标和LCD分辨率一个接一个地映射出来。
转换,那么 在540*960可以在报点范围内正常运行,超出此范围。虽然有报点,但系统不会响应。也就是说,它表现为操作TP中间的某个位置
操作相当于操作LCD图标的底部。TP这个位置已经到了540*960的坐标了。
如果设置pdata->x_max = 720 和 pdata->y_max=1280 此时系统正确TP和LCD分辨率映射有问题。LCD分辨率是540*960 ,而TP坐标识别范围
在720*1280,试问,这两者怎么会有一的关系呢?因此,这样的结果是可以操作的,但操作不准确。
2、TP实际报点范围小于此值 ,比如480*800 。
若此时设置 pdata->x_max = 540 和 pdata->y_max=960,这个时候上报坐标就要了TP坐标
转换为和LCD具体方法是(如X坐标)将X坐标540平均分为480等分,然后乘以TP现在报告的实际坐标值是我们要报告
给系统的准确值,即 event->x * (540/480)。Y同样处理坐标,即event->y *(960/800)。这样就将TP坐标和LCD分辨率逐一映射。如果不做这样的转换,
只有在那里TP报点的范围内可以操作系统,但是超过480*800后无效。
如果设置pdata->x_max = 480和 pdata->y_max=此时系统对800TP和LCD分辨率映射有问题。LCD分辨率是540*960 ,而TP坐标识别范围
在480*800,试问,两者之间怎么会有一个一个的映射关系?所以这样的结果是可以操作的,但是操作不准确,有些图标点不到。
所以再次注意,一定要注意, input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0, pdata->x_max, 0, 0);这里的 pdata->x_max 和 pdata->y_max 参数必须要
设置成和LCD分辨率相等,并且上报给系统的坐标值(注意,是上报给系统的坐标,而不是TP实际报点)也要等这个!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!