On Mon, Aug 16, 2010 at 05:13:20PM +0200, ext Chase Douglas wrote:
> 
>                             The X Gesture Extension
>                                   Version 1.0
> 
>                                  Chase Douglas
>                           [email protected]
>                                 Canonical, Ltd.
> 
> ********************************************************************************
> ********************************************************************************
> **************************                           
> ***************************
> **************************    DRAFT PROPOSAL (v1)    
> ***************************
> **************************                           
> ***************************
> ********************************************************************************
> ********************************************************************************
> 
> 
> 1. Introduction
> 
> The X Gesture Extension is a mechanism to provide the following:
> - Interface for X clients to register and receive gesture primitive events
> - Interface for an X client to act as a gesture engine
> 
> Gestures may be seen as logical groupings of multitouch input events. Thus,
> this extension is dependent on the X Input Extension version 2.1, which
> implements multitouch input support.
> 
>                               ❧❧❧❧❧❧❧❧❧❧❧
> 
> 2. Notations used in this document
> 
> Notation for requests:
> ┌───
>     Name of request
>         name of request field:       type of request field
>         name of request field:       type of request field
>         ▶
>         name of reply field:         type of reply field
> └───
> 
> Notation for events:
> ┌───
>     Name of event
>         name of field:               type of field
>         name of field:               type of field
> └───
> 
> Complex fields are specified in the following notation:
>           name of field:                  COMPLEXFIELDTYPE
> or, if multiple of these fields exist:
>           name of field:                  LISTofCOMPLEXFIELDTYPE
> 
> COMPLEXFIELDTYPE:  { name of subfield:   type of subfield,
>                      name of subfield:   type of subfield }
> 
>                               ❧❧❧❧❧❧❧❧❧❧❧
> 3. Data types
> 
> DEVICE { DEVICEID, AllDevices }
>         A DEVICE specifies either an X Input DEVICEID or AllDevices.
> 
> DEVICEID { CARD16 }
>         A DEVICEID is a numerical ID for an X input device currently available
>         in the server. The server may re-use a device ID after a device's
>         removal. The device IDs 0 and 1 are reserved.
>         AllDevices ........ 0
> 
> GESTUREID { CARD16 }
>         A GESTUREID is a numerical ID for an X Gesture type currently 
> available
>         in the server. The server may re-use a gesture ID if available gesture
>         types change.
> 
> GESTUREFLAG { MUTEX }
>         A flag telling the server to not propagate gestures to child clients
>         when a gesture type in the associated mask is set. The gesture will 
> only
>         be sent to the registering client.
>         When registering for gestures, a client using this flag may not listen
>         for gesture IDs that any other client has registered for with the 
> MUTEX
>         flag.
> 
> GESTUREMASK
>         A GESTUREMASK is a binary mask defined as (1 << gesture ID). A
>         SETofGESTUREMASK is a binary OR of zero or more GESTUREMASK.
> 
> GESTUREPROP { property:             ATOM
>               property_type:        ATOM }
>         A GESTUREPROP is the definition of a single property of a gesture. The
>         property field specifies a label for the gesture. The property_type
>         field specifies the data type of the property. For example, the 
> property
>         type may be the atom representing "FLOAT" for an IEEE 754 32-bit
>         representation of a floating point number. Where applicable, both the
>         property and the type should conform to the standard gesture
>         definitions.
> 
> EVENTRANGE { start:                 CARD16
>              end:                   CARD16 }
>         An EVENTRANGE specifies a range of event sequence numbers, 
> inclusively.
> 
>                               ❧❧❧❧❧❧❧❧❧❧❧
> 3. Gesture Primitives and Events
> 
> The XInput protocol through version 2.0 supports single touch input devices.
> Beginning with version 2.1, XInput will support multitouch input devices. The
> protocol extension provides a mechansim for selection and propagation of
> multitouch events to windows they occur within. The selection and propagation
> is performed per touch; if a user touches a parent window and a child window
> with separate touches simultaneously, and both windows have input events
> selected for, the touch events will be sent to their respective windows. This
> functionality is useful for general multitouch events, but is ill-suited for
> user interface paradigms that require groupings of touches to be interpreted 
> as
> a single unit.
> 
> The X Gesture extension aims to provide for selection and propagation of 
> gesture
> primitives. Gesture primitives can be best thought of as fundamental 
> multitouch
> input groupings that convey specific meaning. Gesture primitives comprise 
> events
> such as pans, pinches, and rotatation. Primitives are also defined by the 
> number
                             ^^^^^^^^^^
                             typo


nitpicking: why call this work as a new extension? Should be inside Xi 2.1
(which could be bumped maybe to 3) given the strict dependency and relation?

Anyway, the work looks promising. Congrats!

            Tiago
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to