summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2013-05-30 13:00:07 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2013-05-30 13:00:07 +0000
commite33b9b00976c5d2d9e993f2784f4795cbba441b2 (patch)
treeeb5827ea2a7f5fc1e20f1303738c67cf9c384125 /proto
parentaad133091f7abdfa7ad27c1ea3ba6794c3be6948 (diff)
update to inputproto 2.3
Diffstat (limited to 'proto')
-rw-r--r--proto/inputproto/ChangeLog152
-rw-r--r--proto/inputproto/XI2.h13
-rw-r--r--proto/inputproto/XI2proto.h53
-rw-r--r--proto/inputproto/configure.ac3
-rw-r--r--proto/inputproto/specs/XI2proto.txt364
5 files changed, 522 insertions, 63 deletions
diff --git a/proto/inputproto/ChangeLog b/proto/inputproto/ChangeLog
index de735ff3d..09e222b87 100644
--- a/proto/inputproto/ChangeLog
+++ b/proto/inputproto/ChangeLog
@@ -1,3 +1,155 @@
+commit f33a329026c9f2eaa5fa436543e4feb0e54b685d
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu Mar 7 10:42:39 2013 +1000
+
+ inputproto 2.3
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit f8428123019e7357891bbfc0aef21dbb4d0db10f
+Author: Colin Walters <walters@verbum.org>
+Date: Wed Jan 4 17:37:06 2012 -0500
+
+ autogen.sh: Implement GNOME Build API
+
+ http://people.gnome.org/~walters/docs/build-api.txt
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+
+commit 8cad031f9f583089dd33bae41dfa8a7e0d8a71f4
+Author: Adam Jackson <ajax@redhat.com>
+Date: Tue Jan 15 14:01:10 2013 -0500
+
+ configure: Remove AM_MAINTAINER_MODE
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+
+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/proto/inputproto/XI2.h b/proto/inputproto/XI2.h
index e864b0635..b1498a755 100644
--- a/proto/inputproto/XI2.h
+++ b/proto/inputproto/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
@@ -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/proto/inputproto/XI2proto.h b/proto/inputproto/XI2proto.h
index 733f923b7..4cdaa0dfb 100644
--- a/proto/inputproto/XI2proto.h
+++ b/proto/inputproto/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)
@@ -154,7 +156,7 @@ typedef struct {
uint16_t type; /**< Always ButtonClass */
uint16_t length; /**< Length in 4 byte units */
uint16_t sourceid; /**< source device for this class */
- uint16_t num_buttons; /**< Number of buttons provide */
+ uint16_t num_buttons; /**< Number of buttons provided */
} xXIButtonInfo;
/**
@@ -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 *
@@ -1021,7 +1039,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;
@@ -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/proto/inputproto/configure.ac b/proto/inputproto/configure.ac
index 1c74810f5..e6f3db4be 100644
--- a/proto/inputproto/configure.ac
+++ b/proto/inputproto/configure.ac
@@ -1,7 +1,6 @@
AC_PREREQ([2.60])
-AC_INIT([InputProto], [2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([InputProto], [2.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
-AM_MAINTAINER_MODE
# Require xorg-macros: XORG_WITH_ASCIIDOC
m4_ifndef([XORG_MACROS_VERSION],
diff --git a/proto/inputproto/specs/XI2proto.txt b/proto/inputproto/specs/XI2proto.txt
index fb3276854..d30fccae4 100644
--- a/proto/inputproto/specs/XI2proto.txt
+++ b/proto/inputproto/specs/XI2proto.txt
@@ -1,5 +1,6 @@
The X Input Extension 2.x
=========================
+:toclevels: 3
:toc:
:numbered:
@@ -13,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
@@ -31,7 +33,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
@@ -56,6 +58,10 @@ Changes in version 2.2
- Multitouch support added
+Changes in version 2.3
+----------------------
+
+- Pointer barrier events added
// ❧❧❧❧❧❧❧❧❧❧❧
@@ -550,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
-------------------------------
@@ -615,7 +669,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
@@ -623,6 +677,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.
@@ -639,8 +698,8 @@ Errors are sent using core X error reports.
[[requests]]
-Requests:
----------
+Requests
+--------
The server does not guarantee that the length of a reply remains constant in
future revisions of XI2. A client must always retrieve the exact length of the
@@ -655,6 +714,8 @@ Requests introduced in version 2.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[requests-queryversion]]
+XIQueryVersion
+^^^^^^^^^^^^^^
┌───
XIQueryVersion
major_version: CARD16
@@ -679,6 +740,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
@@ -696,39 +759,39 @@ If major_version is less than 2, a BadValue error occurs.
name: LISTofCHAR8
classes: LISTofCLASS }
- CLASS { BUTTONCLASS, KEYCLASS, AXISCLASS, SCROLLCLASS, TOUCHCLASS }
-
- BUTTONCLASS { type: ButtonClass
- length: CARD16
- sourceid: CARD16
- buttons_len: 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 }
@@ -820,15 +883,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
@@ -850,8 +913,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
@@ -866,7 +929,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:
@@ -887,6 +950,8 @@ Devices with a TouchClass emit touch events with the same axes as pointer
events.
[[requests-selectevents]]
+XISelectEvents
+^^^^^^^^^^^^^^
┌───
XISelectEvents
window: Window
@@ -938,6 +1003,8 @@ specific device when another client has a selection for XIAllDevices), a
BadAccess error occurs.
[[requests-getselectedevents]]
+XIGetSelectedEvents
+^^^^^^^^^^^^^^^^^^^
┌───
XIGetSelectedEvents
window: Window
@@ -962,6 +1029,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 +1076,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 +1124,8 @@ This request will generate events just as if the user had instantaneously
moved the pointer.
[[requests-changecursor]]
+XIChangeCursor
+^^^^^^^^^^^^^^
┌───
XIChangeCursor
win: Window
@@ -1085,6 +1158,8 @@ If deviceid does not specify a master pointer, a BadDevice error
is returned.
[[requests-changehierarchy]]
+XIChangeHierarchy
+^^^^^^^^^^^^^^^^^
┌───
XIChangeHierarchy
num_changes: CARD8
@@ -1193,6 +1268,8 @@ selection will be canceled.
Deviceid of the slave device.
[[requests-setclientpointer]]
+XISetClientPointer
+^^^^^^^^^^^^^^^^^^
┌───
XISetClientPointer
win: Window
@@ -1225,6 +1302,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 +1326,8 @@ XISetClientPointer and a ClientPointer implicitly assigned by the server
in response to an ambiguous request.
[[requests-setfocus]]
+XISetFocus
+^^^^^^^^^^
┌───
XISetFocus
focus: Window
@@ -1278,6 +1359,8 @@ current last-focus-change time or is later than the current X server time.
Otherwise, the last-focus-change time is set to the specified time.
[[requests-getfocus]]
+XIGetFocus
+^^^^^^^^^^
┌───
XIGetFocus
deviceid: DEVICEID
@@ -1288,6 +1371,8 @@ Otherwise, the last-focus-change time is set to the specified time.
Return the current focus window for the given device.
[[requests-grabdevice]]
+XIGrabDevice
+^^^^^^^^^^^^
┌───
XIGrabDevice
deviceid: DEVICEID
@@ -1379,6 +1464,8 @@ This request fails and returns:
To release a grab of a device, use XIUngrabDevice.
[[requests-ungrabdevice]]
+XIUngrabDevice
+^^^^^^^^^^^^^^
┌───
XIUngrabDevice
deviceid: DEVICEID
@@ -1402,8 +1489,10 @@ An XIUngrabDevice is performed automatically if the event window for an
active device grab becomes not viewable.
[[requests-allowevents]]
+XIAllowEvents
+^^^^^^^^^^^^^
┌───
- XIAllowEvents:
+ XIAllowEvents
deviceid: DEVICEID
time: TIMESTAMP or CurrentTime
event_mode: { AsyncDevice, SyncDevice,
@@ -1525,6 +1614,8 @@ you pass to the event-mode argument:
sequence, ownership will be passed on to the next listener.
[[requests-passivegrabdevice]]
+XIPassiveGrabDevice
+^^^^^^^^^^^^^^^^^^^
┌───
XIPassiveGrabDevice
deviceid: DEVICE
@@ -1538,17 +1629,17 @@ you pass to the event-mode argument:
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
@@ -1713,6 +1804,8 @@ events continues even if the device is frozen due to a grab by another
client.
[[requests-passiveungrabdevice]]
+XIPassiveUngrabDevice
+^^^^^^^^^^^^^^^^^^^^^
┌───
XIPassiveUngrabDevice
deviceid: DEVICEID
@@ -1720,7 +1813,7 @@ client.
grab_type: GRABTYPE
grab_window: Window
num_modifiers: INT16
- modifiers: MODIFIERINFO
+ modifiers: LISTofSETofMODIFIERMASK
└───
Release an explicit passive grab on the specified input device.
@@ -1745,6 +1838,8 @@ of the same type, same button or keycode (if applicable) and modifier
combination on the grab_window.
[[requests-listproperties]]
+XIListProperties
+^^^^^^^^^^^^^^^^
┌───
XIListProperties
deviceid: DEVICEID
@@ -1757,12 +1852,14 @@ 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]]
+XIChangeProperty
+^^^^^^^^^^^^^^^^
┌───
XIChangeProperty
deviceid: DEVICEID
@@ -1811,6 +1908,8 @@ property, use XIDeleteProperty.
This request generates an XIPropertyEvent.
[[requests-deleteproperty]]
+XIDeleteProperty
+^^^^^^^^^^^^^^^^
┌───
XIDeleteProperty
deviceid: DEVICEID
@@ -1828,6 +1927,8 @@ If the property is deleted, an XIPropertyEvent is generated on the device.
If the property does not exist, this request does nothing.
[[requests-getproperty]]
+XIGetProperty
+^^^^^^^^^^^^^
┌───
XIGetProperty
deviceid: DEVICEID
@@ -1892,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
@@ -1936,6 +2079,11 @@ Version 2.2:
- RawTouchUpdate
- RawTouchEnd
+Version 2.3:
+
+ - BarrierHit
+ - BarrierLeave
+
All events have a set of common fields specified as EVENTHEADER.
@@ -1968,8 +2116,10 @@ Events introduced in version 2.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[events-hierarchyevent]]
+HierarchyEvent
+^^^^^^^^^^^^^^
┌───
- HierarchyEvent:
+ HierarchyEvent
EVENTHEADER
flags: SETofHIERARCHYMASK
num_info: CARD16
@@ -2016,8 +2166,10 @@ deviceid in an XIHierarchyEvent is always the first affected
device. Clients should ignore deviceid and instead use the devices list.
[[events-devicechangedevent]]
+DeviceChangedEvent
+^^^^^^^^^^^^^^^^^^
┌───
- DeviceChangedEvent:
+ DeviceChangedEvent
EVENTHEADER
reason: CHANGEREASON
source: DEVICEID
@@ -2050,8 +2202,10 @@ master device, or by a physical device changing capabilities at runtime.
For a detailed description of classes, see the XIQueryDevice request.
[[events-deviceevent]]
+DeviceEvent
+^^^^^^^^^^^
┌───
- DeviceEvent:
+ DeviceEvent
EVENTHEADER
detail: CARD32
root: Window
@@ -2160,7 +2314,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
@@ -2193,6 +2348,8 @@ physical buttons only, even if that sequence is emulating pointer events.
Touch events do not generate enter/leave events.
[[events-rawevent]]
+RawEvent
+^^^^^^^^
┌───
RawEvent
EVENTHEADER
@@ -2242,6 +2399,8 @@ when the device is grabbed by another client.
¹ since XI 2.2
[[events-enterleave]]
+Enter or Leave or FocusIn or FocusOut
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
┌───
Enter or Leave or FocusIn or FocusOut
EVENTHEADER
@@ -2323,6 +2482,8 @@ zero if the device is a floating slave device.
Button state before the event.
[[events-propertyevent]]
+XIPropertyEvent
+^^^^^^^^^^^^^^^
┌───
XIPropertyEvent
EVENTHEADER
@@ -2343,6 +2504,8 @@ Events introduced in version 2.2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[events-touchownershipevent]]
+TouchOwnershipEvent
+^^^^^^^^^^^^^^^^^^^
┌───
TouchOwnershipEvent
EVENTHEADER
@@ -2371,6 +2534,95 @@ 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, or the
+master pointer blocked by the barrier is removed. This event
+has a dx/dy of 0/0.
:numbered!:
[[xi22-usecases]]