linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Questions about Multi-touch Protocal
@ 2010-01-05  6:18 Joonyoung Shim
  2010-01-05 12:08 ` Henrik Rydberg
  0 siblings, 1 reply; 9+ messages in thread
From: Joonyoung Shim @ 2010-01-05  6:18 UTC (permalink / raw)
  To: linux-input; +Cc: rydberg, dmitry.torokhov, jkosina

Hi, all.

I have some questions about Multi-touch(MT) Protocal.

First, what is the purpose of ABS_MT_TOUCH_MAJOR event? I wonder how
it is used at userspace side.

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.

Finally, what is difference of ABS_MT_TOUCH_MAJOR and
ABS_MT_WIDTH_MAJOR?

I read the MT Protocol document of kernel, but i cannot understand above
things clearly.

Thanks.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Questions about Multi-touch Protocal
  2010-01-05  6:18 Questions about Multi-touch Protocal Joonyoung Shim
@ 2010-01-05 12:08 ` Henrik Rydberg
  2010-01-05 12:42   ` Florian Echtler
                     ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Henrik Rydberg @ 2010-01-05 12:08 UTC (permalink / raw)
  To: Joonyoung Shim; +Cc: linux-input, dmitry.torokhov, jkosina

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.


^ 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 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

end of thread, other threads:[~2010-01-14  0:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-05  6:18 Questions about Multi-touch Protocal Joonyoung Shim
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
2010-01-13 20:21     ` Henrik Rydberg
2010-01-13 22:25     ` Peter Hutterer
2010-01-14  0:35       ` Henrik Rydberg

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).