x11proto-input: Changes to 'upstream-experimental'
Rebased ref, commits from common ancestor:
commit 472309905a66245c9fd420ef64716ec630216323
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Aug 21 14:25:51 2009 +1000
inputproto 1.9.99.902 (RC 2)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/configure.ac b/configure.ac
index 5682dea..2b6c043 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
AC_PREREQ([2.57])
-AC_INIT([InputProto], [1.9.99.901], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([InputProto], [1.9.99.902], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
# Require xorg-macros: XORG_CHANGELOG
commit f3f79c0642f33b6a39a0f7fdab2bcb06d9cab0f7
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Aug 25 10:04:01 2009 +1000
Device cursors are deleted once the window or the device disappear.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index a55d06d..706f50a 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -575,6 +575,9 @@ are required to be 0.
protocol's window attributes, display cursor C(w).
- repeat on parent window until a cursor has been found.
+ The device cursor for a given window is reset once the window is destroyed
+ or the device is removed, whichever comes earlier.
+
If deviceid does not specify a master pointer, a BadDevice error
is returned.
commit ae4588ff0c6e5cc7009e4ac78a3f953bc399bd84
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Aug 21 14:24:23 2009 +1000
XIWarpPointer needs to take FP1616 for positions.
This was already in the spec but the protocol itself hadn't cought up with
it.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.h b/XI2proto.h
index 78770c5..2fd91eb 100644
--- a/XI2proto.h
+++ b/XI2proto.h
@@ -372,16 +372,16 @@ typedef struct {
uint16_t length; /**< Length in 4 byte units */
Window src_win;
Window dst_win;
- int16_t src_x;
- int16_t src_y;
+ FP1616 src_x;
+ FP1616 src_y;
uint16_t src_width;
uint16_t src_height;
- int16_t dst_x;
- int16_t dst_y;
+ FP1616 dst_x;
+ FP1616 dst_y;
uint16_t deviceid;
uint16_t pad1;
} xXIWarpPointerReq;
-#define sz_xXIWarpPointerReq 28
+#define sz_xXIWarpPointerReq 36
/**
* Change the given device's sprite to the given cursor.
commit 8eccc169c045fcf68b5a0974c49a8e6863894cf3
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Aug 21 13:56:11 2009 +1000
Replace four leftover INT16 with int16_t.
diff --git a/XI2proto.h b/XI2proto.h
index 101bbf1..78770c5 100644
--- a/XI2proto.h
+++ b/XI2proto.h
@@ -372,12 +372,12 @@ typedef struct {
uint16_t length; /**< Length in 4 byte units */
Window src_win;
Window dst_win;
- INT16 src_x;
- INT16 src_y;
+ int16_t src_x;
+ int16_t src_y;
uint16_t src_width;
uint16_t src_height;
- INT16 dst_x;
- INT16 dst_y;
+ int16_t dst_x;
+ int16_t dst_y;
uint16_t deviceid;
uint16_t pad1;
} xXIWarpPointerReq;
commit 68cdaf8d26e133f700404bca93b18240aa6b8f86
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Aug 21 13:55:52 2009 +1000
XIQueryPointer only works on master pointers and floating slaves.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index 3fd7ac9..a55d06d 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -503,6 +503,9 @@ are required to be 0.
buttons
Button state.
+ If the device is not a master pointer device or not a floating slave
+ pointer, a BadDevice error results.
+
┌───
XIWarpPointer
src_win: Window
commit d9aa0917b491e9d6ef887ac59fb7a01fb428fa62
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Aug 18 15:05:09 2009 +1000
XI2proto: XIChangeCursor request requires a master pointer.
State that the server will return BadDevice in this case.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index 21410a6..3fd7ac9 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -572,6 +572,9 @@ are required to be 0.
protocol's window attributes, display cursor C(w).
- repeat on parent window until a cursor has been found.
+ If deviceid does not specify a master pointer, a BadDevice error
+ is returned.
+
┌───
XIChangeHierarchy
num_changes: CARD8
commit 4f9d8d49eca460b24daca2a28a2c644f7edc19bd
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Aug 18 15:04:47 2009 +1000
XI2proto.txt: typo fix
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index 4b67d66..21410a6 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -702,7 +702,7 @@ are required to be 0.
this client's ClientPointer is set to the given device.
If deviceid does not specify a master pointer or master keyboard, a
- BadDevice error returned.
+ BadDevice error is returned.
If window does not specify a valid window or client ID and is not None, a
BadWindow error is returned.
commit 6719ae1ed024270f7fe1cb6bbee1f84cdaeba90c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Aug 7 10:39:46 2009 +1000
Remove eventtype field from xXIRawEvent.
With c455db2, raw events were split up into using multiple evtypes instead
of a sub event type. The eventtype field itself however has not been removed
and was unused by both the server and the library.
Field converted into a padding field, wire layout stays the same.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.h b/XI2proto.h
index 8fb506d..101bbf1 100644
--- a/XI2proto.h
+++ b/XI2proto.h
@@ -901,9 +901,7 @@ typedef struct
uint16_t deviceid;
Time time;
uint32_t detail;
- uint16_t eventtype; /**< ::XI_Motion, ::XI_ButtonPress,
- ::XI_ButtonRelease, ::XI_KeyPress,
- ::XI_KeyRelease */
+ uint16_t pad0;
uint16_t valuators_len; /**< Length of trailing valuator
mask in 4 byte units */
uint32_t flags; /**< ::XIKeyRepeat */
commit 1a7eb6de82bd61fc16f2a3f000d4d3b9d418dcd0
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Aug 4 10:43:52 2009 +1000
inputproto 1.9.99.901 (RC 1)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/configure.ac b/configure.ac
index 9487382..5682dea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
AC_PREREQ([2.57])
-AC_INIT([InputProto], [1.9.99.15], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([InputProto], [1.9.99.901], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
# Require xorg-macros: XORG_CHANGELOG
commit d8a1c1b1aba92e60d2fcad7cdf5abe77f3c9ae10
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Wed Aug 5 14:52:45 2009 +1000
Revert "XI2proto.txt: grabbing a slave does not detach it anymore."
Detaching a slave device during an explicit grab makes sense from a UI
perspective. It allows a client to get exclusive access to a device without
that device's events also feeding into the respective master device.
Thanks to Thomas Jaeger for his contribution.
This reverts commit d0b1e55b876a29a7c820ec12d7b9cb5e081e1944.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index 00e5e8d..4b67d66 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -1050,7 +1050,11 @@ are required to be 0.
master keyboard are used. If deviceid specifies a slave pointer
the modifiers of the master keyboard paired with the attached master
pointers are used. If deviceid specifies a slave keyboard, the
- modifiers of the attached master keyboard are used.
+ modifiers of the attached master keyboard are used. Note that
+ activating a grab on a slave device detaches the device from its
+ master. In this case, the modifiers after activation of the grab are
+ from the slave device only and may be different to the modifier state
+ when the grab was triggered.
In the future, if grab_type is GrabtypeButton or GrabtypeKeyboard, the
device is actively grabbed if:
commit b31776bb5b416ffa15235611954e68d386edf674
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Jul 31 08:52:43 2009 +1000
XI2proto.txt: document ClientPointer in more detail.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index 94e0f81..00e5e8d 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -149,6 +149,26 @@ to P is only attempted if neither the XI event, nor the core event has been
delivered on W. Once an event has been delivered as either XI or core event,
event processing stops.
+4.4. The ClientPointer principle
+
+Many core protocol and some extension requests are ambiguous when multiple
+master devices are available (e.g. QueryPointer does not specfy which pointer).
+The X server does not have the knowledge to chose the contextually correct
+master device. For each client, one master pointer is designated as this
+clients's "ClientPointer". Whenever a client sends an ambiguous request (e.g.
+QueryPointer), the ClientPointer or the keyboard paired with the ClientPointer
+is chosen to provide the data for this request.
+
+This ClientPointer may be explicitly assigned to a client with the
+SetClientPointer call. If no ClientPointer is set when a client issues an
+ambiguous request, the server choses one device as the ClientPointer. The
+method of chosing a ClientPointer from the available master pointers is
+implementation-specific.
+
+If the master pointer currently set as ClientPointer for one or more clients is
+removed, the server may either unset the ClientPointer setting or change the
+ClientPointer to a different master pointer.
+
❧❧❧❧❧❧❧❧❧❧❧
5. Data types
@@ -672,7 +692,8 @@ are required to be 0.
Some protocol requests are ambiguous and the server has to choose a device
to provide data for a request or a reply. By default, the server will
choose a client's ClientPointer device to provide the data, unless the
- client currently has a grab on another device.
+ client currently has a grab on another device. See section 4.4 for more
+ details.
If win is None, the ClientPointer for this client is set to the given
device. Otherwise, if win is a valid window, the ClientPointer for the
commit 221aed39ac45ce4bf3b28c7956bc00ea3c9dbf57
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jul 28 11:15:12 2009 +1000
XI2proto.txt: don't put field names in quotes.
This was done inconsistently anyway so get rid of it alltogether.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index ec930d3..94e0f81 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -279,33 +279,33 @@ are required to be 0.
XIQueryDevices details information about the requested input devices.
devices
- The device to list. If 'devices' is AllDevices, all enabled and
- disabled devices are listed. If 'devices' is AllMasterDevices, all
- enabled and disabled master devices are listed. If 'devices' is a
- valid DEVICE, only this DEVICE is listed and 'num_devices' is 1.
+ The device to list. If devices is AllDevices, all enabled and
+ disabled devices are listed. If devices is AllMasterDevices, all
+ enabled and disabled master devices are listed. If devices is a
+ valid DEVICE, only this DEVICE is listed and num_devices is 1.
num_devices
- The number of 'deviceinfos' returned.
+ The number of deviceinfos returned.
- Each 'deviceinfo' is detailed as follows:
+ Each deviceinfo is detailed as follows:
deviceid
The unique ID of the device. Device IDs may get re-used when a device
is removed.
use
- If the device is a master pointer, 'use' is MasterPointer.
- If the device is a master keyboard, 'use' is MasterKeyboard.
- If the device is a slave pointer, 'use' is SlavePointer.
- If the device is a slave keyboard, 'use' is SlaveKeyboard.
- If the device is a floating slave, 'use' is FloatingSlave.
+ If the device is a master pointer, use is MasterPointer.
+ If the device is a master keyboard, use is MasterKeyboard.
+ If the device is a slave pointer, use is SlavePointer.
+ If the device is a slave keyboard, use is SlaveKeyboard.
+ If the device is a floating slave, use is FloatingSlave.
attachment
- If the device is a master pointer or a master keyboard, 'attachment'
+ If the device is a master pointer or a master keyboard, attachment
specifies the paired master keyboard, or the paired master pointer,
respectively. If the device is a non-floating slave device
- 'attachment' specifies the master device this device is attached to.
- If the device is a floating slave, 'attachment' is undefined.
+ attachment specifies the master device this device is attached to.
+ If the device is a floating slave, attachment is undefined.
enabled
Zero if the device is disabled, non-zero otherwise.
num_classes
- Number of 'classes' provided.
+ Number of classes provided.
name_len
Length of the name in bytes not including padding.
classes
@@ -314,8 +314,8 @@ are required to be 0.
name
The device's name. padded to a multiple of 4 bytes.
- For all classes, 'type' specifies the device class. Clients are required
- to ignore unknown device classes. The 'length' field specifies the length
+ For all classes, type specifies the device class. Clients are required
+ to ignore unknown device classes. The length field specifies the length
of the class in 4 byte units.
The following classes may occur only once: ButtonClass, KeyClass
@@ -374,8 +374,8 @@ are required to be 0.
value
Last published axis value (if mode is absolute).
- An axis in Relative mode may specify 'min' and 'max' as a hint to the
- client. If no 'min' and 'max' information is available, both must be 0.
+ An axis in Relative mode may specify min and max as a hint to the
+ client. If no min and max information is available, both must be 0.
┌───
XISelectEvents
@@ -392,29 +392,29 @@ are required to be 0.
window
The window to select the events on.
num_masks
- Number of items in 'masks'.
+ Number of items in masks.
deviceid
Numerical deviceid, or AllDevices, or AllMasterDevices.
mask_len
- Length of 'mask' in 4 byte units.
+ Length of mask in 4 byte units.
mask
Event mask. An event mask for an event type T is defined as (1 << T).
- XISelectEvents selects for XI2 events on 'window'.
+ XISelectEvents selects for XI2 events on window.
- If 'num_masks' is 0, a BadValue error occurs.
+ If num_masks is 0, a BadValue error occurs.
- Each 'mask' sets the (and overwrites a previous) event mask for the DEVICE
- specified through 'deviceid'. The device 'AllDevices' or
- 'AllMasterDevices' is treated as a separate device by server. A client's
- event mask is the union of 'AllDevices', 'AllMasterDevices' and the
+ Each mask sets the (and overwrites a previous) event mask for the DEVICE
+ specified through deviceid. The device AllDevices or
+ AllMasterDevices is treated as a separate device by server. A client's
+ event mask is the union of AllDevices, AllMasterDevices and the
per-device event mask.
The removal of device from the server unsets the event masks for the
device. If an event mask is set for AllDevices or AllMasterDevices, the
event mask is not cleared on device removal and affects all future
devices.
- If 'mask_len' is 0, the event mask for the given device is cleared.
+ If mask_len is 0, the event mask for the given device is cleared.
The mask for XIHierarchyEvents may only be selected for XIAllDevices.
Setting it for any other device results in a BadValue error.
@@ -430,16 +430,16 @@ are required to be 0.
window
The window to select the events on.
num_masks
- Number of items in 'masks'.
+ Number of items in masks.
masks
Selected event masks by this client.
- Masks are returned on a per-device basis, with masks for 'AllDevices' and
- 'AllMasterDevices' returned separately. A client can calculate the
+ Masks are returned on a per-device basis, with masks for AllDevices and
+ AllMasterDevices returned separately. A client can calculate the
effective mask for a device with a bitwise OR of the AllDevices, the
AllMasterDevices and the device-specific mask.
- If 'num_masks' is 0, no events have been selected by this client on the
+ If num_masks is 0, no events have been selected by this client on the
given window.
┌───
@@ -465,21 +465,21 @@ are required to be 0.
root
The root window the pointer is logically on.
child
- The child window of 'window' that contains the pointer or None.
+ The child window of window that contains the pointer or None.
root_x
root_y
Pointer position relative to the root window's origin.
win_x
win_y
- Pointer position relative to 'window' or 0 if 'same_screen' is false.
+ Pointer position relative to window or 0 if same_screen is false.
same_screen
- True if 'window' is on the same screen as the pointer.
+ True if window is on the same screen as the pointer.
mods
XKB modifier state on the paired device.
group
XKB group state on the paired device.
buttons_len
- The length of 'buttons' in 4 byte units.
+ The length of buttons in 4 byte units.
buttons
Button state.
@@ -496,7 +496,7 @@ are required to be 0.
deviceid: DEVICEID
└───
- WarpPointer moves the pointer of 'deviceid' as if the user had moved
+ WarpPointer moves the pointer of deviceid as if the user had moved
the pointer. WarpPointer can only be called for MasterPointer and
FloatingSlave devices.
@@ -506,9 +506,9 @@ are required to be 0.
rectangle of src_window.
dst_win
If dst_win is None, this request moves the pointer by offsets
- 'dst_x'/'dst_y' relative to the current position of the pointer. If
+ dst_x/dst_y relative to the current position of the pointer. If
dst_window is a window, this request moves the pointer to
- 'dst_x'/'dst_y' relative to dst_win's origin.
+ dst_x/dst_y relative to dst_win's origin.
src_x
src_y
src_width
@@ -516,8 +516,8 @@ are required to be 0.
Specifies the source window rectangle.
dst_x
dst_y
- The relative coordinates to move the pointer if 'dst_win' is None, or
- the absolute coordinates if 'dst_win' is a window.
+ The relative coordinates to move the pointer if dst_win is None, or
+ the absolute coordinates if dst_win is a window.
deviceid
The device to warp.
@@ -544,9 +544,9 @@ are required to be 0.
deviceid
The master pointer device.
- Whenever 'device' enters a window W, the cursor shape is selected in the
+ Whenever device enters a window W, the cursor shape is selected in the
following order:
- - if the current window has a device cursor C(d) defined for 'device',
+ - if the current window has a device cursor C(d) defined for device,
display this cursor C(d).
- otherwise, if the current window has a cursor C(w) defined in the core
protocol's window attributes, display cursor C(w).
@@ -606,7 +606,7 @@ are required to be 0.
length
Length in 4 byte units.
name_len
- Length of 'name' in bytes.
+ Length of name in bytes.
send_core
True if the device should send core events.
enable
@@ -625,15 +625,15 @@ are required to be 0.
The device to remove.
return_mode
Return mode for attached slave devices.
- If 'return_mode' is Float, all slave devices are set to floating.
- If 'return_mode' is Attach, slave pointers are attached to
- 'return_pointer' and slave keyboards are attached to
- 'return_keyboard'.
+ If return_mode is Float, all slave devices are set to floating.
+ If return_mode is Attach, slave pointers are attached to
+ return_pointer and slave keyboards are attached to
+ return_keyboard.
return_pointer
return_keyboard
The master pointer and master keyboard to attach slave devices to, if
- 'return_mode' is Attach. If 'return_mode' is Float, 'return_pointer'
- and 'return_keyboard' are undefined.
+ return_mode is Attach. If return_mode is Float, return_pointer
+ and return_keyboard are undefined.
Removing a master pointer removes the paired master keyboard and vice
versa.
@@ -662,7 +662,7 @@ are required to be 0.
deviceid: DEVICEID
└───
- Set the ClientPointer for the client owning 'win' to the given device.
+ Set the ClientPointer for the client owning win to the given device.
win
Window or client ID.
@@ -694,14 +694,14 @@ are required to be 0.
deviceid: DEVICEID
└───
- Query the ClientPointer for the client owning 'win'.
+ Query the ClientPointer for the client owning win.
win
The window or client ID.
set
True if the client has a ClientPointer set.
deviceid
- The master pointer that acts as a ClientPointer if 'set' is True.
+ The master pointer that acts as a ClientPointer if set is True.
No difference is made between a ClientPointer set explicitly through
XISetClientPointer and a ClientPointer implicitly assigned by the server
@@ -1358,16 +1358,16 @@ EVENTHEADER { type: BYTE
The current hierarchy information.
An XIHierarchyEvent is sent whenever the device hierarchy been
- changed. The 'flags' specify all types of hierarchy modifiations that have
+ changed. The flags specify all types of hierarchy modifiations that have
occured.
- For all devices, 'info' details the hierarchy information after the
+ For all devices, info details the hierarchy information after the
modification of the hierarchy has occured. For each device specified with
- 'deviceid':
- - if 'type' is MasterPointer or MasterKeyboard, 'attachment' decribes the
+ deviceid:
+ - if type is MasterPointer or MasterKeyboard, attachment decribes the
pairing of this device.
- - if 'type' is SlavePointer or SlaveKeyboard, 'attachment' describes the
+ - if type is SlavePointer or SlaveKeyboard, attachment describes the
master device this device is attached to.
- - if 'type' is FloatingSlave device, 'attachment' is undefined.
+ - if type is FloatingSlave device, attachment is undefined.
enabled
True if the device is enabled and can send events. A disabled master
@@ -1375,8 +1375,8 @@ EVENTHEADER { type: BYTE
device.
Note: Multiple devices may be affected in one hierarchy change,
- 'deviceid' in an XIHierarchyEvent is always the first affected
- device. Clients should ignore deviceid and instead use the 'devices' list.
+ deviceid in an XIHierarchyEvent is always the first affected
+ device. Clients should ignore deviceid and instead use the devices list.
┌───
DeviceChangedEvent:
@@ -1395,21 +1395,21 @@ EVENTHEADER { type: BYTE
reason
The reason for generating this event.
- If 'reason' is SlaveSwitch, the slave device sending events through
- this device has changed and 'source' specifies the new slave device.
- A SlaveSwitch 'reason' can only occur on a master device.
- If 'reason' is DeviceChange, the device itself has changed through
- other means (e.g. a physical device change) and 'source' is
+ If reason is SlaveSwitch, the slave device sending events through
+ this device has changed and source specifies the new slave device.
+ A SlaveSwitch reason can only occur on a master device.
+ If reason is DeviceChange, the device itself has changed through
+ other means (e.g. a physical device change) and source is
the device itself.
source
The source of the new classes.
num_classes
- Number of 'classes' provided.
+ Number of classes provided.
classes
Details the available classes provided by the device. The order the
classes are provided in is undefined.
- For a detailed description of 'classes', see the XQueryInputDevice
+ For a detailed description of classes, see the XQueryInputDevice
request.
┌───
@@ -1470,9 +1470,9 @@ EVENTHEADER { type: BYTE
event window (16.16 fixed point).
buttons_len
- The length of 'buttons' in 4 byte units.
+ The length of buttons in 4 byte units.
valuators_len
- The length of 'valuators' in 4 byte units.
+ The length of valuators in 4 byte units.
sourceid
The source device that originally generated the event.
mods
@@ -1482,7 +1482,7 @@ EVENTHEADER { type: BYTE
buttons
Button state before the event.
valuators
- Bitmask of valuators provided in 'axisvalues'.
+ Bitmask of valuators provided in axisvalues.
axisvalues
Valuator data in device-native resolution.
flags
@@ -1493,7 +1493,7 @@ EVENTHEADER { type: BYTE
the physical state of the key has not changed. This is only
valid for KeyPress events.
- Modifier state in 'mods' is detailed as follows:
+ Modifier state in mods is detailed as follows:
base_mods
XKB base modifier state.
latched_mods
@@ -1501,7 +1501,7 @@ EVENTHEADER { type: BYTE
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
@@ -1536,9 +1536,9 @@ EVENTHEADER { type: BYTE
flags
Flags as described in DeviceEvent.
valuators_len
- The length of 'valuators' in 4 byte units.
+ The length of valuators in 4 byte units.
valuators
- Bitmask of valuators provided in 'axisvalues' and 'axisvalues_raw'.
+ Bitmask of valuators provided in axisvalues and axisvalues_raw.
axisvalues
Valuator data in device-native resolution.
axisvalues_raw
@@ -1620,7 +1620,7 @@ EVENTHEADER { type: BYTE
group
XKB group state before the event.
buttons_len
- The length of 'buttons' in 4 byte units.
+ The length of buttons in 4 byte units.
buttons
Button state before the event.
commit 5e76f4ca69fedab770280854ab238587eb5e10fb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jul 28 10:12:06 2009 +1000
XI2proto.txt: typo fixes and minor clarifications.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index f1cbb1e..ec930d3 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -224,7 +224,7 @@ are required to be 0.
server sends the highest version it supports, but no higher than the
requested version. Major versions changes can introduce incompatibilities
in existing functionality, minor version changes introduce only backward
- compatible changes. It is the clients responsibility to ensure that the
+ compatible changes. It is the client's responsibility to ensure that the
server supports a version which is compatible with its expectations.
major_version
@@ -251,7 +251,7 @@ are required to be 0.
name: LISTofCHAR8
classes: LISTofCLASS }
- CLASS { BUTTONCLASS KEYCLASS, AXISCLASS }
+ CLASS { BUTTONCLASS, KEYCLASS, AXISCLASS }
BUTTONCLASS { type: ButtonClass
length: CARD16
@@ -296,25 +296,23 @@ are required to be 0.
If the device is a slave pointer, 'use' is SlavePointer.
If the device is a slave keyboard, 'use' is SlaveKeyboard.
If the device is a floating slave, 'use' is FloatingSlave.
-
attachment
If the device is a master pointer or a master keyboard, 'attachment'
specifies the paired master keyboard, or the paired master pointer,
respectively. If the device is a non-floating slave device
'attachment' specifies the master device this device is attached to.
If the device is a floating slave, 'attachment' is undefined.
-
enabled
Zero if the device is disabled, non-zero otherwise.
num_classes
Number of 'classes' provided.
name_len
- Length of the name in bytes.
+ Length of the name in bytes not including padding.
classes
Details the available classes provided by the device in an undefined
order.
name
- The device's name, padded to a multiple of 4 bytes.
+ The device's name. padded to a multiple of 4 bytes.
For all classes, 'type' specifies the device class. Clients are required
to ignore unknown device classes. The 'length' field specifies the length
@@ -331,14 +329,14 @@ are required to be 0.
num_buttons
Number of buttons provided by the device.
labels
- List of Atoms specifying the label for each button. An atom of None
+ List of Atoms specifying the label for each button. An Atom of None
specifies an unlabeled button. Buttons are listed in the device-native
- order and potential button mappings are ignored.
+ order regardless of the current button mapping.
state
- The current button mask for this device. Each bit representing a
- button is 1 if this button is logically down, or 0 otherwise. State a
- multiple of 4-byte units and always contains at least num_buttons
- bits.
+ The current button mask for this device after button mapping is
+ applied. Each bit representing a button is 1 if this button is
+ logically down, or 0 otherwise. State is a multiple of 4-byte units
+ and always contains at least num_buttons bits.
KeyClass:
type
@@ -394,11 +392,11 @@ are required to be 0.
window
The window to select the events on.
num_masks
- Number of items in mask.
+ Number of items in 'masks'.
deviceid
Numerical deviceid, or AllDevices, or AllMasterDevices.
mask_len
- Length of mask in 4 byte units.
+ Length of 'mask' in 4 byte units.
mask
Event mask. An event mask for an event type T is defined as (1 << T).
@@ -429,16 +427,17 @@ are required to be 0.
masks: LISTofEVENTMASK
└───
-
window
The window to select the events on.
num_masks
- Number of items in mask.
+ Number of items in 'masks'.
masks
Selected event masks by this client.
Masks are returned on a per-device basis, with masks for 'AllDevices' and
- 'AllMasterDevices' returned separately.
+ 'AllMasterDevices' returned separately. A client can calculate the
+ effective mask for a device with a bitwise OR of the AllDevices, the
+ AllMasterDevices and the device-specific mask.
If 'num_masks' is 0, no events have been selected by this client on the
given window.
@@ -474,7 +473,7 @@ are required to be 0.
win_y
Pointer position relative to 'window' or 0 if 'same_screen' is false.
same_screen
- TRUE if 'window' is on the same screen as the pointer.
+ True if 'window' is on the same screen as the pointer.
mods
XKB modifier state on the paired device.
group
@@ -596,9 +595,10 @@ are required to be 0.
changes
The list of changes.
- The server processes the changes one by one and applies changes
- immediately. If an error occurs, processing stops at the current change
- and returns the number of successfully applied changes in the error.
+ The server processes the changes in the order received from the client and
+ applies each requested change immediately. If an error occurs, processing
+ stops at the current change and returns the number of successfully applied
+ changes in the error.
ADDMASTER creates a pair of master devices.
type
@@ -608,9 +608,9 @@ are required to be 0.
name_len
Length of 'name' in bytes.
send_core
- TRUE if the device should send core events.
+ True if the device should send core events.
enable
- TRUE if the device is to be enabled immediately.
+ True if the device is to be enabled immediately.
name
The name for the new master devices. The master pointer's name is
automatically appended with " pointer", the master keyboard's name is
@@ -632,7 +632,8 @@ are required to be 0.
return_pointer
return_keyboard
The master pointer and master keyboard to attach slave devices to, if
- 'return_mode' is Attach.
+ 'return_mode' is Attach. If 'return_mode' is Float, 'return_pointer'
+ and 'return_keyboard' are undefined.
Removing a master pointer removes the paired master keyboard and vice
versa.
@@ -698,9 +699,9 @@ are required to be 0.
win
The window or client ID.
set
- TRUE if the client has a ClientPointer set.
+ True if the client has a ClientPointer set.
deviceid
- The master pointer that acts as a ClientPointer if 'set' is TRUE.
+ The master pointer that acts as a ClientPointer if 'set' is True.
No difference is made between a ClientPointer set explicitly through
XISetClientPointer and a ClientPointer implicitly assigned by the server
@@ -788,7 +789,6 @@ are required to be 0.
status
Success or the reason why the grab could not be established.
-
The masks parameter specifies which events the client wishes to receive
while the device is grabbed.
@@ -850,8 +850,8 @@ are required to be 0.
time
A valid server time or CurrentTime.
- The request has no effect if the specified time is earlier
- than the last-device-grab time or is later than the current server time.
+ The request has no effect if the specified time is earlier than the
+ last-device-grab time or is later than the current server time.
This request generates FocusIn and FocusOut events.
An XIUngrabDevice is performed automatically if the event window for an
active device grab becomes not viewable.
@@ -1370,7 +1370,7 @@ EVENTHEADER { type: BYTE
- if 'type' is FloatingSlave device, 'attachment' is undefined.
enabled
- TRUE if the device is enabled and can send events. A disabled master
+ True if the device is enabled and can send events. A disabled master
device will not forward events from an attached, enabled slave
device.
@@ -1534,7 +1534,7 @@ EVENTHEADER { type: BYTE
detail
The button number or keycode.
flags
- Flags as described in DeviceEvent::flags.
+ Flags as described in DeviceEvent.
valuators_len
The length of 'valuators' in 4 byte units.
valuators
@@ -1609,7 +1609,7 @@ EVENTHEADER { type: BYTE
Specifies the relation of the event window to the window the pointer
entered or left. See the core protocol spec for details.
same_screen
- TRUE if the event window is on the same screen as the pointer's root
+ True if the event window is on the same screen as the pointer's root
window.
focus
If the event window is the focus window or an inferior of the focus
commit 26f244fadc188cc76f53c82c10bc3b308964f20c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jul 28 11:12:50 2009 +1000
XI2proto.txt: sourceid on DeviceChanged is the device.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index 6349e19..f1cbb1e 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -1400,10 +1400,9 @@ EVENTHEADER { type: BYTE
A SlaveSwitch 'reason' can only occur on a master device.
If 'reason' is DeviceChange, the device itself has changed through
other means (e.g. a physical device change) and 'source' is
- undefined.
+ the device itself.
source
- The source of the new classes. Only defined in 'reason' is
- SlaveSwitch.
+ The source of the new classes.
num_classes
Number of 'classes' provided.
classes
commit b877309713930f92f04e2485bc40e1b6730d7e77
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jul 28 11:12:26 2009 +1000
XI2proto.txt: passive grabs can take XIAll{Master}Devices.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index 90690a3..6349e19 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -951,7 +951,7 @@ are required to be 0.
┌───
XIPassiveGrabDevice
- deviceid: DEVICEID
+ deviceid: DEVICE
detail: CARD32
grab_type: GRABTYPE
grab_window: Window
@@ -981,7 +981,8 @@ are required to be 0.
The cursor to display for the duration of the grab. If grab_type
is not GrabtypeButton, this argument is ignored.
deviceid
- The device to establish the passive grab on.
+ The device to establish the passive grab on or AllDevices or
+ AllMasterDevices.
detail
The button number, or key symbol to grab for.
Must be 0 for GrabtypeEnter and GrabtypeFocusIn.
commit d0b1e55b876a29a7c820ec12d7b9cb5e081e1944
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jul 28 10:53:08 2009 +1000
XI2proto.txt: grabbing a slave does not detach it anymore.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/XI2proto.txt b/XI2proto.txt
index ab075f7..90690a3 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -1028,11 +1028,7 @@ are required to be 0.
master keyboard are used. If deviceid specifies a slave pointer
Reply to: