update to inputproto 2.3

This commit is contained in:
matthieu
2013-05-30 13:00:06 +00:00
parent 4371dedbcf
commit 15c1bc0458
5 changed files with 518 additions and 59 deletions

View File

@@ -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

View File

@@ -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_ */

View File

@@ -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_ */

View File

@@ -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],

View File

@@ -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 }
CLASS { BUTTONCLASS, KEYCLASS, VALUATORCLASS, SCROLLCLASS, TOUCHCLASS }
BUTTONCLASS { type: ButtonClass
length: CARD16
sourceid: CARD16
buttons_len: CARD16
state: SETofBUTTONMASK
labels: LISTofATOM }
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 }
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 }
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
axisnumber: CARD16
scroll_type: SCROLLTYPE
flags: SETofSCROLLFLAGS
increment: FP3232 }
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]]