From: Chase Douglas <chase.douglas@canonical.com>
To: Henrik Rydberg <rydberg@euromail.se>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Daniel Kurtz <djkurtz@chromium.org>,
rubini@cvml.unipv.it, linux-input@vger.kernel.org,
linux-kernel@vger.kernel.org, derek.foreman@collabora.co.uk,
daniel.stone@collabora.co.uk, olofj@chromium.org
Subject: Re: [PATCH 09/12] Input: synaptics - add image sensor support
Date: Wed, 06 Jul 2011 16:30:12 -0700 [thread overview]
Message-ID: <4E14F004.5010408@canonical.com> (raw)
In-Reply-To: <20110706223521.GA4335@polaris.bitmath.org>
On 07/06/2011 03:35 PM, Henrik Rydberg wrote:
>> The evdev protocol is discrete, not continuous, so it's theoretically
>> possible that one touch could end at the same time that another begins.
>> IIRC, the time resolution of some MT devices makes this completely
>> possible, perhaps to the point that it would be trival to make this
>> happen in a few seconds of trying.
>>
>> I think the MT-B protocol has only ever used tracking_id for signalling
>> touch begin and touch end, where the id goes from -1 to something else
>> and vice versa. Maybe the protocol could be "extended" by saying that a
>> transition from one valid id to another means there is inconsistent
>> touch state, but the old touch hasn't necessarily ended and the new
>> touch hasn't necessarily started at this point in time.
>
> The in-flight change of tracking id is actually part of the design; it
> makes the protocol independent of sample rate. If a particular
> tracking id is no longer found in any slot, that touch has ended.
Ok. I agree that this is the best way to handle things.
It does mean that we can't just change tracking_ids when the number of
touches changes, so that option is out.
>> I'm not sure this is any easier than flagging these as bad devices
>> because now we need to watch tracking ID changes on top of touch count
>> changes. From someone who has attempted to implement semi-mt in X
>> synaptics, adding more complexity here should be avoided at all cost :).
>
> The information available in the proposition suffices to determine
> what the device is. Surely the method of transferring that information
> will not have any impact on the extra code required.
My (unstated) question was: is watching tracking_id transitions
reasonable for noting inconsistent touch changes when the number of
touches changes, or should we have a way to tell if a device is broken
and we must assume touch state inconsistency when the finger count
changes. Given your reply above that we cannot repurpose valid
tracking_id -> valid tracking_id transitions as a means of denoting
touch state inconsistency, that leaves us with the latter option.
You're right that the information available from the axes is enough to
tell if the device is broken (i.e. if max finger count > max slot count).
Ancillary to this is the question of whether we should depend on the
userspace side knowing this hidden meaning, or if we should state it up
front by setting a separate flag in the properties bits. I really don't
want to leave this up to userspace developers having to figure out or
dive into kernel code to determine what is going on, so I'm in favor of
having an explicit (documented!) property flag for these devices. Why
have property bits if you aren't going to use them :).
>>> I'll ask this - how much realistically do we care about 3+ finger
>>> transitions in context of these particular devices? This is a touchpad
>>> so as long as basic 2 finger gestures work (zoom, pinch, 2-finger
>>> scroll) with Synaptics X driver we should be fine. I do not want to add
>>> all kinds of custom flags to the protocol to deal with this generation
>>> of touchpads.
>>
>> I've given up on trying to send semi-mt data through the proposed XInput
>> 2.1 multitouch protocol. I think the best option is to send all this
>> data as valuators of a single touch (a touch and not a traditional
>> pointer event due to the multitouch/gesture semantics). Thus, we should
>> be focusing on what is possible in the gesture realm since we have
>> thrown full multiouch out the window for these devices.
>>
>> With these devices we can support one touch drag, two touch pinch,
>> rotate, and zoom, and 1-5 touch tap. For these to work, we need to know
>> the number of touches at any given time, the locations of the two
>> touches when only two touches are active, and some representative
>> location for the 1 and 3-5 touch cases.
>
> Right, and we do, so there is no problem there, is there?
Agreed, there is no problem if we go with the assumption that for these
devices the touch slot data is inconsistent on touch count changes.
I am satisfied with the approach that's been laid out, the only point of
contention is whether userspace must infer touch state inconsistency on
touch count changes by looking at max fingers and max slots, or if we
provide this detail as a device property.
-- Chase
next prev parent reply other threads:[~2011-07-06 23:30 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-29 5:07 [PATCH 00/12] Synaptics image sensor support djkurtz
2011-06-29 5:07 ` [PATCH 01/12] Input: synaptics - cleanup 0x0c query documentation djkurtz
2011-07-05 17:33 ` Chase Douglas
2011-07-06 13:50 ` Daniel Kurtz
2011-07-07 6:30 ` Dmitry Torokhov
2011-06-29 5:07 ` [PATCH 02/12] Input: synaptics - do not invert y if 0 djkurtz
2011-07-04 21:08 ` Henrik Rydberg
2011-07-05 4:29 ` Daniel Kurtz
2011-07-05 18:07 ` Henrik Rydberg
2011-07-05 18:39 ` Chris Bagwell
2011-07-05 23:02 ` Daniel Kurtz
2011-07-05 17:42 ` Chase Douglas
2011-07-05 22:50 ` Daniel Kurtz
2011-07-05 23:06 ` Chase Douglas
2011-07-05 23:15 ` Daniel Kurtz
2011-07-05 23:25 ` Dmitry Torokhov
2011-06-29 5:07 ` [PATCH 03/12] Input: synaptics - fix minimum reported ABS_TOOL_WIDTH djkurtz
2011-06-29 13:28 ` Chris Bagwell
2011-06-29 16:48 ` Daniel Kurtz
2011-06-29 19:46 ` Chris Bagwell
2011-07-04 21:14 ` Henrik Rydberg
2011-07-09 6:24 ` Jeffrey Brown
2011-06-29 5:07 ` [PATCH 04/12] Input: synaptics - set resolution for MT_POSITION_X/Y axes djkurtz
2011-07-05 17:44 ` Chase Douglas
2011-07-07 6:23 ` Dmitry Torokhov
2011-06-29 5:07 ` [PATCH 05/12] Input: synaptics - process button bits in AGM packets djkurtz
2011-07-04 21:24 ` Henrik Rydberg
2011-07-05 4:38 ` Daniel Kurtz
2011-07-05 18:18 ` Henrik Rydberg
2011-07-05 18:19 ` Chase Douglas
2011-07-05 17:47 ` Chase Douglas
2011-07-07 6:24 ` Dmitry Torokhov
2011-06-29 5:07 ` [PATCH 06/12] Input: synaptics - fuzz position if touchpad reports reduced filtering djkurtz
2011-07-05 17:49 ` Chase Douglas
2011-07-07 6:25 ` Dmitry Torokhov
2011-06-29 5:07 ` [PATCH 07/12] Input: synaptics - rename synaptics_data.mt to agm djkurtz
2011-07-04 21:26 ` Henrik Rydberg
2011-07-05 4:39 ` Daniel Kurtz
2011-07-05 18:20 ` Henrik Rydberg
2011-07-05 17:53 ` Chase Douglas
2011-06-29 5:07 ` [PATCH 08/12] Input: synaptics - rename set_slot to be more descriptive djkurtz
2011-07-05 17:54 ` Chase Douglas
2011-07-07 6:27 ` Dmitry Torokhov
2011-06-29 5:07 ` [PATCH 09/12] Input: synaptics - add image sensor support djkurtz
2011-07-04 21:42 ` Henrik Rydberg
2011-07-05 5:08 ` Daniel Kurtz
2011-07-05 19:27 ` Henrik Rydberg
2011-07-06 16:41 ` Daniel Kurtz
2011-07-06 17:08 ` Chase Douglas
2011-07-06 17:45 ` Dmitry Torokhov
2011-07-06 18:47 ` Henrik Rydberg
2011-07-06 18:58 ` Dmitry Torokhov
2011-07-06 19:31 ` Henrik Rydberg
2011-07-06 20:00 ` Dmitry Torokhov
2011-07-06 20:20 ` Henrik Rydberg
2011-07-06 21:22 ` Chase Douglas
2011-07-06 21:36 ` Dmitry Torokhov
2011-07-06 22:16 ` Chase Douglas
2011-07-06 22:35 ` Henrik Rydberg
2011-07-06 23:30 ` Chase Douglas [this message]
2011-06-29 5:07 ` [PATCH 10/12] Input: synaptics - decode AGM packet types djkurtz
2011-06-29 10:02 ` Chase Douglas
2011-06-29 10:07 ` Daniel Stone
2011-06-29 10:32 ` Chase Douglas
2011-06-29 11:26 ` Daniel Kurtz
2011-06-29 11:04 ` Daniel Kurtz
2011-07-05 18:17 ` Chase Douglas
2011-07-05 18:55 ` Chris Bagwell
2011-07-06 16:53 ` Daniel Kurtz
2011-06-29 5:07 ` [PATCH 11/12] Input: synaptics - process finger (<=3) transitions djkurtz
2011-06-29 5:07 ` [PATCH 12/12] Input: synaptics - process finger (<=5) transitions djkurtz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E14F004.5010408@canonical.com \
--to=chase.douglas@canonical.com \
--cc=daniel.stone@collabora.co.uk \
--cc=derek.foreman@collabora.co.uk \
--cc=djkurtz@chromium.org \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=olofj@chromium.org \
--cc=rubini@cvml.unipv.it \
--cc=rydberg@euromail.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).