Taken from the source file itself:
#define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
So when I get an output:
/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
to decimal is 2605 and e6c
is 3692. The position, actually was (670,2141)
on the screen. How can I convert the getevent
coordinates to actual usable coordinates.
Plus, what exactly does "Center X ellipse position" and "Center Y ellipse position" mean?
Any help is appreciated.
EDIT: I touched the right bottom of the screen and the getevent
output was:
/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
Here, f86 = 3974
and f9d = 3997
. And the actual size of the screen is around (1057,2366)
(approximately).
So I thought maybe it just uses proportions, instead of actual values. So basically if we do (co-ordinate given by getevent/ max coordinate size for getevent) * (Actual coordinate size), we might get the correct value.
And I did exactly that, and got correct values. (2905/3974)*1057 = 692
and (3692/3997)*2366 = 2185
, both of which are close to the actual values.
So now the question becomes, is the canvas size always equal to (4000,4000)?