* Re: Questions about Multi-touch Protocal
2010-01-05 12:08 ` Henrik Rydberg
@ 2010-01-05 12:42 ` Florian Echtler
2010-01-05 12:55 ` Henrik Rydberg
2010-01-05 17:49 ` Dmitry Torokhov
2010-01-06 0:49 ` Joonyoung Shim
2 siblings, 1 reply; 9+ messages in thread
From: Florian Echtler @ 2010-01-05 12:42 UTC (permalink / raw)
To: Henrik Rydberg; +Cc: Joonyoung Shim, linux-input, dmitry.torokhov, jkosina
> The TOUCH and WIDTH parameters have a geometrical interpretation; imagine
> looking through a window at someone gently holding a finger against the glass.
> You will see two regions, one inner region consisting of the part of the finger
> actually touching the glass, and one outer region formed by the perimeter of the
> finger. The diameter of the inner region is the ABS_MT_TOUCH_MAJOR, the diameter
> of the outer region is ABS_MT_WIDTH_MAJOR. Now imagine the person pressing the
> finger harder against the glass. The inner region will increase, and in general,
> the ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller than
> unity, is related to the finger pressure.
> In addition to the MAJOR parameters, the oval shape of the finger can be
> described by adding the MINOR parameters, such that MAJOR and MINOR are the
> major and minor axis of an ellipse. Finally, the orientation of the oval shape
> can be describe with the ORIENTATION parameter.
> Hope this explains it a bit further.
Very interesting writeup, thanks a lot. Is there any currently any
hardware which is available to end-users and does support these
features? AFAIR most capacitive touchscreens don't have high enough
resolution to actually detect, e.g., twisting. If there's a commercial
option, I'd like to hear about it..
Florian
--
0666 - Filemode of the Beast
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Questions about Multi-touch Protocal
2010-01-05 12:42 ` Florian Echtler
@ 2010-01-05 12:55 ` Henrik Rydberg
0 siblings, 0 replies; 9+ messages in thread
From: Henrik Rydberg @ 2010-01-05 12:55 UTC (permalink / raw)
To: Florian Echtler; +Cc: Joonyoung Shim, linux-input, dmitry.torokhov, jkosina
Florian Echtler wrote:
[..]
> Very interesting writeup, thanks a lot. Is there any currently any
> hardware which is available to end-users and does support these
> features? AFAIR most capacitive touchscreens don't have high enough
> resolution to actually detect, e.g., twisting. If there's a commercial
> option, I'd like to hear about it..
The post-2008 MacBooks all have a touchpad (bcm5974) which is capable of
detecting finger twisting. A patch to enable the MT protocol in the bcm5974
driver is on it's way into the 2.6.33 kernel.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Questions about Multi-touch Protocal
2010-01-05 12:08 ` Henrik Rydberg
2010-01-05 12:42 ` Florian Echtler
@ 2010-01-05 17:49 ` Dmitry Torokhov
2010-01-06 0:49 ` Joonyoung Shim
2 siblings, 0 replies; 9+ messages in thread
From: Dmitry Torokhov @ 2010-01-05 17:49 UTC (permalink / raw)
To: Henrik Rydberg; +Cc: Joonyoung Shim, linux-input, jkosina
On Tue, Jan 05, 2010 at 01:08:59PM +0100, Henrik Rydberg wrote:
> Hi Joonyoung,
>
> > I have some questions about Multi-touch(MT) Protocal.
>
> Let me start by answering your last question:
>
> > Finally, what is difference of ABS_MT_TOUCH_MAJOR and
> > ABS_MT_WIDTH_MAJOR?
>
> The TOUCH and WIDTH parameters have a geometrical interpretation; imagine
> looking through a window at someone gently holding a finger against the glass.
> You will see two regions, one inner region consisting of the part of the finger
> actually touching the glass, and one outer region formed by the perimeter of the
> finger. The diameter of the inner region is the ABS_MT_TOUCH_MAJOR, the diameter
> of the outer region is ABS_MT_WIDTH_MAJOR. Now imagine the person pressing the
> finger harder against the glass. The inner region will increase, and in general,
> the ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller than
> unity, is related to the finger pressure.
>
> In addition to the MAJOR parameters, the oval shape of the finger can be
> described by adding the MINOR parameters, such that MAJOR and MINOR are the
> major and minor axis of an ellipse. Finally, the orientation of the oval shape
> can be describe with the ORIENTATION parameter.
>
> > First, what is the purpose of ABS_MT_TOUCH_MAJOR event? I wonder how
> > it is used at userspace side.
>
> In a graphical program it can of course be used as is, but in the specific
> application of creating gesture events, the TOUCH and WIDTH parameters can be
> used to, e.g., approximate finger pressure or distinguish between index finger
> and thumb. With the addition of the MINOR parameters, one can also distinguish
> between a sweeping finger and a pointing finger, and with ORIENTATION, one can
> detect twisting of fingers.
>
> > Should the ABS_MT_TOUCH_MAJOR be the mininum set of events for multi
> > touch? I'm not sure whether this question is valid because of first
> > question.
>
> Each finger packet should have an ABS_MT_TOUCH_MAJOR value. In can be computed
> from various types of sensory input, e.g., the size of the contact area or a
> pressure sensor.
>
> Hope this explains it a bit further.
>
Very nice explanation, Henrik. Any chance you could turn it into a patch
to Documentation/input/multi-touch-protocol.txt?
--
Dmitry
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Questions about Multi-touch Protocal
2010-01-05 12:08 ` Henrik Rydberg
2010-01-05 12:42 ` Florian Echtler
2010-01-05 17:49 ` Dmitry Torokhov
@ 2010-01-06 0:49 ` Joonyoung Shim
2010-01-13 20:21 ` Henrik Rydberg
2010-01-13 22:25 ` Peter Hutterer
2 siblings, 2 replies; 9+ messages in thread
From: Joonyoung Shim @ 2010-01-06 0:49 UTC (permalink / raw)
To: Henrik Rydberg; +Cc: linux-input, dmitry.torokhov, jkosina
On 1/5/2010 9:08 PM, Henrik Rydberg wrote:
> Hi Joonyoung,
>
>> I have some questions about Multi-touch(MT) Protocal.
>
> Let me start by answering your last question:
>
>> Finally, what is difference of ABS_MT_TOUCH_MAJOR and
>> ABS_MT_WIDTH_MAJOR?
>
> The TOUCH and WIDTH parameters have a geometrical interpretation; imagine
> looking through a window at someone gently holding a finger against the glass.
> You will see two regions, one inner region consisting of the part of the finger
> actually touching the glass, and one outer region formed by the perimeter of the
> finger. The diameter of the inner region is the ABS_MT_TOUCH_MAJOR, the diameter
> of the outer region is ABS_MT_WIDTH_MAJOR. Now imagine the person pressing the
> finger harder against the glass. The inner region will increase, and in general,
> the ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller than
> unity, is related to the finger pressure.
>
Aha, i understand :)
> In addition to the MAJOR parameters, the oval shape of the finger can be
> described by adding the MINOR parameters, such that MAJOR and MINOR are the
> major and minor axis of an ellipse. Finally, the orientation of the oval shape
> can be describe with the ORIENTATION parameter.
>
>> First, what is the purpose of ABS_MT_TOUCH_MAJOR event? I wonder how
>> it is used at userspace side.
>
> In a graphical program it can of course be used as is, but in the specific
> application of creating gesture events, the TOUCH and WIDTH parameters can be
> used to, e.g., approximate finger pressure or distinguish between index finger
> and thumb. With the addition of the MINOR parameters, one can also distinguish
> between a sweeping finger and a pointing finger, and with ORIENTATION, one can
> detect twisting of fingers.
>
>> Should the ABS_MT_TOUCH_MAJOR be the mininum set of events for multi
>> touch? I'm not sure whether this question is valid because of first
>> question.
>
> Each finger packet should have an ABS_MT_TOUCH_MAJOR value. In can be computed
> from various types of sensory input, e.g., the size of the contact area or a
> pressure sensor.
>
Hmm, I think ABS_MT_TOUCH_MAJOR is similar to ABS_PRESSURE, of course it
can be used other purposes. If the device doesn't support the pressure,
the driver doesn't report ABS_PRESSURE, so if the device cannot get a
touching size of the finger, how can the driver report it?
The ABS_MT_TOUCH_MAJOR needs for several things as you explain, but i
think it isn't essential event for multi-touch such ABS_PRESSURE.
If we can get only the coodinates of each fingers, is it full enough for
minimum supporting of multi-touch?
Thanks for explanation.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Questions about Multi-touch Protocal
2010-01-06 0:49 ` Joonyoung Shim
@ 2010-01-13 20:21 ` Henrik Rydberg
2010-01-13 22:25 ` Peter Hutterer
1 sibling, 0 replies; 9+ messages in thread
From: Henrik Rydberg @ 2010-01-13 20:21 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: linux-input, dmitry.torokhov, jkosina
Joonyoung Shim wrote:
[..]
>
> The ABS_MT_TOUCH_MAJOR needs for several things as you explain, but i
> think it isn't essential event for multi-touch such ABS_PRESSURE.
> If we can get only the coodinates of each fingers, is it full enough for
> minimum supporting of multi-touch?
Yes, it will be fine, one can drop ABS_MT_TOUCH_MAJOR for minimal support of the
MT protocol. I will change the documentation accordingly.
Henrik
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Questions about Multi-touch Protocal
2010-01-06 0:49 ` Joonyoung Shim
2010-01-13 20:21 ` Henrik Rydberg
@ 2010-01-13 22:25 ` Peter Hutterer
2010-01-14 0:35 ` Henrik Rydberg
1 sibling, 1 reply; 9+ messages in thread
From: Peter Hutterer @ 2010-01-13 22:25 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: Henrik Rydberg, linux-input, dmitry.torokhov, jkosina
On Wed, Jan 06, 2010 at 09:49:58AM +0900, Joonyoung Shim wrote:
> >> First, what is the purpose of ABS_MT_TOUCH_MAJOR event? I wonder how
> >> it is used at userspace side.
> >
> > In a graphical program it can of course be used as is, but in the specific
> > application of creating gesture events, the TOUCH and WIDTH parameters can be
> > used to, e.g., approximate finger pressure or distinguish between index finger
> > and thumb. With the addition of the MINOR parameters, one can also distinguish
> > between a sweeping finger and a pointing finger, and with ORIENTATION, one can
> > detect twisting of fingers.
> >
> >> Should the ABS_MT_TOUCH_MAJOR be the mininum set of events for multi
> >> touch? I'm not sure whether this question is valid because of first
> >> question.
> >
> > Each finger packet should have an ABS_MT_TOUCH_MAJOR value. In can be computed
> > from various types of sensory input, e.g., the size of the contact area or a
> > pressure sensor.
> >
>
> Hmm, I think ABS_MT_TOUCH_MAJOR is similar to ABS_PRESSURE, of course it
> can be used other purposes. If the device doesn't support the pressure,
> the driver doesn't report ABS_PRESSURE, so if the device cannot get a
> touching size of the finger, how can the driver report it?
Note that ABS_MT_TOUCH_MAJOR complements ABS_PRESSURE but cannot substitute
it. The nature of our fingures usually mean that with increasing pressure
the touch size increases as the finger flattens. This is only useful as a
relative indicator though, as fingers differ greatly in size.
Cheers,
Peter
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Questions about Multi-touch Protocal
2010-01-13 22:25 ` Peter Hutterer
@ 2010-01-14 0:35 ` Henrik Rydberg
0 siblings, 0 replies; 9+ messages in thread
From: Henrik Rydberg @ 2010-01-14 0:35 UTC (permalink / raw)
To: Peter Hutterer; +Cc: Joonyoung Shim, linux-input, dmitry.torokhov, jkosina
Peter Hutterer wrote:
[..]
> Note that ABS_MT_TOUCH_MAJOR complements ABS_PRESSURE but cannot substitute
> it. The nature of our fingures usually mean that with increasing pressure
> the touch size increases as the finger flattens. This is only useful as a
> relative indicator though, as fingers differ greatly in size.
Ok, in my book this makes the third voice for an ABS_MT_PRESSURE parameter, so
it should most likely be added. I will write a patch for it.
Cheers,
Henrik
^ permalink raw reply [flat|nested] 9+ messages in thread