evdev: workaround for missing ABS_X/Y on multitouch devices (mostly Android)
Colin Macdonald
macdonald at maths.ox.ac.uk
Tue Jun 24 02:47:14 PDT 2014
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I filed this as
[https://bugs.freedesktop.org/show_bug.cgi?id=80470]. But perhaps
worthy of maillist discussion...
1) The Kernel spec says multitouch devices should give ABS_X and
ABS_Y events as well as ABS_MT_POSITION_X.
[http://lists.x.org/archives/xorg/2013-July/055823.html]
[https://bugs.freedesktop.org/show_bug.cgi?id=64029]
2) Many drivers (maybe even most?) for Android devices don't give
ABS_X. I've personally played with Note 8 (synaptics_s7301
touchscreen driver), Nexus 5 (synaptics RMI4 drivder). I've looked
at several other drivers (various Atmel MaXTouch, there is a
mainline atmel_mxt_ts driver which does the right thing but seems
devices often use older mxt224 drivers...).
3) Its not clear if many drivers are destined for mainline (Android
looks like a fragmented and horrid dev scene compared to GNU/Linux).
The device turnover is so fast.
4) The cause here is probably the Android docs:
https://source.android.com/devices/tech/input/touch-devices.html#touch-device-classification
which suggest (or at least imply) its OK for multitouch to not give
ABS_X.
5) Fixing these upstream is a noble goal but difficult to have much
impact---I've grabbed the cyanogenmod sources for my Note 8 and
Nexus 5 with the thought to to look into doing this. But even if I
fix these two drivers, it is not likely to reach many people.
6) Its much easier to compile a new xf86-input-evdev than to
recompile and replace an Android OS. For example, I have a standard
Fedora 20 in a chroot on my devices, which can talk to the
framebuffer, even with (essentially) the out-of-box OS (called "ROM"
in Android community)... Pen works great, just no touchscreen b/c
of this.
- ----------------------
Given the above, I think it might be more pragmatic to work around
the the ABS_X issue. We could still give a (WW) warning (instead of
an error) pointing out its contrary to kernel spec.
I'm hopeful that such a workaround would involve changes only to
evdev.c. Please advise if you think that's not the case (so I can
decide whether to tackle this or 5) above).
thanks,
Colin
- --
Colin Macdonald
University Lecturer in Numerical Methodologies
Tutorial Fellow at Oriel College
University of Oxford
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJTqUkhAAoJEAzlCRPFMm7lsmEH/2j+Ywed9fH1I9GkBcxgoov+
UuCm+MQGAcTFIvbnZu6ETPehzz5fVRMz5GkU8DGGzPjJFuqE9hzEZ/oanM8jB7Ac
ei0CQz3vod7es78lgq1T/fzSS6+fuJBkrz+5Hr4ENXh9OzaAmkVy6bsawRZMAAmX
A/Qkpukm4TdnYatkGgcNYGi/VXqRA95pYXG8ocZg5IWifxZuCQGIIsBuTp+cjIFk
I7bsFPfRYRMtNzt/aPUtGc4d/MEFmyvSMGNvaKD0SrNnn/qg8Fg9XeSVVMmK2yS5
qm84RswgDdzJY95T+FFF3vV152oTU7RiYX5yCijn+sY3qmWsNli3PWhlWTZ7OeU=
=p41R
-----END PGP SIGNATURE-----
More information about the xorg-devel
mailing list