x11proto-input: Changes to 'debian-unstable'
ChangeLog | 126 ++++++++++++++++++
XI2.h | 13 +
XI2proto.h | 53 +++++++
configure.ac | 2
debian/changelog | 6
specs/XI2proto.txt | 364 ++++++++++++++++++++++++++++++++++++++++++++---------
6 files changed, 502 insertions(+), 62 deletions(-)
New commits:
commit 61e2a403a680365ce6f8ea944723308d7ae295de
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Tue Jan 8 15:03:44 2013 +0100
New upstream release candidate.
diff --git a/ChangeLog b/ChangeLog
index de735ff..c7b6ea1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,129 @@
+commit 4832c94775ee4a02cfaf53ba427d7cf677f70932
+Merge: 48e3209 e93e9d0
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon Dec 17 14:24:59 2012 +1000
+
+ Merge branch 'barriers'
+
+commit e93e9d004c11a59cab56139c0c04ea2b5c6a926b
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon Dec 17 14:18:07 2012 +1000
+
+ specs: removing a device results in a BarrierLeave event
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit bc009eb4dadf2138212291da05b514854923ae85
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri Dec 7 14:41:03 2012 +1000
+
+ inputproto 2.2.99.1
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 5f9d3b8584d88f49fa7533c429e32199a06ed215
+Author: Jasper St. Pierre <jstpierre@mecheye.net>
+Date: Fri Dec 7 14:42:17 2012 +1000
+
+ Add support for pointer barrier events
+
+ Signed-off-by: Jasper St. Pierre <jstpierre@mecheye.net>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 0b88ca65bdaab4c60f945fe64c48982bc89e5d1f
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri Dec 7 14:41:54 2012 +1000
+
+ Claim support for XI 2.3
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 48e32091c5a3220a464caad49fd7dd013c429eda
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri Dec 7 12:55:24 2012 +1000
+
+ Fix typo in comment
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 377efaaa9828b4004741744ae172a193b5483a34
+Author: Daniel Martin <consume.noise@gmail.com>
+Date: Wed Nov 7 12:41:49 2012 +0100
+
+ specs: XI2: Fix mods in XIPassive(Un)GrabDevice
+
+ XIPassiveGrabDevice and XIPassiveUngrabDevice are using lists of
+ modifier masks. This one corrects these types.
+
+ MODIFIERMASK was introduced, because a SETofMODIFIERMASK differs from a
+ SETofKEYMASK: AnyModifier=(1<<15) vs. GrabAnyModifier=(1U<<31).
+
+ Signed-off-by: Daniel Martin <consume.noise@gmail.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit eb38fd9af846afe39287d5cf281b0274f42e8558
+Author: Daniel Martin <consume.noise@gmail.com>
+Date: Wed Nov 7 12:41:48 2012 +0100
+
+ specs: XI2: Rename AxisClass to ValuatorClass
+
+ ValuatorClass is the XI2 term for AxisClass.
+
+ Signed-off-by: Daniel Martin <consume.noise@gmail.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit b30e7221b8888b674e6889beeada9b5b9dfc2f34
+Author: Daniel Martin <consume.noise@gmail.com>
+Date: Wed Nov 7 12:41:47 2012 +0100
+
+ specs: XI2: Fix typos
+
+ Signed-off-by: Daniel Martin <consume.noise@gmail.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 743cb2cf1567cf685dfe5444621eb56447768c7c
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri Nov 2 15:37:28 2012 +1000
+
+ XI2proto: spec formatting fix
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit a06905c8efc053e8ffcd0fc93736c0e45b715c38
+Author: Ran Benita <ran234@gmail.com>
+Date: Sat Oct 27 14:56:49 2012 +0200
+
+ specs: XI2: add titles to requests/events and show them in TOC
+
+ You often want to quickly jump to the specification of a specific
+ request/event, so add them to the table of contents to allow for that.
+ This also provides the reader with a quick glance at what the protocol
+ looks like.
+
+ Signed-off-by: Ran Benita <ran234@gmail.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 74098071768a4b25670cf5582bc68433403deefe
+Author: Ran Benita <ran234@gmail.com>
+Date: Sat Oct 27 14:56:48 2012 +0200
+
+ specs: XI2: make event/request name formatting consistent
+
+ None of the other have ':' there.
+
+ Signed-off-by: Ran Benita <ran234@gmail.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 3ed8aed32199edaa8621ccea571a04883e050cb5
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu Jun 14 08:56:55 2012 +1000
+
+ Fix two typos in spec/comments
+
+ The ButtonClass provides the number of buttons, not the lentgh of the mask.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
commit e752e92dbdcf01b1cd46a3853f582ff765d19e90
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Mar 2 12:58:18 2012 +1000
diff --git a/debian/changelog b/debian/changelog
index 7e7c70a..47fa4c3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+x11proto-input (2.2.99.1-1) UNRELEASED; urgency=low
+
+ * New upstream release candidate.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> Tue, 08 Jan 2013 15:01:59 +0100
+
x11proto-input (2.2-1) unstable; urgency=low
* New upstream release.
commit e93e9d004c11a59cab56139c0c04ea2b5c6a926b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Mon Dec 17 14:18:07 2012 +1000
specs: removing a device results in a BarrierLeave event
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index b1c29c0..d30fcca 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -2620,7 +2620,8 @@ through the barrier following a XIBarrierReleasePointer request. The time
between the XIBarrierReleasePointer and the BarrierLeave event thus depends
on user input.
A BarrierLeave(PointerReleased) event is also generated if the barrier is
-destroyed while pointer movement is constrained by the barrier. This event
+destroyed while pointer movement is constrained by the barrier, or the
+master pointer blocked by the barrier is removed. This event
has a dx/dy of 0/0.
:numbered!:
commit bc009eb4dadf2138212291da05b514854923ae85
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Dec 7 14:41:03 2012 +1000
inputproto 2.2.99.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/configure.ac b/configure.ac
index 1c74810..7c8e2eb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
AC_PREREQ([2.60])
-AC_INIT([InputProto], [2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([InputProto], [2.2.99.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
commit 5f9d3b8584d88f49fa7533c429e32199a06ed215
Author: Jasper St. Pierre <jstpierre@mecheye.net>
Date: Fri Dec 7 14:42:17 2012 +1000
Add support for pointer barrier events
Signed-off-by: Jasper St. Pierre <jstpierre@mecheye.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2.h b/XI2.h
index 7b8b607..b1498a7 100644
--- a/XI2.h
+++ b/XI2.h
@@ -160,6 +160,11 @@
#define XITouchPendingEnd (1 << 16)
#define XITouchEmulatingPointer (1 << 17)
+/* Barrier event flags */
+#define XIBarrierPointerReleased (1 << 0)
+#define XIBarrierDeviceIsGrabbed (1 << 1)
+
+
/* Touch modes */
#define XIDirectTouch 1
#define XIDependentTouch 2
@@ -199,7 +204,9 @@
#define XI_RawTouchBegin 22
#define XI_RawTouchUpdate 23
#define XI_RawTouchEnd 24
-#define XI_LASTEVENT XI_RawTouchEnd
+#define XI_BarrierHit 25 /* XI 2.3 */
+#define XI_BarrierLeave 26
+#define XI_LASTEVENT XI_BarrierLeave
/* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value
* as XI_LASTEVENT if the server is supposed to handle masks etc. for this
* type of event. */
@@ -232,5 +239,7 @@
#define XI_RawTouchBeginMask (1 << XI_RawTouchBegin)
#define XI_RawTouchEndMask (1 << XI_RawTouchEnd)
#define XI_RawTouchUpdateMask (1 << XI_RawTouchUpdate)
+#define XI_BarrierHitMask (1 << XI_BarrierHit)
+#define XI_BarrierLeaveMask (1 << XI_BarrierLeave)
#endif /* _XI2_H_ */
diff --git a/XI2proto.h b/XI2proto.h
index 9418357..4cdaa0d 100644
--- a/XI2proto.h
+++ b/XI2proto.h
@@ -67,6 +67,7 @@
#define Time uint32_t
#define Atom uint32_t
#define Cursor uint32_t
+#define Barrier uint32_t
/**
* XI2 Request opcodes
@@ -92,9 +93,10 @@
#define X_XIDeleteProperty 58
#define X_XIGetProperty 59
#define X_XIGetSelectedEvents 60
+#define X_XIBarrierReleasePointer 61
/** Number of XI requests */
-#define XI2REQUESTS (X_XIGetSelectedEvents - X_XIQueryPointer + 1)
+#define XI2REQUESTS (X_XIBarrierReleasePointer - X_XIQueryPointer + 1)
/** Number of XI2 events */
#define XI2EVENTS (XI_LASTEVENT + 1)
@@ -815,6 +817,22 @@ typedef struct {
} xXIGetPropertyReply;
#define sz_xXIGetPropertyReply 32
+typedef struct {
+ uint16_t deviceid;
+ uint16_t pad;
+ Barrier barrier;
+ uint32_t eventid;
+} xXIBarrierReleasePointerInfo;
+
+typedef struct {
+ uint8_t reqType; /**< Input extension major opcode */
+ uint8_t ReqType; /**< Always X_XIBarrierReleasePointer */
+ uint16_t length;
+ uint32_t num_barriers;
+ /* array of xXIBarrierReleasePointerInfo */
+} xXIBarrierReleasePointerReq;
+#define sz_xXIBarrierReleasePointerReq 8
+
/*************************************************************************************
* *
* EVENTS *
@@ -1035,10 +1053,39 @@ typedef struct
uint32_t pad3;
} xXIPropertyEvent;
+typedef struct
+{
+ uint8_t type; /**< Always GenericEvent */
+ uint8_t extension; /**< XI extension offset */
+ uint16_t sequenceNumber;
+ uint32_t length; /**< Length in 4 byte units */
+ uint16_t evtype; /**< ::XI_BarrierHit or ::XI_BarrierLeave */
+ uint16_t deviceid;
+ Time time;
+ uint32_t eventid;
+ Window root;
+ Window event;
+ Barrier barrier;
+/* └──────── 32 byte boundary ────────┘ */
+ uint32_t dtime;
+ uint32_t flags; /**< ::XIBarrierPointerReleased
+ ::XIBarrierDeviceIsGrabbed */
+ uint16_t sourceid;
+ int16_t pad;
+ FP1616 root_x;
+ FP1616 root_y;
+ FP3232 dx;
+ FP3232 dy;
+} xXIBarrierEvent;
+
+typedef xXIBarrierEvent xXIBarrierHitEvent;
+typedef xXIBarrierEvent xXIBarrierPointerReleasedEvent;
+typedef xXIBarrierEvent xXIBarrierLeaveEvent;
#undef Window
#undef Time
#undef Atom
#undef Cursor
+#undef Barrier
#endif /* _XI2PROTO_H_ */
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index c018026..b1c29c0 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -14,6 +14,7 @@ Authors:
History
-------
+- v2.3, December 2012: Pointer barrier events added
- v2.2, March 2012: Multitouch support added
- v2.1, December 2011: new raw event behaviour, smooth scrolling support
added
@@ -57,6 +58,10 @@ Changes in version 2.2
- Multitouch support added
+Changes in version 2.3
+----------------------
+
+- Pointer barrier events added
// ❧❧❧❧❧❧❧❧❧❧❧
@@ -551,6 +556,54 @@ window set has been reached, the event is delivered:
Emulated pointer events will have the PointerEmulated flag set. A touch
event that emulates pointer events has the TouchEmulatingPointer flag set.
+
+[[barrier-events]]
+Pointer barrier events
+^^^^^^^^^^^^^^^^^^^^^^
+If a master pointer moves against a pointer barrier blocking movement in
+that pointer's direction, the movement of the pointer is clamped to the x or
+y coordinate of the barrier, whichever applies. For a description of pointer
+barriers and barrier creation and destruction see the XFixes protocol
+specification v 5.0 or later.
+http://cgit.freedesktop.org/xorg/proto/fixesproto/plain/fixesproto.txt
+
+A pointer hitting a blocking barrier creates a new barrier event sequence,
+identified by a unique event ID. A new event ID is assigned when the pointer
+first hits a barrier. Subsequent movements against or along the pointer
+barrier are assigned the same event ID. The event generated by the pointer
+leaving the barrier, or being released by a client request, is the last
+event with this event ID. Any future movements of this device blocked by
+this barrier will be assigned a new event ID.
+
+Pointer barrier events are delivered exclusively to the client that created
+the barrier, and to the window specified in the CreatePointerBarrier
+request (the "barrier window"). A pointer barrier blocks pointer movement
+regardless of whether its window is mapped and/or viewable. If the pointer
+barrier window is destroyed, the pointer barrier remains blocking but a
+client will not receive further events.
+
+If a device is actively grabbed by a client or a passive grab activated
+for this client, and the pointer moves against a pointer barrier created by
+this client and the grab-window is the barrier window, that client will
+receive pointer barrier events if:
+- owner-events is true or false and the grab's event mask includes
+ pointer barrier events, or
+- owner-events is true and the client has selected for barrier events on the
+ barrier window.
+
+If the grab-window is not the barrier window, the client will receive events
+if:
+- the client has selected for barrier events on the barrier window.
+
+If the barrier is not owned by this client, no barrier events are sent to
+this client. The client owning the barrier will receive events if:
+- the client has pointer barrier events selected on the window associated
+ with the pointer barrier
+
+The BarrierDeviceIsGrabbed flag is set whenever a pointer barrier event is
+generated while the device is actively grabbed by any client or a passive
+grab has activated for this device prior to the event.
+
[[glossary-notations]]
Notations used in this document
-------------------------------
@@ -1940,6 +1993,48 @@ giving the number of trailing unread bytes in the stored property. If
delete is True and the bytes_after is zero, the property is also
deleted from the device, and a XIPropertyNotify event is generated on
the device.
+
+[[requests-xi23]]
+Requests introduced in version 2.3
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[[requests-barrierreleasepointer]]
+XIBarrierReleasePointer
+^^^^^^^^^^^^^^^^^^^^^^^
+ ┌───
+ XIBarrierReleasePointer
+ num_items: CARD32
+ ▶
+ data: LISTofBARRIERRELEASEINFO
+ └───
+
+ BARRIERRELEASEINFO { deviceid: DEVICEID,
+ barrier: Barrier,
+ eventid: CARD32 }
+
+Release a pointer currently blocked by a barrier. In the future, movement of
+this pointer against the barrier will not be blocked.
+
+ deviceid
+ The device currently being blocked by a barrier
+ barrier
+ The barrier currently blocking the device
+ eventid
+ The unique event ID assigned to this barrier event sequence
+
+If the barrier given does not currently block this device, or the eventid
+is invalid, this request does nothing.
+
+Releasing a pointer barrier is only valid during one barrier event sequence,
+and only applies to the next movement of this device against this barrier.
+If the pointer moves away from the barrier following a
+XIBarrierReleasePointer request, the release request is discarded. In the
+future, if the pointer moves against the barrier again, a new eventid is
+assigned and the client must re-issue the XIBarrierReleasePointer request.
+
+If the device is not a master pointer device, a BadDevice error results.
+If the barrier does not name a valid barrier, a BadValue error results.
+
[[events]]
Events
@@ -1984,6 +2079,11 @@ Version 2.2:
- RawTouchUpdate
- RawTouchEnd
+Version 2.3:
+
+ - BarrierHit
+ - BarrierLeave
+
All events have a set of common fields specified as EVENTHEADER.
@@ -2434,6 +2534,94 @@ is now the owner of the touch sequence specified by touchid.
flags
A bitmask of flags for this event.
+[[events-xi23]]
+Events introduced in version 2.3
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[[events-barrierevent]]
+BarrierEvent
+^^^^^^^^^^^^
+ ┌───
+ BarrierEvent
+ EVENTHEADER
+ eventid: CARD32
+ root: Window
+ event: Window
+ barrier: Barrier
+ dtime: CARD32
+ flags: SETofBARRIERFLAGS
+ sourceid: DEVICEID
+ root_x: FP1616
+ root_y: FP1616
+ dx: FP3232
+ dy: FP3232
+ └───
+
+ BARRIERFLAGS { PointerReleased, DeviceIsGrabbed }
+
+A BarrierEvent indicates interaction between a barrier and a pointer device.
+If the event type is BarrierHit, pointer movement has been blocked by a
+barrier. If the event type is BarrierLeave, a pointer previously blocked
+by a barrier has moved away from that barrier, or has moved
+through the blocking barrier following an earlier XIBarrierReleasePointer
+request.
+
+ eventid
+ The unique event ID for this barrier event sequence.
+ root
+ event
+ The root window or barrier window, respectively. The barrier window
+ is always the drawable specified in in the CreatePointerBarrier request.
+ barrier
+ The barrier blocking pointer movement.
+ dtime
+ The relative time in milliseconds between the last event and this
+ event.
+ flags
+ A set of flags that apply to this barrier event
+ PointerReleased:
+ The pointer has moved through the barrier following a
+ XIBarrierReleasePointer request (BarrierLeave only).
+ DeviceIsGrabbed:
+ The pointer device that generated this event is currently
+ grabbed.
+ sourceid
+ The source device that originally generated the event.
+ root_x
+ root_y
+ The position of the pointer in screen coordinates (16.16 fixed
+ point), after being constrained by barrier and/or screen extents.
+ dx
+ dy
+ The relative movement of the pointer from its previous position to
+ the new position if pointer movement were not constrained by this
+ barrier.
+
+Root coordinates in barrier events represent the position of the cursor
+after confinement by barriers, screens and RandR output extents.
+
+Barrier event IDs are provided in the eventid field of barrier events. Its
+value is always provided in every barrier event. Event IDs are
+represented as unsigned 32-bit values and increase strictly monotonically in
+value for each new barrier event sequence, wrapping back to 0 upon reaching
+the numerical limit of IDs. The increment between two event IDs is
+indeterminate. Clients may not assume that any future barrier constraints
+will have specific event IDs. IDs are unique per device per barrier.
+
+If a pointer is actively grabbed after a barrier event sequence has
+initiated, future barrier events of this sequence continue to use the same
+eventid, but all barrier events have the DeviceIsGrabbed flag set. If the
+pointer is ungrabbed, future events of this sequence have the same eventid
+and the DeviceIsGrabbed flag is unset.
+
+The PointerReleased flag may only be set on a BarrierLeave event.
+A BarrierLeave(PointerReleased) event is generated when the pointer moves
+through the barrier following a XIBarrierReleasePointer request. The time
+between the XIBarrierReleasePointer and the BarrierLeave event thus depends
+on user input.
+A BarrierLeave(PointerReleased) event is also generated if the barrier is
+destroyed while pointer movement is constrained by the barrier. This event
+has a dx/dy of 0/0.
:numbered!:
[[xi22-usecases]]
commit 0b88ca65bdaab4c60f945fe64c48982bc89e5d1f
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Dec 7 14:41:54 2012 +1000
Claim support for XI 2.3
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2.h b/XI2.h
index e864b06..7b8b607 100644
--- a/XI2.h
+++ b/XI2.h
@@ -30,7 +30,7 @@
See commit libXi-1.4.2-21-ge8531dd */
#define XI_2_Major 2
-#define XI_2_Minor 2
+#define XI_2_Minor 3
/* Property event flags */
#define XIPropertyDeleted 0
commit 48e32091c5a3220a464caad49fd7dd013c429eda
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Dec 7 12:55:24 2012 +1000
Fix typo in comment
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.h b/XI2proto.h
index 1260200..9418357 100644
--- a/XI2proto.h
+++ b/XI2proto.h
@@ -1021,7 +1021,7 @@ typedef struct
uint8_t type; /**< Always GenericEvent */
uint8_t extension; /**< XI extension offset */
uint16_t sequenceNumber;
- uint32_t length; /**< Length in 4 byte uints */
+ uint32_t length; /**< Length in 4 byte units */
uint16_t evtype; /**< ::XI_PropertyEvent */
uint16_t deviceid;
Time time;
commit 377efaaa9828b4004741744ae172a193b5483a34
Author: Daniel Martin <consume.noise@gmail.com>
Date: Wed Nov 7 12:41:49 2012 +0100
specs: XI2: Fix mods in XIPassive(Un)GrabDevice
XIPassiveGrabDevice and XIPassiveUngrabDevice are using lists of
modifier masks. This one corrects these types.
MODIFIERMASK was introduced, because a SETofMODIFIERMASK differs from a
SETofKEYMASK: AnyModifier=(1<<15) vs. GrabAnyModifier=(1U<<31).
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index 3c88891..c018026 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -624,6 +624,11 @@ Data types
The INT32 contains the integral part, the CARD32 the decimal fraction
shifted by 32.
+ MODIFIERMASK
+ A MODIFIERMASK is a binary mask defined as (1 << modifier map index).
+ A SETofMODIFIERMASK is a binary OR of zero or more MODIFIERMASK or
+ GrabAnyModifier.
+
VALUATORMASK
A binary mask defined as (1 << valuator number).
A SETofVALUATORMASK is a binary OR of zero or more VALUATORMASK.
@@ -1571,17 +1576,17 @@ XIPassiveGrabDevice
num_modifiers: INT16
mask_len: CARD16
masks: SETofEVENTMASK
- modifiers: CARD32 or GrabAnyModifier
+ modifiers: LISTofSETofMODIFIERMASK
▶
num_modifiers_return: INT16
- modifiers_return: GRABMODIFIERINFO
+ modifiers_return: LISTofGRABMODIFIERINFO
└───
GRABTYPE { GrabtypeButton, GrabtypeKeycode, GrabtypeEnter,
GrabtypeFocusIn, GrabtypeTouchBegin¹ }
GRABMODIFIERINFO { status: Access
- modifiers: CARD32 }
+ modifiers: SETofMODIFIERMASK }
¹ since XI 2.2
@@ -1755,7 +1760,7 @@ XIPassiveUngrabDevice
grab_type: GRABTYPE
grab_window: Window
num_modifiers: INT16
- modifiers: MODIFIERINFO
+ modifiers: LISTofSETofMODIFIERMASK
└───
Release an explicit passive grab on the specified input device.
commit eb38fd9af846afe39287d5cf281b0274f42e8558
Author: Daniel Martin <consume.noise@gmail.com>
Date: Wed Nov 7 12:41:48 2012 +0100
specs: XI2: Rename AxisClass to ValuatorClass
ValuatorClass is the XI2 term for AxisClass.
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index d239254..3c88891 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -701,39 +701,39 @@ XIQueryDevice
name: LISTofCHAR8
classes: LISTofCLASS }
- CLASS { BUTTONCLASS, KEYCLASS, AXISCLASS, SCROLLCLASS, TOUCHCLASS }
-
- BUTTONCLASS { type: ButtonClass
- length: CARD16
- sourceid: CARD16
- num_buttons: CARD16
- state: SETofBUTTONMASK
- labels: LISTofATOM }
-
- KEYCLASS { type: KeyClass
- length: CARD16
- sourceid: CARD16
- num_keys: CARD16
- keys: LISTofCARD32 }
-
- AXISCLASS { type: AxisClass
- length: CARD16
- sourceid: CARD16
- axisnumber: CARD16
- label: ATOM
- min: FP3232
- max: FP3232
- value: FP3232
- resolution: CARD32
- mode: CARD8 }
-
- SCROLLCLASS¹ {type: ScrollClass
- length: CARD16
- sourceid: CARD16
- axisnumber: CARD16
- scroll_type: SCROLLTYPE
- flags: SETofSCROLLFLAGS
- increment: FP3232 }
+ CLASS { BUTTONCLASS, KEYCLASS, VALUATORCLASS, SCROLLCLASS, TOUCHCLASS }
+
+ BUTTONCLASS { type: ButtonClass
+ length: CARD16
+ sourceid: CARD16
+ num_buttons: CARD16
+ state: SETofBUTTONMASK
+ labels: LISTofATOM }
+
+ KEYCLASS { type: KeyClass
+ length: CARD16
+ sourceid: CARD16
+ num_keys: CARD16
+ keys: LISTofCARD32 }
+
+ VALUATORCLASS { type: ValuatorClass
+ length: CARD16
+ sourceid: CARD16
+ number: CARD16
+ label: ATOM
+ min: FP3232
+ max: FP3232
+ value: FP3232
+ resolution: CARD32
+ mode: CARD8 }
+
+ SCROLLCLASS¹ { type: ScrollClass
+ length: CARD16
+ sourceid: CARD16
+ number: CARD16
+ scroll_type: SCROLLTYPE
+ flags: SETofSCROLLFLAGS
+ increment: FP3232 }
SCROLLTYPE { Vertical, Horizontal }
@@ -825,15 +825,15 @@ The following classes may occur only once: ButtonClass, KeyClass
keys
List of keycodes provided.
- AxisClass:
+ ValuatorClass:
type
- Always AxisClass.
+ Always ValuatorClass.
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
+ number
+ Valuator number of this axis. The valuator 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
@@ -855,8 +855,8 @@ client. If no min and max information is available, both must be 0.
ScrollClass:
type
Always ScrollClass.
- axisnumber
- Axis number that is referred to. This axis number must be listed in
+ number
+ Valuator number that is referred to. This valuator number must be listed in
the ValuatorClassInfo.
scroll_type:
Vertical for a vertical scrolling axis, Horizontal for a horizontal
@@ -871,7 +871,7 @@ client. If no min and max information is available, both must be 0.
The valuator delta equivalent to one positive unit of scrolling.
A ScrollClass may only exist if the device has at least one ValuatorClass
-and each axisnumber listed in any ScrollClass. Only one ScrollClass may
+and each valuator number listed in any ScrollClass. Only one ScrollClass may
exist per ValuatorClass.
TouchClass:
commit b30e7221b8888b674e6889beeada9b5b9dfc2f34
Author: Daniel Martin <consume.noise@gmail.com>
Date: Wed Nov 7 12:41:47 2012 +0100
specs: XI2: Fix typos
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index f425d7c..d239254 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -32,7 +32,7 @@ XI2 provides a number of enhancements over version 1.5, including:
minimum length of 32 bytes.
- explicit device hierarchy of master and slave devices. See Section
<<hierarchy,The Master/Slave device hierarchy>>.
-- use of multiple independent master devices (Multi-Poiner X or MPX).
+- use of multiple independent master devices (Multi-Pointer X or MPX).
- the ability for devices to change capabilities at runtime.
- raw device events
@@ -616,7 +616,7 @@ Data types
FP1616
Fixed point decimal in 16.16 format as one INT16 and one CARD16.
- The INT16 contains the integral part, the CARD32 the decimal fraction
+ The INT16 contains the integral part, the CARD16 the decimal fraction
shifted by 16.
FP3232
@@ -1794,9 +1794,9 @@ List the properties associated with the given device.
deviceid
The device to list the properties for.
- num_atoms
- Number of atoms in the reply
- atoms
+ num_properties
+ Number of properties in the reply
+ properties
All properties on the device.
[[requests-changeproperty]]
commit 743cb2cf1567cf685dfe5444621eb56447768c7c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Nov 2 15:37:28 2012 +1000
XI2proto: spec formatting fix
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index 376a6bb..f425d7c 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -2209,7 +2209,8 @@ Modifier state in mods is detailed as follows:
locked_mods
XKB locked modifier state.
- Group state in group is detailed as follows:
+Group state in group is detailed as follows:
+
base_group
XKB base group state.
latched_group
commit a06905c8efc053e8ffcd0fc93736c0e45b715c38
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 27 14:56:49 2012 +0200
specs: XI2: add titles to requests/events and show them in TOC
You often want to quickly jump to the specification of a specific
request/event, so add them to the table of contents to allow for that.
This also provides the reader with a quick glance at what the protocol
looks like.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
index 2547692..376a6bb 100644
--- a/specs/XI2proto.txt
+++ b/specs/XI2proto.txt
@@ -1,5 +1,6 @@
The X Input Extension 2.x
=========================
+:toclevels: 3
:toc:
:numbered:
@@ -655,6 +656,8 @@ Requests introduced in version 2.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[requests-queryversion]]
+XIQueryVersion
+^^^^^^^^^^^^^^
┌───
XIQueryVersion
major_version: CARD16
@@ -679,6 +682,8 @@ server supports a version which is compatible with its expectations.
If major_version is less than 2, a BadValue error occurs.
[[requests-querydevice]]
+XIQueryDevice
+^^^^^^^^^^^^^
┌───
XIQueryDevice
DEVICE deviceid
@@ -887,6 +892,8 @@ Devices with a TouchClass emit touch events with the same axes as pointer
events.
[[requests-selectevents]]
+XISelectEvents
+^^^^^^^^^^^^^^
┌───
XISelectEvents
window: Window
@@ -938,6 +945,8 @@ specific device when another client has a selection for XIAllDevices), a
BadAccess error occurs.
[[requests-getselectedevents]]
+XIGetSelectedEvents
+^^^^^^^^^^^^^^^^^^^
┌───
XIGetSelectedEvents
window: Window
@@ -962,6 +971,8 @@ If num_masks is 0, no events have been selected by this client on the
given window.
[[requests-querypointer]]
+XIQueryPointer
+^^^^^^^^^^^^^^
┌───
XIQueryPointer
window: Window
@@ -1007,6 +1018,8 @@ If the device is not a master pointer device or not a floating slave
pointer, a BadDevice error results.
[[requests-warppointer]]
+XIWarpPointer
+^^^^^^^^^^^^^
┌───
XIWarpPointer
src_win: Window
@@ -1053,6 +1066,8 @@ This request will generate events just as if the user had instantaneously
moved the pointer.
[[requests-changecursor]]
+XIChangeCursor
+^^^^^^^^^^^^^^
┌───
XIChangeCursor
win: Window
@@ -1085,6 +1100,8 @@ If deviceid does not specify a master pointer, a BadDevice error
is returned.
[[requests-changehierarchy]]
+XIChangeHierarchy
+^^^^^^^^^^^^^^^^^
┌───
XIChangeHierarchy
num_changes: CARD8
@@ -1193,6 +1210,8 @@ selection will be canceled.
Deviceid of the slave device.
[[requests-setclientpointer]]
+XISetClientPointer
+^^^^^^^^^^^^^^^^^^
┌───
XISetClientPointer
win: Window
@@ -1225,6 +1244,8 @@ If window does not specify a valid window or client ID and is not None, a
BadWindow error is returned.
[[requests-getclientpointer]]
+XIGetClientPointer
+^^^^^^^^^^^^^^^^^^
┌───
XIGetClientPointer
win: Window
@@ -1247,6 +1268,8 @@ XISetClientPointer and a ClientPointer implicitly assigned by the server
in response to an ambiguous request.
[[requests-setfocus]]
+XISetFocus
+^^^^^^^^^^
┌───
XISetFocus
focus: Window
Reply to: