[PATCH inputproto multitouch 8/9] Use the same valuator axes for pointer and touch events

Chase Douglas chase.douglas at canonical.com
Fri Aug 5 16:14:52 PDT 2011


Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
---
 XI2proto.h         |   15 -----------
 specs/XI2proto.txt |   68 ++++++++++-----------------------------------------
 2 files changed, 14 insertions(+), 69 deletions(-)

diff --git a/XI2proto.h b/XI2proto.h
index a631335..6991fda 100644
--- a/XI2proto.h
+++ b/XI2proto.h
@@ -201,21 +201,6 @@ typedef struct {
 } xXITouchInfo;
 
 /**
- * Denotes a multitouch valuator capability on a device.
- * One XITouchValuatorInfo describes exactly one valuator (axis) on the device.
- */
-typedef struct {
-    uint16_t    type;           /**< Always TouchValuatorClass  */
-    uint16_t    length;         /**< Length in 4 byte units */
-    uint16_t    sourceid;       /**< source device for this class */
-    uint16_t    number;         /**< Valuator number            */
-    Atom        label;          /**< Axis label                 */
-    FP3232      min;            /**< Min value                  */
-    FP3232      max;            /**< Max value                  */
-    uint32_t    resolution;     /**< Resolutions in units/m     */
-} xXITouchValuatorInfo;
-
-/**
  * Used to select for events on a given window.
  * Struct is followed by (mask_len * CARD8), with each bit set representing
  * the event mask for the given type. A mask bit represents an event type if
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index 964f7a4..3e18820 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -573,7 +573,7 @@ If major_version is less than 2, a BadValue error occurs.
                  name:                  LISTofCHAR8
                  classes:               LISTofCLASS }
 
-    CLASS { BUTTONCLASS, KEYCLASS, AXISCLASS, TOUCHCLASS*, TOUCHAXISCLASS* }
+    CLASS { BUTTONCLASS, KEYCLASS, AXISCLASS, TOUCHCLASS* }
 
     BUTTONCLASS { type:                 ButtonClass
                   length:               CARD16
@@ -605,16 +605,6 @@ If major_version is less than 2, a BadValue error occurs.
                   num_touches:          CARD16
                   props:                LISTofATOM }
 
-    TOUCHAXISCLASS* {
-                  type:                 TouchAxisClass
-                  length:               CARD16
-                  sourceid:             CARD16
-                  axisnumber:           CARD16
-                  label:                ATOM
-                  min:                  FP3232
-                  max:                  FP3232
-                  resolution:           CARD32 }
-
     TOUCHMODE* { DirectTouch, DependentTouch }
 
 * since XI 2.1
@@ -739,33 +729,9 @@ client. If no min and max information is available, both must be 0.
     props
         A list of properties to denote extra information about the device.
 
-A device with a TouchClass must provide one or more TOUCHAXISCLASS
-specifiers.
-
-    TouchAxisClass:
-    type
-        Always TouchAxisClass.
-    length
-        Length in 4 byte units.
-    sourceid
-        The device this class originates from.
-    axisnumber
-        Axis number of this axis. The axis number is in device-native
-        order and potential axis mappings are ignored.
-    label
-        Atom specifying the axis name. An Atom of None specifies an unlabeled
-        axis.
-    min
-        Minimum value for this axis.
-    max
-        Maximum value for this axis.
-    resolution
-        Resolution in counts/meter.
-
-Devices generating touch events must provide exactly one TouchClass and
-two or more TouchAxisClasses. TouchAxisClasses and AxisClasses are not
-interchangable. A TouchAxisClass may only be part of a touch event,
-whereas an AxisClass may only be part of non-touch events.
+Devices with a TouchClass emit touch events with the same axes as pointer
+events. However, the X and Y axes of touch events are always provided in
+absolute mode co-ordinates.
 
 [[requests-selectevents]]
     ┌───
@@ -2001,12 +1967,8 @@ KeyRelease, ButtonPress, ButtonRelease, Motion.
         Button state before the event.
     valuators
         Bitmask of valuators provided in axisvalues.
-        XI 2.1: For event types TouchBegin, TouchUpdate, and TouchEnd, the
-        valuators are those specified as TouchAxisClass.
     axisvalues
         Valuator data in device-native resolution.
-        XI 2.1: For event types TouchBegin, TouchUpdate, and TouchEnd, the
-        valuators are those specified as TouchAxisClass.
     flags
         Miscellaneous information about this event; the union of the
         common flag set and either the key or pointer flag set,
@@ -2058,10 +2020,10 @@ Modifier state in mods is detailed as follows:
 
 A TouchBegin event is generated whenever a new touch sequence initializes
 A TouchEnd event is generated whenever a touch sequence ceases. A
-TouchUpdate event is generated whenever a touch axis valuator value
-changes, or a flag (e.g. pending end) has changed for that touch sequence;
-this may result in a TouchUpdate event being sent with zero valuators. A
-TouchOwnership event is sent when a client becomes the owner of a touch.
+TouchUpdate event is generated whenever a valuator value changes, or a flag
+flag (e.g. pending end) has changed for that touch sequence; this may result
+in a TouchUpdate event being sent with zero valuators. A TouchOwnership event
+is sent when a client becomes the owner of a touch.
 
 The average finger size is significantly larger than one pixel. The
 selection of the hotspot of a touchpoint is implementation dependent and
@@ -2246,8 +2208,8 @@ require the client to announce XI 2.1 support in the XIQueryVersion request.
 * Client C wants to process touch events from a device D on window W.
 ** C calls XISelectEvent for XI_Touch{Begin|Update|End} from D on W.
 ** C receives TouchBegin whenever a touch sequence starts within W's borders.
-** C receives TouchUpdate events whenever a touch axis valuator value changes
-   for a touch sequence it received a TouchBegin event for.
+** C receives TouchUpdate events whenever an axis valuator value changes for a
+   touch sequence it received a TouchBegin event for.
 ** C receives TouchEnd whenever a touch it received a TouchBegin event for
    ceases.
 
@@ -2260,10 +2222,9 @@ require the client to announce XI 2.1 support in the XIQueryVersion request.
 ** I receives TouchBegin whenever a touch begins within window W, as well as a
    TouchOwnership event indicating that it currently owns the touch sequence.
    C receives a TouchBegin event as well, but without TouchOwnership.
-** When a touch axis valuator changes in this touch sequence, both I and C
-   receive a TouchUpdate event.  I may process the event to determine if it is
-   going to accept or reject the touch, whereas C may perform reversible
-   processing.
+** When an axis valuator changes in this touch sequence, both I and C receive a
+   TouchUpdate event.  I may process the event to determine if it is going to
+   accept or reject the touch, whereas C may perform reversible processing.
 ** If I decides it is going to claim the touch sequence for its exclusive
    processing, it calls XIAllowTouchEvents with the XITouchAccept flag set; at
    this point, C receives a TouchEnd event, and undoes any processing it has
@@ -2300,8 +2261,7 @@ require the client to announce XI 2.1 support in the XIQueryVersion request.
    motion events being sent as TouchUpdate events.
 
 *  Driver DRV provides touch support from tracked device D:
-** DRV initializes a TouchClass for the device and a TouchAxisClass for each
-   axis available on the device.
+** DRV initializes a TouchClass for the device.
 ** DRV parses D's device protocol and selects one touch sequence to be emulated
    as pointer event.
 ** DRV calls the respective input driver API with the touch sequence data. The
-- 
1.7.4.1



More information about the xorg-devel mailing list