linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Henrik Rydberg <rydberg@euromail.se>
To: Joonyoung Shim <jy0922.shim@samsung.com>
Cc: linux-input@vger.kernel.org, dmitry.torokhov@gmail.com, jkosina@suse.cz
Subject: Re: Questions about Multi-touch Protocal
Date: Tue, 05 Jan 2010 13:08:59 +0100	[thread overview]
Message-ID: <4B432BDB.3000103@euromail.se> (raw)
In-Reply-To: <4B42D998.4050303@samsung.com>

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.


  reply	other threads:[~2010-01-05 12:25 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-05  6:18 Questions about Multi-touch Protocal Joonyoung Shim
2010-01-05 12:08 ` Henrik Rydberg [this message]
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

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=4B432BDB.3000103@euromail.se \
    --to=rydberg@euromail.se \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jkosina@suse.cz \
    --cc=jy0922.shim@samsung.com \
    --cc=linux-input@vger.kernel.org \
    /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).