* [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event
@ 2010-01-28 22:42 Henrik Rydberg
2010-01-28 22:42 ` [PATCH 2/2] input: mt: update the multi-touch protocol documentation Henrik Rydberg
2010-01-29 6:36 ` [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event Dmitry Torokhov
0 siblings, 2 replies; 3+ messages in thread
From: Henrik Rydberg @ 2010-01-28 22:42 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Andrew Morton, linux-input, linux-kernel, jy0922.shim,
mika.kuoppala, peter.hutterer, Henrik Rydberg
For pressure-based multi-touch devices, a direct way to send sensor
intensity data per finger is needed. This patch adds the ABS_MT_PRESSURE
event to the MT protocol.
Requested-by: Yoonyoung Shim <jy0922.shim@samsung.com>
Requested-by: Mika Kuoppala <mika.kuoppala@nokia.com>
Requested-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
---
drivers/input/input.c | 1 +
include/linux/input.h | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 30b503b..86cb2d2 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -46,6 +46,7 @@ static unsigned int input_abs_bypass_init_data[] __initdata = {
ABS_MT_TOOL_TYPE,
ABS_MT_BLOB_ID,
ABS_MT_TRACKING_ID,
+ ABS_MT_PRESSURE,
0
};
static unsigned long input_abs_bypass[BITS_TO_LONGS(ABS_CNT)];
diff --git a/include/linux/input.h b/include/linux/input.h
index 7be8a65..735ceaf 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -660,6 +660,7 @@ struct input_absinfo {
#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
+#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
#define ABS_MAX 0x3f
#define ABS_CNT (ABS_MAX+1)
--
1.6.3.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] input: mt: update the multi-touch protocol documentation
2010-01-28 22:42 [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event Henrik Rydberg
@ 2010-01-28 22:42 ` Henrik Rydberg
2010-01-29 6:36 ` [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event Dmitry Torokhov
1 sibling, 0 replies; 3+ messages in thread
From: Henrik Rydberg @ 2010-01-28 22:42 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Andrew Morton, linux-input, linux-kernel, jy0922.shim,
mika.kuoppala, peter.hutterer, Henrik Rydberg
This patch documents a new ABS_MT parameter and adds further text to
clarify some points around the MT protocol.
Requested-by: Yoonyoung Shim <jy0922.shim@samsung.com>
Requested-by: Mika Kuoppala <mika.kuoppala@nokia.com>
Requested-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
---
Documentation/input/multi-touch-protocol.txt | 48 +++++++++++++++++++++----
1 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/Documentation/input/multi-touch-protocol.txt b/Documentation/input/multi-touch-protocol.txt
index a12ea3b..8490480 100644
--- a/Documentation/input/multi-touch-protocol.txt
+++ b/Documentation/input/multi-touch-protocol.txt
@@ -27,12 +27,30 @@ set of events/packets.
A set of ABS_MT events with the desired properties is defined. The events
are divided into categories, to allow for partial implementation. The
-minimum set consists of ABS_MT_TOUCH_MAJOR, ABS_MT_POSITION_X and
-ABS_MT_POSITION_Y, which allows for multiple fingers to be tracked. If the
-device supports it, the ABS_MT_WIDTH_MAJOR may be used to provide the size
-of the approaching finger. Anisotropy and direction may be specified with
-ABS_MT_TOUCH_MINOR, ABS_MT_WIDTH_MINOR and ABS_MT_ORIENTATION. The
-ABS_MT_TOOL_TYPE may be used to specify whether the touching tool is a
+minimum set consists of ABS_MT_POSITION_X and ABS_MT_POSITION_Y, which
+allows for multiple fingers to be tracked. If the device supports it, the
+ABS_MT_TOUCH_MAJOR and ABS_MT_WIDTH_MAJOR may be used to provide the size
+of the contact area and approaching finger, respectively.
+
+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. For pressure-based devices,
+ABS_MT_PRESSURE may be used to provide the pressure on the contact area
+instead.
+
+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.
+
+The ABS_MT_TOOL_TYPE may be used to specify whether the touching tool is a
finger or a pen or something else. Devices with more granular information
may specify general shapes as blobs, i.e., as a sequence of rectangular
shapes grouped together by an ABS_MT_BLOB_ID. Finally, for the few devices
@@ -42,11 +60,9 @@ report finger tracking from hardware [5].
Here is what a minimal event sequence for a two-finger touch would look
like:
- ABS_MT_TOUCH_MAJOR
ABS_MT_POSITION_X
ABS_MT_POSITION_Y
SYN_MT_REPORT
- ABS_MT_TOUCH_MAJOR
ABS_MT_POSITION_X
ABS_MT_POSITION_Y
SYN_MT_REPORT
@@ -87,6 +103,12 @@ the contact. The ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR approximates
the notion of pressure. The fingers of the hand and the palm all have
different characteristic widths [1].
+ABS_MT_PRESSURE
+
+The pressure, in arbitrary units, on the contact area. May be used instead
+of TOUCH and WIDTH for pressure-based devices or any device with a spatial
+signal intensity distribution.
+
ABS_MT_ORIENTATION
The orientation of the ellipse. The value should describe a signed quarter
@@ -170,6 +192,16 @@ There are a few devices that support trackingID in hardware. User space can
make use of these native identifiers to reduce bandwidth and cpu usage.
+Gestures
+--------
+
+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.
+
+
Notes
-----
--
1.6.3.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event
2010-01-28 22:42 [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event Henrik Rydberg
2010-01-28 22:42 ` [PATCH 2/2] input: mt: update the multi-touch protocol documentation Henrik Rydberg
@ 2010-01-29 6:36 ` Dmitry Torokhov
1 sibling, 0 replies; 3+ messages in thread
From: Dmitry Torokhov @ 2010-01-29 6:36 UTC (permalink / raw)
To: Henrik Rydberg
Cc: Andrew Morton, linux-input, linux-kernel, jy0922.shim,
mika.kuoppala, peter.hutterer
On Thu, Jan 28, 2010 at 11:42:48PM +0100, Henrik Rydberg wrote:
> For pressure-based multi-touch devices, a direct way to send sensor
> intensity data per finger is needed. This patch adds the ABS_MT_PRESSURE
> event to the MT protocol.
>
> Requested-by: Yoonyoung Shim <jy0922.shim@samsung.com>
> Requested-by: Mika Kuoppala <mika.kuoppala@nokia.com>
> Requested-by: Peter Hutterer <peter.hutterer@who-t.net>
> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Both applied, thank you Henrik.
--
Dmitry
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-01-29 6:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-28 22:42 [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event Henrik Rydberg
2010-01-28 22:42 ` [PATCH 2/2] input: mt: update the multi-touch protocol documentation Henrik Rydberg
2010-01-29 6:36 ` [PATCH 1/2] input: mt: add the ABS_MT_PRESSURE event Dmitry Torokhov
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).