summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChase Douglas <chase.douglas@canonical.com>2011-08-05 14:20:05 -0700
committerChase Douglas <chase.douglas@canonical.com>2011-08-05 14:45:34 -0700
commit3172e3c52eb45e4830d85ae53888d0b28c13df62 (patch)
tree8699dc3de739d42087d00f6165c291e5a1ac3555
parentb15ad6e0dc1759e514c998eecd7e61b25308add6 (diff)
Fix up pointer event emulation section
* Wording cleanups for tense and to make some sentences flow better. * Upon further review, it does seem to make more sense to deliver emulated pointer events through the same slave device rather than the master device. Thus, slave devices (including floating devices) may emit emulated pointer events. * Peter is correct, it doesn't make sense to set the PointerEmulated flag on touch events. Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--XI2.h3
-rw-r--r--specs/XI2proto.txt59
2 files changed, 22 insertions, 40 deletions
diff --git a/XI2.h b/XI2.h
index 4b3c275..4d8380f 100644
--- a/XI2.h
+++ b/XI2.h
@@ -158,8 +158,7 @@
/* Device event flags (pointer events only) */
#define XIPointerEmulated (1 << 16)
/* Device event flags (touch events only) */
-#define XIPointerEmulated (1 << 16)
-#define XITouchPendingEnd (1 << 17)
+#define XITouchPendingEnd (1 << 16)
/* Touch modes */
#define XIDirectTouch 1
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index 3452428..fa8d14c 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -380,34 +380,26 @@ event selection do not affect the window set.
Pointer emulation from multitouch events
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Touch sequences from direct touch devices may emulation pointer events. Only
-one touch sequence from a device may emulate pointer events at a time; which
-touch sequence emulates pointer events is implementation dependent.
-
-**************************************************************************
-[red yellow-background]*FIXME*
-
-Pointer emulation events will only be delivered through the attached
-master device; no pointer events will be emulated for floating touch
-devices.
-
-what? why?
-**************************************************************************
+Touch sequences from direct touch devices may emulate pointer events. Only one
+touch sequence from a device may emulate pointer events at a time; which touch
+sequence emulates pointer events is implementation dependent.
Pointer events are emulated as follows:
-- TouchBegin events generate a pointer motion event to the location of the
- touch, followed by a button press event for button 1.
-- TouchUpdate events generate a pointer motion event to update the location
- of the touch.
-- TouchEnd events generate a pointer motion event to the location of the touch
- if the touch has moved, followed by a button release event for button 1.
+- A TouchBegin event generates a pointer motion event to the location of the
+ touch with the same axis values of the touch event, followed by a button press
+ event for button 1.
+- A TouchUpdate event generates a pointer motion event to the location of the
+ touch and/or to update axis values of the pointer device.
+- A TouchEnd event generates a pointer motion event to the location of the touch
+ and/or to update the axis values if either have changed, followed by a button
+ release event for button 1.
If a touch sequence emulates pointer events and an emulated pointer event
triggers the activation of a passive grab, the grabbing client becomes the
-owner of this touch sequence.
+owner of the touch sequence.
-The touch sequences is considered to have been accepted if
+The touch sequence is considered to have been accepted if
- the grab mode is asynchronous, or
- the grab mode is synchronous and the device is thawed as a result of
@@ -419,31 +411,22 @@ is considered to be rejected.
Touch event delivery precedes pointer event delivery. A touch event emulating
pointer events is delivered:
- as a touch event to the top-most window of the current window set if a
- client has a touch grab on this window
+ client has a touch grab on this window,
- otherwise, as a pointer event to the top-most window of the current window
set if a client has a pointer grab on this window,
-- otherwise, to the next window in the window set as in the same order as
- until a grab has been found,
+- otherwise, to the next child window in the window set until a grab has been
+ found.
-If no touch or pointer grab on any window was activated and the last window
-in the window set has been reached, the event is delivered:
+If no touch or pointer grab on any window is active and the last window in the
+window set has been reached, the event is delivered:
- as a touch event to the window if a client has selected for touch events
on this window
- otherwise, as a pointer event to the window if a client has selected for
pointer events.
+- otherwise, to the next parent window in the window set until a selection has
+ been found.
-This sequence is repeated from the current window if the current owner of
-the sequence rejects the sequence.
-
-**************************************************************************
-[red yellow-background]*FIXME*
-
-Both the emulated pointer events and their associated touch events will
-have the PointerEmulated flag set.
-
-huh? we never get both events anyway.
-**************************************************************************
-
+Emulated pointer events will have the PointerEmulated flag set.
[[glossary-notations]]
Notations used in this document