Android触摸屏位置关闭
我在android上使用触摸屏(atmel maxtouch-atmel 1664s),发现我越往右边走(X越大),我的手指与屏幕上的触摸点之间的距离就越大。IDC文件、驱动程序或其他地方的设置会有问题吗?在同一屏幕上使用另一个操作系统,如Ubuntu,似乎没有这个问题 我用这个文件试图纠正这个位置,但最后一行只是把触摸屏变成了一个触摸板Android触摸屏位置关闭,android,kernel-module,Android,Kernel Module,我在android上使用触摸屏(atmel maxtouch-atmel 1664s),发现我越往右边走(X越大),我的手指与屏幕上的触摸点之间的距离就越大。IDC文件、驱动程序或其他地方的设置会有问题吗?在同一屏幕上使用另一个操作系统,如Ubuntu,似乎没有这个问题 我用这个文件试图纠正这个位置,但最后一行只是把触摸屏变成了一个触摸板 touch.deviceType = touchScreen touch.orientationAware = 1 output.x = (raw.x - r
touch.deviceType = touchScreen
touch.orientationAware = 1
output.x = (raw.x - raw.x.min) * (output.width / raw.width)
内核驱动程序未正确检测和报告输入X报告的可能范围 如果您使用
adb shell
并运行getevent-il
,您应该会得到如下结果
add device 6: /dev/input/event2
bus: 0000
vendor 0000
product 0000
version 0000
name: "touch_dev"
location: ""
id: ""
version: 1.0.1
events:
ABS (0003): ABS_MT_SLOT : value 0, min 0, max 9, fuzz 0, flat 0, resolution 0
ABS_MT_TOUCH_MAJOR : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0
ABS_MT_POSITION_X : value 0, min 0, max 1535, fuzz 0, flat 0, resolution 0
ABS_MT_POSITION_Y : value 0, min 0, max 2559, fuzz 0, flat 0, resolution 0
ABS_MT_TRACKING_ID : value 0, min 0, max 65535, fuzz 0, flat 0, resolution 0
ABS_MT_PRESSURE : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
input props:
INPUT_PROP_DIRECT
您可以在我的设备上看到,X值可以在0到1535之间
如果然后运行getevent-trl/dev/input/event2
,在屏幕上移动手指,查看可能的最大X值,它应该对应:
[ 115960.226411] EV_ABS ABS_MT_POSITION_X 000005ee
0x5ee=1518,这是正确的
触摸控制器上有一些参数可以调整这种缩放,并且需要与内核驱动程序报告的内容同步。标准的Linux主线驱动程序不能很好地处理那些与平台数据不同步的参数。有一些补丁可以解决这一问题,但尚未向上游发展:
如果当你将手指移到最右边时,触摸仍然在屏幕上,你可以通过这样做来纠正它
output.x = raw.x / scale
其中,比例是报告坐标与所需坐标的比率。你不能反过来做,因为较低的输入层会在屏幕外丢弃报告
正确的修复方法是修复内核驱动程序中的错误,或者调整触摸控制器上的范围设置
你没有说它是什么特别的设备,所以很难进一步帮助你。这听起来像是给某个人的bug报告员的报告。也许会更有帮助。如果这不是一个bug报告,并且您有一些代码试图纠正该行为,请发布它。我将其缩小到idc文件问题,尽管让它知道问题源可能仍然来自其他地方。这是一些很好的信息,我将开始探索。具体的触摸屏设备是atmel 1664s。