我正在尝试使用带有 X (1.14.7) 的 EETI EXC7200 触摸屏。识别触摸屏并处理事件。TS 发送绝对坐标并使用 evdev 驱动程序(绝对模式)。但是,当我移动到屏幕边缘(并且 X 或 Y 达到 0)时,指针会捕捉到窗口的中心。之后任何运动都有一个偏移量(取决于实际位置和角点之间的差异)。
为了测试这一点,我使用 XQueryPointer 的坐标在屏幕上绘制指针。
这是 evtest 的输出:
~# evtest /dev/input/event0
输入驱动版本为1.0.1
输入设备 ID:总线 0x18 供应商 0x0 产品 0x0 版本 0x0
输入设备名称:“EETI EXC7200触摸屏”
支持的事件:
事件类型 0 (EV_SYN)
事件类型 1 (EV_KEY)
事件代码 330 (BTN_TOUCH)
事件类型 3 (EV_ABS)
事件代码 0 (ABS_X)
价值 1928
最小 0
最大 2047
事件代码 1 (ABS_Y)
价值 1825
最小 0
最大 2047
事件代码 47 (ABS_MT_SLOT)
值 0
最小 0
最大 1
事件代码 53 (ABS_MT_POSITION_X)
值 0
最小 0
最大 2047
事件代码 54 (ABS_MT_POSITION_Y)
值 0
最小 0
最大 2047
事件代码 57 (ABS_MT_TRACKING_ID)
值 0
最小 0
最大 65535
特性:
测试...(中断退出)
事件:时间 6435.172526,类型 3 (EV_ABS),代码 57 (ABS_MT_TRACKING_ID),值 39
事件:时间 6435.172535,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 75
事件:时间 6435.172537,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 775
事件:时间6435.172542,类型1(EV_KEY),代码330(BTN_TOUCH),值1
事件:时间 6435.172546,类型 3 (EV_ABS),代码 0 (ABS_X),值 75
事件:时间 6435.172548,类型 3 (EV_ABS),代码 1 (ABS_Y),值 775
事件:时间 6435.172550, -------------- EV_SYN ------------
事件:时间 6435.236468,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 77
事件:时间 6435.236472,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 776
事件:时间 6435.236477,类型 3 (EV_ABS),代码 0 (ABS_X),值 77
事件:时间 6435.236479,类型 3 (EV_ABS),代码 1 (ABS_Y),值 776
事件:时间 6435.236481, -------------- EV_SYN ------------
事件:时间 6435.290502,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 79
事件:时间 6435.290510,类型 3 (EV_ABS),代码 0 (ABS_X),值 79
事件:时间 6435.290513, -------------- EV_SYN ------------
事件:时间 6435.354553,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 778
事件:时间 6435.354571,类型 3 (EV_ABS),代码 1 (ABS_Y),值 778
事件:时间 6435.354573, -------------- EV_SYN ------------
事件:时间 6435.376630,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 78
事件:时间 6435.376637,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 781
事件:时间 6435.376644,类型 3 (EV_ABS),代码 0 (ABS_X),值 78
事件:时间 6435.376646,类型 3 (EV_ABS),代码 1 (ABS_Y),值 781
事件:时间 6435.376648, -------------- EV_SYN ------------
事件:时间 6435.397552,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 76
事件:时间 6435.397556,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 783
事件:时间 6435.397561,类型 3 (EV_ABS),代码 0 (ABS_X),值 76
事件:时间 6435.397563,类型 3 (EV_ABS),代码 1 (ABS_Y),值 783
事件:时间 6435.397565, -------------- EV_SYN ------------
事件:时间 6435.408593,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 74
事件:时间 6435.408599,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 784
事件:时间 6435.408606,类型 3 (EV_ABS),代码 0 (ABS_X),值 74
事件:时间 6435.408608,类型 3 (EV_ABS),代码 1 (ABS_Y),值 784
事件:时间 6435.408610, -------------- EV_SYN ------------
事件:时间 6435.419598,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 70
事件:时间 6435.419603,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 785
事件:时间 6435.419609,类型 3 (EV_ABS),代码 0 (ABS_X),值 70
事件:时间 6435.419611,类型 3 (EV_ABS),代码 1 (ABS_Y),值 785
事件:时间 6435.419613, -------------- EV_SYN ------------
事件:时间 6435.429599,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 64
事件:时间 6435.429602,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 786
事件:时间 6435.429608,类型 3 (EV_ABS),代码 0 (ABS_X),值 64
事件:时间 6435.429610,类型 3 (EV_ABS),代码 1 (ABS_Y),值 786
事件:时间 6435.429612, -------------- EV_SYN ------------
事件:时间 6435.440599,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 54
事件:时间 6435.440604,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 787
事件:时间 6435.440610,类型 3 (EV_ABS),代码 0 (ABS_X),值 54
事件:时间 6435.440611,类型 3 (EV_ABS),代码 1 (ABS_Y),值 787
事件:时间 6435.440613, -------------- EV_SYN ------------
事件:时间 6435.451595,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 43
事件:时间 6435.451602,类型 3 (EV_ABS),代码 0 (ABS_X),值 43
事件:时间 6435.451605, -------------- EV_SYN ------------
事件:时间 6435.462619,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 32
事件:时间 6435.462623,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 786
事件:时间 6435.462629,类型 3 (EV_ABS),代码 0 (ABS_X),值 32
事件:时间 6435.462631,类型 3 (EV_ABS),代码 1 (ABS_Y),值 786
事件:时间 6435.462633, -------------- EV_SYN ------------
事件:时间 6435.472642,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 22
事件:时间 6435.472648,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 785
事件:时间 6435.472654,类型 3 (EV_ABS),代码 0 (ABS_X),值 22
事件:时间 6435.472656,类型 3 (EV_ABS),代码 1 (ABS_Y),值 785
事件:时间 6435.472658, -------------- EV_SYN ------------
事件:时间 6435.483646,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 14
事件:时间 6435.483651,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 783
事件:时间 6435.483657,类型 3 (EV_ABS),代码 0 (ABS_X),值 14
事件:时间 6435.483658,类型 3 (EV_ABS),代码 1 (ABS_Y),值 783
事件:时间 6435.483660, -------------- EV_SYN ------------
事件:时间 6435.494684,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 8
事件:时间 6435.494689,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 782
事件:时间 6435.494697,类型 3 (EV_ABS),代码 0 (ABS_X),值 8
事件:时间 6435.494699,类型 3 (EV_ABS),代码 1 (ABS_Y),值 782
事件:时间 6435.494701, -------------- EV_SYN ------------
事件:时间 6435.504820,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 4
事件:时间 6435.504829,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 781
事件:时间 6435.504837,类型 3 (EV_ABS),代码 0 (ABS_X),值 4
事件:时间 6435.504839,类型 3 (EV_ABS),代码 1 (ABS_Y),值 781
事件:时间 6435.504841, -------------- EV_SYN ------------
事件:时间 6435.515636,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 2
事件:时间 6435.515640,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 780
事件:时间 6435.515646,类型 3 (EV_ABS),代码 0 (ABS_X),值 2
事件:时间 6435.515648,类型 3 (EV_ABS),代码 1 (ABS_Y),值 780
事件:时间 6435.515650, -------------- EV_SYN ------------
事件:时间 6435.537672,类型 3 (EV_ABS),代码 53 (ABS_MT_POSITION_X),值 0
事件:时间 6435.537683,类型 3 (EV_ABS),代码 0 (ABS_X),值 0
事件:时间 6435.537686, -------------- EV_SYN ------------
事件:时间 6435.600755,类型 3 (EV_ABS),代码 54 (ABS_MT_POSITION_Y),值 777
事件:时间 6435.600766,类型 3 (EV_ABS),代码 1 (ABS_Y),值 777
事件:时间 6435.600768, -------------- EV_SYN ------------
事件:时间 6435.601836,类型 3 (EV_ABS),代码 57 (ABS_MT_TRACKING_ID),值 -1
事件:时间6435.601844,类型1(EV_KEY),代码330(BTN_TOUCH),值0
事件:时间 6435.601847, -------------- EV_SYN ------------
并且(同时)通过 xinput 翻译输出:
~# xinput 测试 6
运动 a[0]=75 a[1]=775
按钮按下 1 a[0]=75 a[1]=775
运动 a[0]=77 a[1]=776
运动 a[0]=79 a[1]=776
运动 a[0]=79 a[1]=778
运动 a[0]=78 a[1]=781
运动 a[0]=76 a[1]=783
运动 a[0]=74 a[1]=784
运动 a[0]=70 a[1]=785
运动 a[0]=64 a[1]=786
运动 a[0]=54 a[1]=787
运动 a[0]=43 a[1]=787
运动 a[0]=32 a[1]=786
运动 a[0]=22 a[1]=785
运动 a[0]=14 a[1]=783
运动 a[0]=1024 a[1]=1024
运动 a[0]=8 a[1]=782
运动 a[0]=1024 a[1]=1024
运动 a[0]=4 a[1]=781
运动 a[0]=1024 a[1]=1024
运动 a[0]=2 a[1]=780
运动 a[0]=1024 a[1]=1024
运动 a[0]=0 a[1]=780
运动 a[0]=1024 a[1]=1024
运动 a[0]=0 a[1]=777
按钮释放 1 a[0]=0 a[1]=777
运动 a[0]=1024 a[1]=1024
xinput 正在输出位于中心的额外运动事件。但只有当我靠近触摸屏边缘时。
我究竟做错了什么?我应该看什么?感谢您的任何帮助或提示。