mirror of
https://github.com/openbsd/xenocara.git
synced 2025-12-10 03:08:56 +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
|
||||
Author: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Fri Mar 2 12:58:18 2012 +1000
|
||||
|
||||
@@ -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_ */
|
||||
|
||||
@@ -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_ */
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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]]
|
||||
|
||||
Reference in New Issue
Block a user