我正在尝试使用带有 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 正在输出位于中心的额外运动事件。但只有当我靠近触摸屏边缘时。
我究竟做错了什么?我应该看什么?感谢您的任何帮助或提示。