10" eGalax USB Touchscreen
USB ID: 0eef:0001
This bug is directly related to bug #21725. The same steps are required to make it work properly. However, there is an additional issue that is unique to this unit.
With this piece of hardware, printing out the value of ev->code in the event handler shows that the X and Y absolute events actually pass code 2 and 3 rather than 0 (ABS_X) and 1 (ABS_Y).
Proper behaviour can be obtained by adding the following block:
if (ev->code == 2)
ev->code = ABS_X;
if (ev->code == 3)
ev->code = ABS_Y;
in evdev.c circa line 400. The EV_ABS block then sets the abs variable and things work out.
This is obviously a hack, but perhaps a better solution can be developed? Perhaps this is a problem with evdev.c or usbtouchpad.c in the kernel?
This change also enables another 10" touchscreen to work.
"TouchPack Resistive Touch Screen"
The X.org log reports this device as "HID TOUCH HID Touch Panel".
This axis situation sounds an awful lot like this issue, albeit with a different X driver:
Sorry, this really needs to be fixed in the kernel. I don't want to hack around broken devices in evdev.