2015-09-22 125 views
2

我試圖在X(1.14.7)上使用EETI EXC7200觸摸屏。觸摸屏被識別並處理事件。 TS發送絕對座標並使用evdev驅動程序(絕對模式)。但是,當我移動到屏幕的邊緣(並且X或Y到達0)時,指針會被對齊到窗口的中心。之後任何移動都有一個偏移量(取決於實際位置和角落之間的差異)。xorg觸摸屏:忽略絕對位置

爲了測試這個,我在屏幕上用XQueryPointer的座標繪製指針。

這裏是從evtest輸出:

 
    ~# evtest /dev/input/event0 
    Input driver version is 1.0.1 
    Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0 
    Input device name: "EETI EXC7200 Touch Screen" 
    Supported events: 
     Event type 0 (EV_SYN) 
     Event type 1 (EV_KEY) 
     Event code 330 (BTN_TOUCH) 
     Event type 3 (EV_ABS) 
     Event code 0 (ABS_X) 
      Value 1928 
      Min  0 
      Max  2047 
     Event code 1 (ABS_Y) 
      Value 1825 
      Min  0 
      Max  2047 
     Event code 47 (ABS_MT_SLOT) 
      Value  0 
      Min  0 
      Max  1 
     Event code 53 (ABS_MT_POSITION_X) 
      Value  0 
      Min  0 
      Max  2047 
     Event code 54 (ABS_MT_POSITION_Y) 
      Value  0 
      Min  0 
      Max  2047 
     Event code 57 (ABS_MT_TRACKING_ID) 
      Value  0 
      Min  0 
      Max 65535 
    Properties: 
    Testing ... (interrupt to exit) 
    Event: time 6435.172526, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 39 
    Event: time 6435.172535, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 75 
    Event: time 6435.172537, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 775 
    Event: time 6435.172542, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1 
    Event: time 6435.172546, type 3 (EV_ABS), code 0 (ABS_X), value 75 
    Event: time 6435.172548, type 3 (EV_ABS), code 1 (ABS_Y), value 775 
    Event: time 6435.172550, -------------- EV_SYN ------------ 
    Event: time 6435.236468, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 77 
    Event: time 6435.236472, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 776 
    Event: time 6435.236477, type 3 (EV_ABS), code 0 (ABS_X), value 77 
    Event: time 6435.236479, type 3 (EV_ABS), code 1 (ABS_Y), value 776 
    Event: time 6435.236481, -------------- EV_SYN ------------ 
    Event: time 6435.290502, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 79 
    Event: time 6435.290510, type 3 (EV_ABS), code 0 (ABS_X), value 79 
    Event: time 6435.290513, -------------- EV_SYN ------------ 
    Event: time 6435.354553, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 778 
    Event: time 6435.354571, type 3 (EV_ABS), code 1 (ABS_Y), value 778 
    Event: time 6435.354573, -------------- EV_SYN ------------ 
    Event: time 6435.376630, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 78 
    Event: time 6435.376637, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 781 
    Event: time 6435.376644, type 3 (EV_ABS), code 0 (ABS_X), value 78 
    Event: time 6435.376646, type 3 (EV_ABS), code 1 (ABS_Y), value 781 
    Event: time 6435.376648, -------------- EV_SYN ------------ 
    Event: time 6435.397552, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 76 
    Event: time 6435.397556, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 783 
    Event: time 6435.397561, type 3 (EV_ABS), code 0 (ABS_X), value 76 
    Event: time 6435.397563, type 3 (EV_ABS), code 1 (ABS_Y), value 783 
    Event: time 6435.397565, -------------- EV_SYN ------------ 
    Event: time 6435.408593, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 74 
    Event: time 6435.408599, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 784 
    Event: time 6435.408606, type 3 (EV_ABS), code 0 (ABS_X), value 74 
    Event: time 6435.408608, type 3 (EV_ABS), code 1 (ABS_Y), value 784 
    Event: time 6435.408610, -------------- EV_SYN ------------ 
    Event: time 6435.419598, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 70 
    Event: time 6435.419603, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 785 
    Event: time 6435.419609, type 3 (EV_ABS), code 0 (ABS_X), value 70 
    Event: time 6435.419611, type 3 (EV_ABS), code 1 (ABS_Y), value 785 
    Event: time 6435.419613, -------------- EV_SYN ------------ 
    Event: time 6435.429599, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 64 
    Event: time 6435.429602, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 786 
    Event: time 6435.429608, type 3 (EV_ABS), code 0 (ABS_X), value 64 
    Event: time 6435.429610, type 3 (EV_ABS), code 1 (ABS_Y), value 786 
    Event: time 6435.429612, -------------- EV_SYN ------------ 
    Event: time 6435.440599, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 54 
    Event: time 6435.440604, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 787 
    Event: time 6435.440610, type 3 (EV_ABS), code 0 (ABS_X), value 54 
    Event: time 6435.440611, type 3 (EV_ABS), code 1 (ABS_Y), value 787 
    Event: time 6435.440613, -------------- EV_SYN ------------ 
    Event: time 6435.451595, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 43 
    Event: time 6435.451602, type 3 (EV_ABS), code 0 (ABS_X), value 43 
    Event: time 6435.451605, -------------- EV_SYN ------------ 
    Event: time 6435.462619, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 32 
    Event: time 6435.462623, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 786 
    Event: time 6435.462629, type 3 (EV_ABS), code 0 (ABS_X), value 32 
    Event: time 6435.462631, type 3 (EV_ABS), code 1 (ABS_Y), value 786 
    Event: time 6435.462633, -------------- EV_SYN ------------ 
    Event: time 6435.472642, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 22 
    Event: time 6435.472648, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 785 
    Event: time 6435.472654, type 3 (EV_ABS), code 0 (ABS_X), value 22 
    Event: time 6435.472656, type 3 (EV_ABS), code 1 (ABS_Y), value 785 
    Event: time 6435.472658, -------------- EV_SYN ------------ 
    Event: time 6435.483646, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 14 
    Event: time 6435.483651, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 783 
    Event: time 6435.483657, type 3 (EV_ABS), code 0 (ABS_X), value 14 
    Event: time 6435.483658, type 3 (EV_ABS), code 1 (ABS_Y), value 783 
    Event: time 6435.483660, -------------- EV_SYN ------------ 
    Event: time 6435.494684, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 8 
    Event: time 6435.494689, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 782 
    Event: time 6435.494697, type 3 (EV_ABS), code 0 (ABS_X), value 8 
    Event: time 6435.494699, type 3 (EV_ABS), code 1 (ABS_Y), value 782 
    Event: time 6435.494701, -------------- EV_SYN ------------ 
    Event: time 6435.504820, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4 
    Event: time 6435.504829, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 781 
    Event: time 6435.504837, type 3 (EV_ABS), code 0 (ABS_X), value 4 
    Event: time 6435.504839, type 3 (EV_ABS), code 1 (ABS_Y), value 781 
    Event: time 6435.504841, -------------- EV_SYN ------------ 
    Event: time 6435.515636, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2 
    Event: time 6435.515640, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 780 
    Event: time 6435.515646, type 3 (EV_ABS), code 0 (ABS_X), value 2 
    Event: time 6435.515648, type 3 (EV_ABS), code 1 (ABS_Y), value 780 
    Event: time 6435.515650, -------------- EV_SYN ------------ 
    Event: time 6435.537672, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 0 
    Event: time 6435.537683, type 3 (EV_ABS), code 0 (ABS_X), value 0 
    Event: time 6435.537686, -------------- EV_SYN ------------ 
    Event: time 6435.600755, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 777 
    Event: time 6435.600766, type 3 (EV_ABS), code 1 (ABS_Y), value 777 
    Event: time 6435.600768, -------------- EV_SYN ------------ 
    Event: time 6435.601836, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1 
    Event: time 6435.601844, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0 
    Event: time 6435.601847, -------------- EV_SYN ------------ 

和(在同一時間)經由XINPUT翻譯的輸出:

 
    ~# xinput test 6 
    motion a[0]=75 a[1]=775 
    button press 1 a[0]=75 a[1]=775 
    motion a[0]=77 a[1]=776 
    motion a[0]=79 a[1]=776 
    motion a[0]=79 a[1]=778 
    motion a[0]=78 a[1]=781 
    motion a[0]=76 a[1]=783 
    motion a[0]=74 a[1]=784 
    motion a[0]=70 a[1]=785 
    motion a[0]=64 a[1]=786 
    motion a[0]=54 a[1]=787 
    motion a[0]=43 a[1]=787 
    motion a[0]=32 a[1]=786 
    motion a[0]=22 a[1]=785 
    motion a[0]=14 a[1]=783 
    motion a[0]=1024 a[1]=1024 
    motion a[0]=8 a[1]=782 
    motion a[0]=1024 a[1]=1024 
    motion a[0]=4 a[1]=781 
    motion a[0]=1024 a[1]=1024 
    motion a[0]=2 a[1]=780 
    motion a[0]=1024 a[1]=1024 
    motion a[0]=0 a[1]=780 
    motion a[0]=1024 a[1]=1024 
    motion a[0]=0 a[1]=777 
    button release 1 a[0]=0 a[1]=777 
    motion a[0]=1024 a[1]=1024 

XINPUT正在輸出位於中心額外移動事件。但只有當我接近觸摸屏的邊緣時。

我在做什麼錯?我應該看什麼? 感謝您的幫助或提示。

回答

0

原因是在同一時間使用的SDL 1.2.15中。默認情況下,它使用鼠標/觸摸事件的相對模式,並顯然發送自己的X11鼠標事件進行更正(「參見motion a [0] = 1024 a [1] = 1024」)。

設置環境變量SDL_MOUSE_RELATIVE = 0修復了此行爲。