evdev should try to always report all ABS_? axis (patch included)
Submitted by Éric Brunet
Assigned to Peter Hutterer @whot
Description
Created attachment 104059 Try hard to report all the valuators at the same time
I have a HP ElitBook Revolve 810 with an HP executive (actually registrering as an Atmel maXTouch Digitizer Pen). I am running an up-to-date Fedora 20 on this box.
My pen has numerous problems making it unusable, and I am trying to make it work. One of these problems is that the device sometimes only report ABS_X or ABS_Y without the other coordinate before a SYNC event. Some application try to cope with it, and some fail miserably. Even the applications that try to compensate by remembering the other coordinate may fail, and it would be much better if all the coordinates were sent to the applications.
Arguably, this could be fixed in the kernel, but it seems very easy to fix in the evdev driver. I have attached a patch which works for me. It works by using the values in the old_vals valuators if some values are missing in the current valuators.
Nota: this patch alone is not enough to make my pen work. There is a patch on the kernel-input mailing list to fix another problem in the kernel, and with these two pathes it is nearly usable, but only nearly: there is a third problem for which I'll open another bug report.
Attachment 104059, "Try hard to report all the valuators at the same time":
evdev.report_all_valuators.patch