摘自
   
    source file itself
   
   :
  
  #define ABS_MT_POSITION_X   0x35    /* Center X ellipse position */
#define ABS_MT_POSITION_Y   0x36    /* Center Y ellipse position */
因此,当我得到一个输出。
/dev/input/event2: 0003 0039 00000cc7
/dev/input/event2: 0001 014a 00000001
/dev/input/event2: 0001 0145 00000001
/dev/input/event2: 0003 0035 00000a2d  //<---- X coordinate
/dev/input/event2: 0003 0036 00000e6c  //<---- Y coordinate
/dev/input/event2: 0003 0030 00000008
/dev/input/event2: 0003 0031 00000008
/dev/input/event2: 0003 003e 0001017e
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 003e 00000000
/dev/input/event2: 0003 0039 ffffffff
/dev/input/event2: 0001 014a 00000000
/dev/input/event2: 0001 0145 00000000
/dev/input/event2: 0000 0000 00000000
a2d的十进制是2605,e6c是3692。这个位置,实际上是屏幕上的(670,2141)。我怎样才能把getevent的坐标转换成实际可用的坐标。
另外,"中心X椭圆位置 "和 "中心Y椭圆位置 "到底是什么意思?
希望得到任何帮助。
编辑:我触摸了屏幕的右下方,getevent的输出是。
/dev/input/event2: EV_ABS       ABS_MT_TRACKING_ID   00000d4f
/dev/input/event2: EV_KEY       BTN_TOUCH            DOWN
/dev/input/event2: EV_KEY       BTN_TOOL_FINGER      DOWN
/dev/input/event2: EV_ABS       ABS_MT_POSITION_X    00000f86 #<---X coordinate
/dev/input/event2: EV_ABS       ABS_MT_POSITION_Y    00000f9d //<---Y coordinate
/dev/input/event2: EV_ABS       003e                 0001017e
/dev/input/event2: EV_SYN       SYN_REPORT           00000000
/dev/input/event2: EV_ABS       003e                 00000000
/dev/input/event2: EV_ABS       ABS_MT_TRACKING_ID   ffffffff
/dev/input/event2: EV_KEY       BTN_TOUCH            UP
/dev/input/event2: EV_KEY       BTN_TOOL_FINGER      UP
/dev/input/event2: EV_SYN       SYN_REPORT           00000000
这里,f86 = 3974和f9d = 3997。而屏幕的实际尺寸约为(1057,2366)(大约)。
所以我想,也许它只是使用比例,而不是实际值。所以基本上,如果我们做(getevent给出的坐标/getevent的最大坐标大小)*(实际坐标大小),我们可能会得到正确的值。
而我正是这样做的,并得到了正确的数值。替换代码11】和(3692/3997)*2366 = 2185,都接近实际值。
所以现在的问题是,画布的大小是否总是等于(4000,4000)?
    1 个回答
0 人赞同
为了将getevent提供的X、Y坐标用于input tap x y,我们需要做以下事情。