mirror of
https://github.com/openbsd/xenocara.git
synced 2025-12-12 04:09:15 +00:00
update to inputproto 2.3
This commit is contained in:
@@ -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
|
commit e752e92dbdcf01b1cd46a3853f582ff765d19e90
|
||||||
Author: Peter Hutterer <peter.hutterer@who-t.net>
|
Author: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
Date: Fri Mar 2 12:58:18 2012 +1000
|
Date: Fri Mar 2 12:58:18 2012 +1000
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
See commit libXi-1.4.2-21-ge8531dd */
|
See commit libXi-1.4.2-21-ge8531dd */
|
||||||
|
|
||||||
#define XI_2_Major 2
|
#define XI_2_Major 2
|
||||||
#define XI_2_Minor 2
|
#define XI_2_Minor 3
|
||||||
|
|
||||||
/* Property event flags */
|
/* Property event flags */
|
||||||
#define XIPropertyDeleted 0
|
#define XIPropertyDeleted 0
|
||||||
@@ -160,6 +160,11 @@
|
|||||||
#define XITouchPendingEnd (1 << 16)
|
#define XITouchPendingEnd (1 << 16)
|
||||||
#define XITouchEmulatingPointer (1 << 17)
|
#define XITouchEmulatingPointer (1 << 17)
|
||||||
|
|
||||||
|
/* Barrier event flags */
|
||||||
|
#define XIBarrierPointerReleased (1 << 0)
|
||||||
|
#define XIBarrierDeviceIsGrabbed (1 << 1)
|
||||||
|
|
||||||
|
|
||||||
/* Touch modes */
|
/* Touch modes */
|
||||||
#define XIDirectTouch 1
|
#define XIDirectTouch 1
|
||||||
#define XIDependentTouch 2
|
#define XIDependentTouch 2
|
||||||
@@ -199,7 +204,9 @@
|
|||||||
#define XI_RawTouchBegin 22
|
#define XI_RawTouchBegin 22
|
||||||
#define XI_RawTouchUpdate 23
|
#define XI_RawTouchUpdate 23
|
||||||
#define XI_RawTouchEnd 24
|
#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
|
/* 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
|
* as XI_LASTEVENT if the server is supposed to handle masks etc. for this
|
||||||
* type of event. */
|
* type of event. */
|
||||||
@@ -232,5 +239,7 @@
|
|||||||
#define XI_RawTouchBeginMask (1 << XI_RawTouchBegin)
|
#define XI_RawTouchBeginMask (1 << XI_RawTouchBegin)
|
||||||
#define XI_RawTouchEndMask (1 << XI_RawTouchEnd)
|
#define XI_RawTouchEndMask (1 << XI_RawTouchEnd)
|
||||||
#define XI_RawTouchUpdateMask (1 << XI_RawTouchUpdate)
|
#define XI_RawTouchUpdateMask (1 << XI_RawTouchUpdate)
|
||||||
|
#define XI_BarrierHitMask (1 << XI_BarrierHit)
|
||||||
|
#define XI_BarrierLeaveMask (1 << XI_BarrierLeave)
|
||||||
|
|
||||||
#endif /* _XI2_H_ */
|
#endif /* _XI2_H_ */
|
||||||
|
|||||||
@@ -67,6 +67,7 @@
|
|||||||
#define Time uint32_t
|
#define Time uint32_t
|
||||||
#define Atom uint32_t
|
#define Atom uint32_t
|
||||||
#define Cursor uint32_t
|
#define Cursor uint32_t
|
||||||
|
#define Barrier uint32_t
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* XI2 Request opcodes
|
* XI2 Request opcodes
|
||||||
@@ -92,9 +93,10 @@
|
|||||||
#define X_XIDeleteProperty 58
|
#define X_XIDeleteProperty 58
|
||||||
#define X_XIGetProperty 59
|
#define X_XIGetProperty 59
|
||||||
#define X_XIGetSelectedEvents 60
|
#define X_XIGetSelectedEvents 60
|
||||||
|
#define X_XIBarrierReleasePointer 61
|
||||||
|
|
||||||
/** Number of XI requests */
|
/** Number of XI requests */
|
||||||
#define XI2REQUESTS (X_XIGetSelectedEvents - X_XIQueryPointer + 1)
|
#define XI2REQUESTS (X_XIBarrierReleasePointer - X_XIQueryPointer + 1)
|
||||||
/** Number of XI2 events */
|
/** Number of XI2 events */
|
||||||
#define XI2EVENTS (XI_LASTEVENT + 1)
|
#define XI2EVENTS (XI_LASTEVENT + 1)
|
||||||
|
|
||||||
@@ -154,7 +156,7 @@ typedef struct {
|
|||||||
uint16_t type; /**< Always ButtonClass */
|
uint16_t type; /**< Always ButtonClass */
|
||||||
uint16_t length; /**< Length in 4 byte units */
|
uint16_t length; /**< Length in 4 byte units */
|
||||||
uint16_t sourceid; /**< source device for this class */
|
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;
|
} xXIButtonInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -815,6 +817,22 @@ typedef struct {
|
|||||||
} xXIGetPropertyReply;
|
} xXIGetPropertyReply;
|
||||||
#define sz_xXIGetPropertyReply 32
|
#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 *
|
* EVENTS *
|
||||||
@@ -1021,7 +1039,7 @@ typedef struct
|
|||||||
uint8_t type; /**< Always GenericEvent */
|
uint8_t type; /**< Always GenericEvent */
|
||||||
uint8_t extension; /**< XI extension offset */
|
uint8_t extension; /**< XI extension offset */
|
||||||
uint16_t sequenceNumber;
|
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 evtype; /**< ::XI_PropertyEvent */
|
||||||
uint16_t deviceid;
|
uint16_t deviceid;
|
||||||
Time time;
|
Time time;
|
||||||
@@ -1035,10 +1053,39 @@ typedef struct
|
|||||||
uint32_t pad3;
|
uint32_t pad3;
|
||||||
} xXIPropertyEvent;
|
} 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 Window
|
||||||
#undef Time
|
#undef Time
|
||||||
#undef Atom
|
#undef Atom
|
||||||
#undef Cursor
|
#undef Cursor
|
||||||
|
#undef Barrier
|
||||||
|
|
||||||
#endif /* _XI2PROTO_H_ */
|
#endif /* _XI2PROTO_H_ */
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
AC_PREREQ([2.60])
|
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_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||||
AM_MAINTAINER_MODE
|
|
||||||
|
|
||||||
# Require xorg-macros: XORG_WITH_ASCIIDOC
|
# Require xorg-macros: XORG_WITH_ASCIIDOC
|
||||||
m4_ifndef([XORG_MACROS_VERSION],
|
m4_ifndef([XORG_MACROS_VERSION],
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
The X Input Extension 2.x
|
The X Input Extension 2.x
|
||||||
=========================
|
=========================
|
||||||
|
:toclevels: 3
|
||||||
:toc:
|
:toc:
|
||||||
:numbered:
|
:numbered:
|
||||||
|
|
||||||
@@ -13,6 +14,7 @@ Authors:
|
|||||||
History
|
History
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- v2.3, December 2012: Pointer barrier events added
|
||||||
- v2.2, March 2012: Multitouch support added
|
- v2.2, March 2012: Multitouch support added
|
||||||
- v2.1, December 2011: new raw event behaviour, smooth scrolling support
|
- v2.1, December 2011: new raw event behaviour, smooth scrolling support
|
||||||
added
|
added
|
||||||
@@ -31,7 +33,7 @@ XI2 provides a number of enhancements over version 1.5, including:
|
|||||||
minimum length of 32 bytes.
|
minimum length of 32 bytes.
|
||||||
- explicit device hierarchy of master and slave devices. See Section
|
- explicit device hierarchy of master and slave devices. See Section
|
||||||
<<hierarchy,The Master/Slave device hierarchy>>.
|
<<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.
|
- the ability for devices to change capabilities at runtime.
|
||||||
- raw device events
|
- raw device events
|
||||||
|
|
||||||
@@ -56,6 +58,10 @@ Changes in version 2.2
|
|||||||
|
|
||||||
- Multitouch support added
|
- 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
|
Emulated pointer events will have the PointerEmulated flag set. A touch
|
||||||
event that emulates pointer events has the TouchEmulatingPointer flag set.
|
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]]
|
[[glossary-notations]]
|
||||||
Notations used in this document
|
Notations used in this document
|
||||||
-------------------------------
|
-------------------------------
|
||||||
@@ -615,7 +669,7 @@ Data types
|
|||||||
|
|
||||||
FP1616
|
FP1616
|
||||||
Fixed point decimal in 16.16 format as one INT16 and one CARD16.
|
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.
|
shifted by 16.
|
||||||
|
|
||||||
FP3232
|
FP3232
|
||||||
@@ -623,6 +677,11 @@ Data types
|
|||||||
The INT32 contains the integral part, the CARD32 the decimal fraction
|
The INT32 contains the integral part, the CARD32 the decimal fraction
|
||||||
shifted by 32.
|
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
|
VALUATORMASK
|
||||||
A binary mask defined as (1 << valuator number).
|
A binary mask defined as (1 << valuator number).
|
||||||
A SETofVALUATORMASK is a binary OR of zero or more VALUATORMASK.
|
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:
|
Requests
|
||||||
---------
|
--------
|
||||||
|
|
||||||
The server does not guarantee that the length of a reply remains constant in
|
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
|
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]]
|
[[requests-queryversion]]
|
||||||
|
XIQueryVersion
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIQueryVersion
|
XIQueryVersion
|
||||||
major_version: CARD16
|
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.
|
If major_version is less than 2, a BadValue error occurs.
|
||||||
|
|
||||||
[[requests-querydevice]]
|
[[requests-querydevice]]
|
||||||
|
XIQueryDevice
|
||||||
|
^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIQueryDevice
|
XIQueryDevice
|
||||||
DEVICE deviceid
|
DEVICE deviceid
|
||||||
@@ -696,39 +759,39 @@ If major_version is less than 2, a BadValue error occurs.
|
|||||||
name: LISTofCHAR8
|
name: LISTofCHAR8
|
||||||
classes: LISTofCLASS }
|
classes: LISTofCLASS }
|
||||||
|
|
||||||
CLASS { BUTTONCLASS, KEYCLASS, AXISCLASS, SCROLLCLASS, TOUCHCLASS }
|
CLASS { BUTTONCLASS, KEYCLASS, VALUATORCLASS, SCROLLCLASS, TOUCHCLASS }
|
||||||
|
|
||||||
BUTTONCLASS { type: ButtonClass
|
BUTTONCLASS { type: ButtonClass
|
||||||
length: CARD16
|
length: CARD16
|
||||||
sourceid: CARD16
|
sourceid: CARD16
|
||||||
buttons_len: CARD16
|
num_buttons: CARD16
|
||||||
state: SETofBUTTONMASK
|
state: SETofBUTTONMASK
|
||||||
labels: LISTofATOM }
|
labels: LISTofATOM }
|
||||||
|
|
||||||
KEYCLASS { type: KeyClass
|
KEYCLASS { type: KeyClass
|
||||||
length: CARD16
|
length: CARD16
|
||||||
sourceid: CARD16
|
sourceid: CARD16
|
||||||
num_keys: CARD16
|
num_keys: CARD16
|
||||||
keys: LISTofCARD32 }
|
keys: LISTofCARD32 }
|
||||||
|
|
||||||
AXISCLASS { type: AxisClass
|
VALUATORCLASS { type: ValuatorClass
|
||||||
length: CARD16
|
length: CARD16
|
||||||
sourceid: CARD16
|
sourceid: CARD16
|
||||||
axisnumber: CARD16
|
number: CARD16
|
||||||
label: ATOM
|
label: ATOM
|
||||||
min: FP3232
|
min: FP3232
|
||||||
max: FP3232
|
max: FP3232
|
||||||
value: FP3232
|
value: FP3232
|
||||||
resolution: CARD32
|
resolution: CARD32
|
||||||
mode: CARD8 }
|
mode: CARD8 }
|
||||||
|
|
||||||
SCROLLCLASS¹ {type: ScrollClass
|
SCROLLCLASS¹ { type: ScrollClass
|
||||||
length: CARD16
|
length: CARD16
|
||||||
sourceid: CARD16
|
sourceid: CARD16
|
||||||
axisnumber: CARD16
|
number: CARD16
|
||||||
scroll_type: SCROLLTYPE
|
scroll_type: SCROLLTYPE
|
||||||
flags: SETofSCROLLFLAGS
|
flags: SETofSCROLLFLAGS
|
||||||
increment: FP3232 }
|
increment: FP3232 }
|
||||||
|
|
||||||
SCROLLTYPE { Vertical, Horizontal }
|
SCROLLTYPE { Vertical, Horizontal }
|
||||||
|
|
||||||
@@ -820,15 +883,15 @@ The following classes may occur only once: ButtonClass, KeyClass
|
|||||||
keys
|
keys
|
||||||
List of keycodes provided.
|
List of keycodes provided.
|
||||||
|
|
||||||
AxisClass:
|
ValuatorClass:
|
||||||
type
|
type
|
||||||
Always AxisClass.
|
Always ValuatorClass.
|
||||||
length
|
length
|
||||||
Length in 4 byte units.
|
Length in 4 byte units.
|
||||||
sourceid
|
sourceid
|
||||||
The device this class originates from.
|
The device this class originates from.
|
||||||
axisnumber
|
number
|
||||||
Axis number of this axis. The axis number is in device-native
|
Valuator number of this axis. The valuator number is in device-native
|
||||||
order and potential axis mappings are ignored.
|
order and potential axis mappings are ignored.
|
||||||
label
|
label
|
||||||
Atom specifying the axis name. An Atom of None specifies an unlabeled
|
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:
|
ScrollClass:
|
||||||
type
|
type
|
||||||
Always ScrollClass.
|
Always ScrollClass.
|
||||||
axisnumber
|
number
|
||||||
Axis number that is referred to. This axis number must be listed in
|
Valuator number that is referred to. This valuator number must be listed in
|
||||||
the ValuatorClassInfo.
|
the ValuatorClassInfo.
|
||||||
scroll_type:
|
scroll_type:
|
||||||
Vertical for a vertical scrolling axis, Horizontal for a horizontal
|
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.
|
The valuator delta equivalent to one positive unit of scrolling.
|
||||||
|
|
||||||
A ScrollClass may only exist if the device has at least one ValuatorClass
|
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.
|
exist per ValuatorClass.
|
||||||
|
|
||||||
TouchClass:
|
TouchClass:
|
||||||
@@ -887,6 +950,8 @@ Devices with a TouchClass emit touch events with the same axes as pointer
|
|||||||
events.
|
events.
|
||||||
|
|
||||||
[[requests-selectevents]]
|
[[requests-selectevents]]
|
||||||
|
XISelectEvents
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XISelectEvents
|
XISelectEvents
|
||||||
window: Window
|
window: Window
|
||||||
@@ -938,6 +1003,8 @@ specific device when another client has a selection for XIAllDevices), a
|
|||||||
BadAccess error occurs.
|
BadAccess error occurs.
|
||||||
|
|
||||||
[[requests-getselectedevents]]
|
[[requests-getselectedevents]]
|
||||||
|
XIGetSelectedEvents
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIGetSelectedEvents
|
XIGetSelectedEvents
|
||||||
window: Window
|
window: Window
|
||||||
@@ -962,6 +1029,8 @@ If num_masks is 0, no events have been selected by this client on the
|
|||||||
given window.
|
given window.
|
||||||
|
|
||||||
[[requests-querypointer]]
|
[[requests-querypointer]]
|
||||||
|
XIQueryPointer
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIQueryPointer
|
XIQueryPointer
|
||||||
window: Window
|
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.
|
pointer, a BadDevice error results.
|
||||||
|
|
||||||
[[requests-warppointer]]
|
[[requests-warppointer]]
|
||||||
|
XIWarpPointer
|
||||||
|
^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIWarpPointer
|
XIWarpPointer
|
||||||
src_win: Window
|
src_win: Window
|
||||||
@@ -1053,6 +1124,8 @@ This request will generate events just as if the user had instantaneously
|
|||||||
moved the pointer.
|
moved the pointer.
|
||||||
|
|
||||||
[[requests-changecursor]]
|
[[requests-changecursor]]
|
||||||
|
XIChangeCursor
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIChangeCursor
|
XIChangeCursor
|
||||||
win: Window
|
win: Window
|
||||||
@@ -1085,6 +1158,8 @@ If deviceid does not specify a master pointer, a BadDevice error
|
|||||||
is returned.
|
is returned.
|
||||||
|
|
||||||
[[requests-changehierarchy]]
|
[[requests-changehierarchy]]
|
||||||
|
XIChangeHierarchy
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIChangeHierarchy
|
XIChangeHierarchy
|
||||||
num_changes: CARD8
|
num_changes: CARD8
|
||||||
@@ -1193,6 +1268,8 @@ selection will be canceled.
|
|||||||
Deviceid of the slave device.
|
Deviceid of the slave device.
|
||||||
|
|
||||||
[[requests-setclientpointer]]
|
[[requests-setclientpointer]]
|
||||||
|
XISetClientPointer
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XISetClientPointer
|
XISetClientPointer
|
||||||
win: Window
|
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.
|
BadWindow error is returned.
|
||||||
|
|
||||||
[[requests-getclientpointer]]
|
[[requests-getclientpointer]]
|
||||||
|
XIGetClientPointer
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIGetClientPointer
|
XIGetClientPointer
|
||||||
win: Window
|
win: Window
|
||||||
@@ -1247,6 +1326,8 @@ XISetClientPointer and a ClientPointer implicitly assigned by the server
|
|||||||
in response to an ambiguous request.
|
in response to an ambiguous request.
|
||||||
|
|
||||||
[[requests-setfocus]]
|
[[requests-setfocus]]
|
||||||
|
XISetFocus
|
||||||
|
^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XISetFocus
|
XISetFocus
|
||||||
focus: Window
|
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.
|
Otherwise, the last-focus-change time is set to the specified time.
|
||||||
|
|
||||||
[[requests-getfocus]]
|
[[requests-getfocus]]
|
||||||
|
XIGetFocus
|
||||||
|
^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIGetFocus
|
XIGetFocus
|
||||||
deviceid: DEVICEID
|
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.
|
Return the current focus window for the given device.
|
||||||
|
|
||||||
[[requests-grabdevice]]
|
[[requests-grabdevice]]
|
||||||
|
XIGrabDevice
|
||||||
|
^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIGrabDevice
|
XIGrabDevice
|
||||||
deviceid: DEVICEID
|
deviceid: DEVICEID
|
||||||
@@ -1379,6 +1464,8 @@ This request fails and returns:
|
|||||||
To release a grab of a device, use XIUngrabDevice.
|
To release a grab of a device, use XIUngrabDevice.
|
||||||
|
|
||||||
[[requests-ungrabdevice]]
|
[[requests-ungrabdevice]]
|
||||||
|
XIUngrabDevice
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIUngrabDevice
|
XIUngrabDevice
|
||||||
deviceid: DEVICEID
|
deviceid: DEVICEID
|
||||||
@@ -1402,8 +1489,10 @@ An XIUngrabDevice is performed automatically if the event window for an
|
|||||||
active device grab becomes not viewable.
|
active device grab becomes not viewable.
|
||||||
|
|
||||||
[[requests-allowevents]]
|
[[requests-allowevents]]
|
||||||
|
XIAllowEvents
|
||||||
|
^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIAllowEvents:
|
XIAllowEvents
|
||||||
deviceid: DEVICEID
|
deviceid: DEVICEID
|
||||||
time: TIMESTAMP or CurrentTime
|
time: TIMESTAMP or CurrentTime
|
||||||
event_mode: { AsyncDevice, SyncDevice,
|
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.
|
sequence, ownership will be passed on to the next listener.
|
||||||
|
|
||||||
[[requests-passivegrabdevice]]
|
[[requests-passivegrabdevice]]
|
||||||
|
XIPassiveGrabDevice
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIPassiveGrabDevice
|
XIPassiveGrabDevice
|
||||||
deviceid: DEVICE
|
deviceid: DEVICE
|
||||||
@@ -1538,17 +1629,17 @@ you pass to the event-mode argument:
|
|||||||
num_modifiers: INT16
|
num_modifiers: INT16
|
||||||
mask_len: CARD16
|
mask_len: CARD16
|
||||||
masks: SETofEVENTMASK
|
masks: SETofEVENTMASK
|
||||||
modifiers: CARD32 or GrabAnyModifier
|
modifiers: LISTofSETofMODIFIERMASK
|
||||||
▶
|
▶
|
||||||
num_modifiers_return: INT16
|
num_modifiers_return: INT16
|
||||||
modifiers_return: GRABMODIFIERINFO
|
modifiers_return: LISTofGRABMODIFIERINFO
|
||||||
└───
|
└───
|
||||||
|
|
||||||
GRABTYPE { GrabtypeButton, GrabtypeKeycode, GrabtypeEnter,
|
GRABTYPE { GrabtypeButton, GrabtypeKeycode, GrabtypeEnter,
|
||||||
GrabtypeFocusIn, GrabtypeTouchBegin¹ }
|
GrabtypeFocusIn, GrabtypeTouchBegin¹ }
|
||||||
|
|
||||||
GRABMODIFIERINFO { status: Access
|
GRABMODIFIERINFO { status: Access
|
||||||
modifiers: CARD32 }
|
modifiers: SETofMODIFIERMASK }
|
||||||
|
|
||||||
¹ since XI 2.2
|
¹ since XI 2.2
|
||||||
|
|
||||||
@@ -1713,6 +1804,8 @@ events continues even if the device is frozen due to a grab by another
|
|||||||
client.
|
client.
|
||||||
|
|
||||||
[[requests-passiveungrabdevice]]
|
[[requests-passiveungrabdevice]]
|
||||||
|
XIPassiveUngrabDevice
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIPassiveUngrabDevice
|
XIPassiveUngrabDevice
|
||||||
deviceid: DEVICEID
|
deviceid: DEVICEID
|
||||||
@@ -1720,7 +1813,7 @@ client.
|
|||||||
grab_type: GRABTYPE
|
grab_type: GRABTYPE
|
||||||
grab_window: Window
|
grab_window: Window
|
||||||
num_modifiers: INT16
|
num_modifiers: INT16
|
||||||
modifiers: MODIFIERINFO
|
modifiers: LISTofSETofMODIFIERMASK
|
||||||
└───
|
└───
|
||||||
|
|
||||||
Release an explicit passive grab on the specified input device.
|
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.
|
combination on the grab_window.
|
||||||
|
|
||||||
[[requests-listproperties]]
|
[[requests-listproperties]]
|
||||||
|
XIListProperties
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIListProperties
|
XIListProperties
|
||||||
deviceid: DEVICEID
|
deviceid: DEVICEID
|
||||||
@@ -1757,12 +1852,14 @@ List the properties associated with the given device.
|
|||||||
|
|
||||||
deviceid
|
deviceid
|
||||||
The device to list the properties for.
|
The device to list the properties for.
|
||||||
num_atoms
|
num_properties
|
||||||
Number of atoms in the reply
|
Number of properties in the reply
|
||||||
atoms
|
properties
|
||||||
All properties on the device.
|
All properties on the device.
|
||||||
|
|
||||||
[[requests-changeproperty]]
|
[[requests-changeproperty]]
|
||||||
|
XIChangeProperty
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIChangeProperty
|
XIChangeProperty
|
||||||
deviceid: DEVICEID
|
deviceid: DEVICEID
|
||||||
@@ -1811,6 +1908,8 @@ property, use XIDeleteProperty.
|
|||||||
This request generates an XIPropertyEvent.
|
This request generates an XIPropertyEvent.
|
||||||
|
|
||||||
[[requests-deleteproperty]]
|
[[requests-deleteproperty]]
|
||||||
|
XIDeleteProperty
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIDeleteProperty
|
XIDeleteProperty
|
||||||
deviceid: DEVICEID
|
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.
|
If the property does not exist, this request does nothing.
|
||||||
|
|
||||||
[[requests-getproperty]]
|
[[requests-getproperty]]
|
||||||
|
XIGetProperty
|
||||||
|
^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIGetProperty
|
XIGetProperty
|
||||||
deviceid: DEVICEID
|
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
|
delete is True and the bytes_after is zero, the property is also
|
||||||
deleted from the device, and a XIPropertyNotify event is generated on
|
deleted from the device, and a XIPropertyNotify event is generated on
|
||||||
the device.
|
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]]
|
||||||
Events
|
Events
|
||||||
@@ -1936,6 +2079,11 @@ Version 2.2:
|
|||||||
- RawTouchUpdate
|
- RawTouchUpdate
|
||||||
- RawTouchEnd
|
- RawTouchEnd
|
||||||
|
|
||||||
|
Version 2.3:
|
||||||
|
|
||||||
|
- BarrierHit
|
||||||
|
- BarrierLeave
|
||||||
|
|
||||||
All events have a set of common fields specified as EVENTHEADER.
|
All events have a set of common fields specified as EVENTHEADER.
|
||||||
|
|
||||||
|
|
||||||
@@ -1968,8 +2116,10 @@ Events introduced in version 2.0
|
|||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
[[events-hierarchyevent]]
|
[[events-hierarchyevent]]
|
||||||
|
HierarchyEvent
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
HierarchyEvent:
|
HierarchyEvent
|
||||||
EVENTHEADER
|
EVENTHEADER
|
||||||
flags: SETofHIERARCHYMASK
|
flags: SETofHIERARCHYMASK
|
||||||
num_info: CARD16
|
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.
|
device. Clients should ignore deviceid and instead use the devices list.
|
||||||
|
|
||||||
[[events-devicechangedevent]]
|
[[events-devicechangedevent]]
|
||||||
|
DeviceChangedEvent
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
DeviceChangedEvent:
|
DeviceChangedEvent
|
||||||
EVENTHEADER
|
EVENTHEADER
|
||||||
reason: CHANGEREASON
|
reason: CHANGEREASON
|
||||||
source: DEVICEID
|
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.
|
For a detailed description of classes, see the XIQueryDevice request.
|
||||||
|
|
||||||
[[events-deviceevent]]
|
[[events-deviceevent]]
|
||||||
|
DeviceEvent
|
||||||
|
^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
DeviceEvent:
|
DeviceEvent
|
||||||
EVENTHEADER
|
EVENTHEADER
|
||||||
detail: CARD32
|
detail: CARD32
|
||||||
root: Window
|
root: Window
|
||||||
@@ -2160,7 +2314,8 @@ Modifier state in mods is detailed as follows:
|
|||||||
locked_mods
|
locked_mods
|
||||||
XKB locked modifier state.
|
XKB locked modifier state.
|
||||||
|
|
||||||
Group state in group is detailed as follows:
|
Group state in group is detailed as follows:
|
||||||
|
|
||||||
base_group
|
base_group
|
||||||
XKB base group state.
|
XKB base group state.
|
||||||
latched_group
|
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.
|
Touch events do not generate enter/leave events.
|
||||||
|
|
||||||
[[events-rawevent]]
|
[[events-rawevent]]
|
||||||
|
RawEvent
|
||||||
|
^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
RawEvent
|
RawEvent
|
||||||
EVENTHEADER
|
EVENTHEADER
|
||||||
@@ -2242,6 +2399,8 @@ when the device is grabbed by another client.
|
|||||||
¹ since XI 2.2
|
¹ since XI 2.2
|
||||||
|
|
||||||
[[events-enterleave]]
|
[[events-enterleave]]
|
||||||
|
Enter or Leave or FocusIn or FocusOut
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
Enter or Leave or FocusIn or FocusOut
|
Enter or Leave or FocusIn or FocusOut
|
||||||
EVENTHEADER
|
EVENTHEADER
|
||||||
@@ -2323,6 +2482,8 @@ zero if the device is a floating slave device.
|
|||||||
Button state before the event.
|
Button state before the event.
|
||||||
|
|
||||||
[[events-propertyevent]]
|
[[events-propertyevent]]
|
||||||
|
XIPropertyEvent
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
XIPropertyEvent
|
XIPropertyEvent
|
||||||
EVENTHEADER
|
EVENTHEADER
|
||||||
@@ -2343,6 +2504,8 @@ Events introduced in version 2.2
|
|||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
[[events-touchownershipevent]]
|
[[events-touchownershipevent]]
|
||||||
|
TouchOwnershipEvent
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
┌───
|
┌───
|
||||||
TouchOwnershipEvent
|
TouchOwnershipEvent
|
||||||
EVENTHEADER
|
EVENTHEADER
|
||||||
@@ -2371,6 +2534,95 @@ is now the owner of the touch sequence specified by touchid.
|
|||||||
flags
|
flags
|
||||||
A bitmask of flags for this event.
|
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!:
|
:numbered!:
|
||||||
[[xi22-usecases]]
|
[[xi22-usecases]]
|
||||||
|
|||||||
Reference in New Issue
Block a user