Thread (10 messages) 10 messages, 5 authors, 2013-11-21

Re: [PATCH 0/3] Fixes for multitouch / generic gamepads interaction

From: Henrik Rydberg <hidden>
Date: 2013-11-21 12:56:36
Also in: lkml

Hi Benjamin,
I have been reported recently a problem with the Sixaxis controller
(http://www.spinics.net/lists/linux-input/msg28098.html).
The root of the problem comes from hid-input, which maps unknown axis to
ABS_MISC. However, when an event code is already in use, hid-input uses the one
after, leading to uses of ABS_MISC + N, where N is the number of unknown axis.
Yes, and clearly we should not do that. :-)
We are encountering a problem with the multitouch protocol here because if a
device has more than 7 unknown axis (which is the case for the PS3 Sixaxis
controller), then the unknown axis get maps to ABS_MT_SLOT and beyond.

This infers two problems:
- the axis currently mapped on ABS_MT_SLOT is a special case in the kernel,
and it is not updated
- the axis after ABS_MT_SLOT are not filtered anymore, as the kernel things
the device is using a multitouch protocol A.
The problem is generic, and ABS_MT_SLOT just happens to be the first value that
the hid logic hits. When sevenaxis comes out, we have to do this all over again.
The patch 0001 solves the first problem, whereas the patches 0002 and 0003
fix the second. Bonus point: the userspace is now correctly notified that one of
the multitouch protocols is in used, so it does not have to rely on bad designed
heuristics.
The bad heuristics are lines 918 and onwards in hid-input.c. I am sure we can
come up with a way to allocate those axes in a much less fragile way.

Thanks,
Henrik
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help