evdev driver issue - only getting y-axis events

Toby Collett tcollett+lists at plan9.net.nz
Sun Jun 25 20:40:12 PDT 2006

I have a touchscreen input device
I: Bus=0003 Vendor=0000 Product=ffff Version=0100
N: Name="Nextwindow Touchscreen"
P: Phys=usb-0000:00:1d.0-2/input0
S: Sysfs=/class/input/input0
H: Handlers=event0 js0
B: EV=b
B: KEY=70000 0 0 0 0 0 0 0 0
B: ABS=3

There appears to be a 'bug' in the evdev xorg input driver, our device 
generally only responds in the Y-Axis with X-Axis updates being skipped 
99% of the time.

I have managed to 'fix' the driver by messing around with the source, by 
turning off the double buffering of the input, specifically changing 
line 201 and 268 in evdev_axes.c from
n = state->abs->n & 1;
n = 0;

I think what is happening is that the sequence indicator with our device 
is being incremented every packet rather than sending the packets in 
pairs, and as such the xaxis values end up in a different buffer from 
the y axis values, so only the y-axis updates appear in the x server.

Im not sure what the correct fix is for this as I am unsure what the 
purpose of the double buffer is (calculating relative movement?)

Anway, I hope this means something to one of the developers, Ill try 
answer any questions as best I can,

Toby Collett

X Window System Version 7.0.0
Release Date: 21 December 2005
X Protocol Version 11, Revision 0, Release 7.0
Build Operating System:Linux 2.6.12 i686
Current Operating System: Linux gin 2.6.15-25-686 #1 SMP PREEMPT Wed Jun 
14 11:34:19 UTC 2006 i686
Build Date: 16 March 2006

evdev module was updated to the CVS version, same behaviour

More information about the xorg mailing list