2313 lines
48 KiB
XML
2313 lines
48 KiB
XML
<appendix id="input_extension_protocol_encoding">
|
|
<title>Input Extension Protocol Encoding</title>
|
|
<para>
|
|
<function>Syntactic Conventions</function>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
All numbers are in decimal,
|
|
unless prefixed with #x, in which case they are in hexadecimal (base 16).
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
The general syntax used to describe requests, replies, errors, events, and
|
|
compound types is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<function>NameofThing</function>
|
|
encode-form
|
|
...
|
|
encode-form
|
|
</literallayout>
|
|
Each encode-form describes a single component.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
For components described in the protocol as:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
name: TYPE
|
|
</literallayout>
|
|
the encode-form is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2.5i -->
|
|
N TYPE name
|
|
</literallayout>
|
|
N is the number of bytes occupied in the data stream,
|
|
and TYPE is the interpretation of those bytes.
|
|
For example,
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i -->
|
|
<!-- .ta 1i 1.5i -->
|
|
depth: CARD8
|
|
</literallayout>
|
|
becomes:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2.5i -->
|
|
1 CARD8 depth
|
|
</literallayout>
|
|
For components with a static numeric value the encode-form is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2.5i -->
|
|
N value name
|
|
</literallayout>
|
|
The value is always interpreted as an N-byte unsigned integer.
|
|
For example,
|
|
the first two bytes of a Window error are always zero (indicating an
|
|
error in general) and three (indicating the Window error in particular):
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2.5i -->
|
|
1 0 Error
|
|
1 3 code
|
|
</literallayout>
|
|
For components described in the protocol as:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
name: <function>{Name1, ..., NameI}</function>
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
the encode-form is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2.5i -->
|
|
N name
|
|
value1 Name1
|
|
...
|
|
valueI NameI
|
|
</literallayout>
|
|
The value is always interpreted as an N-byte unsigned integer.
|
|
Note that the size of N is sometimes larger than that strictly required
|
|
to encode the values.
|
|
For example:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
class: <function>{InputOutput, InputOnly, CopyFromParent}</function>
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
becomes:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2.5i 3i -->
|
|
<!-- .ta 1i 1.5i 2.5i 3i -->
|
|
2 class
|
|
0 CopyFromParent
|
|
1 InputOutput
|
|
2 InputOnly
|
|
</literallayout>
|
|
For components described in the protocol as:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
NAME: TYPE or <function>Alternative1 ... or AlternativeI</function>
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
the encode-form is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2i 2.5i 3i -->
|
|
<!-- .ta 1i 1.5i 2i 2.5i 3i -->
|
|
N TYPE NAME
|
|
value1 Alternative1
|
|
...
|
|
valueI AlternativeI
|
|
</literallayout>
|
|
The alternative values are guaranteed not to conflict with the encoding
|
|
of TYPE.
|
|
For example:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
destination: WINDOW or <function>PointerWindow</function> or <function>InputFocus</function>
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
becomes:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2.5i -->
|
|
4 WINDOW destination
|
|
0 PointerWindow
|
|
1 InputFocus
|
|
</literallayout>
|
|
For components described in the protocol as:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i -->
|
|
<!-- .ta 1i 1.5i -->
|
|
value-mask: BITMASK
|
|
</literallayout>
|
|
the encode-form is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2i 2.5i -->
|
|
N BITMASK value-mask
|
|
mask1 mask-name1
|
|
...
|
|
maskI mask-nameI
|
|
</literallayout>
|
|
The individual bits in the mask are specified and named,
|
|
and N is 2 or 4.
|
|
The most-significant bit in a BITMASK is reserved for use in defining
|
|
chained (multiword) bitmasks, as extensions augment existing core requests.
|
|
The precise interpretation of this bit is not yet defined here,
|
|
although a probable mechanism is that a 1-bit indicates that another N bytes
|
|
of bitmask follows, with bits within the overall mask still interpreted
|
|
from least-significant to most-significant with an N-byte unit, with N-byte units
|
|
interpreted in stream order, and with the overall mask being byte-swapped
|
|
in individual N-byte units.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
For LISTofVALUE encodings, the request is followed by a section of the form:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i -->
|
|
<!-- .ta 1i 1.5i -->
|
|
VALUEs
|
|
encode-form
|
|
...
|
|
encode-form
|
|
</literallayout>
|
|
listing an encode-form for each VALUE.
|
|
The NAME in each encode-form keys to the corresponding BITMASK bit.
|
|
The encoding of a VALUE always occupies four bytes,
|
|
but the number of bytes specified in the encoding-form indicates how
|
|
many of the least-significant bytes are actually used;
|
|
the remaining bytes are unused and their values do not matter.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
In various cases, the number of bytes occupied by a component will be specified
|
|
by a lowercase single-letter variable name instead of a specific numeric
|
|
value, and often some other component will have its value specified as a
|
|
simple numeric expression involving these variables.
|
|
Components specified with such expressions are always interpreted
|
|
as unsigned integers.
|
|
The scope of such variables is always just the enclosing request, reply,
|
|
error, event, or compound type structure.
|
|
For example:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2i 2.5i -->
|
|
2 3+n request length
|
|
4n LISTofPOINT points
|
|
</literallayout>
|
|
For unused bytes (the values of the bytes are undefined and do not matter),
|
|
the encode-form is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2i 2.5i -->
|
|
N unused
|
|
</literallayout>
|
|
If the number of unused bytes is variable, the encode-form typically is:
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2i 2.5i -->
|
|
p unused, p=pad(E)
|
|
</literallayout>
|
|
where E is some expression,
|
|
and pad(E) is the number of bytes needed to round E up to a multiple of four.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA 1i 1.5i 2i 2.5i -->
|
|
<!-- .ta 1i 1.5i 2i 2.5i -->
|
|
pad(E) = (4 - (E mod 4)) mod 4
|
|
</literallayout>
|
|
<!-- .ps +2 -->
|
|
<function>Common Types</function>
|
|
<!-- .ps -->
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
LISTofFOO
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
In this document the LISTof notation strictly means some number of repetitions
|
|
of the FOO encoding;
|
|
the actual length of the list is encoded elsewhere.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>
|
|
<!-- .LP -->
|
|
SETofFOO
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
A set is always represented by a bitmask, with a 1-bit indicating presence in
|
|
the set.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>
|
|
<!-- .LP -->
|
|
BITMASK: CARD32
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
WINDOW: CARD32
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
BYTE: 8-bit value
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
INT8: 8-bit signed integer
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
INT16: 16-bit signed integer
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
INT32: 32-bit signed integer
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
CARD8: 8-bit unsigned integer
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
CARD16: 16-bit unsigned integer
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
CARD32: 32-bit unsigned integer
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
TIMESTAMP: CARD32
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
EVENTCLASS: CARD32
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
INPUTCLASS
|
|
0 KeyClass
|
|
1 ButtonClass
|
|
2 ValuatorClass
|
|
3 FeedbackClass
|
|
4 ProximityClass
|
|
5 FocusClass
|
|
6 OtherClass
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
INPUTCLASS
|
|
0 KbdFeedbackClass
|
|
1 PtrFeedbackClass
|
|
2 StringFeedbackClass
|
|
3 IntegerFeedbackClass
|
|
4 LedFeedbackClass
|
|
5 BellFeedbackClass
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
INPUTINFO
|
|
0 KEYINFO
|
|
1 BUTTONINFO
|
|
2 VALUATORINFO
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
DEVICEMODE
|
|
0 Relative
|
|
1 Absolute
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
PROXIMITYSTATE
|
|
0 InProximity
|
|
1 OutOfProximity
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
BOOL
|
|
0 False
|
|
1 True
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
KEYSYM: CARD32
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
KEYCODE: CARD8
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
BUTTON: CARD8
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
SETofKEYBUTMASK
|
|
#x0001 Shift
|
|
#x0002 Lock
|
|
#x0004 Control
|
|
#x0008 Mod1
|
|
#x0010 Mod2
|
|
#x0020 Mod3
|
|
#x0040 Mod4
|
|
#x0080 Mod5
|
|
#x0100 Button1
|
|
#x0200 Button2
|
|
#x0400 Button3
|
|
#x0800 Button4
|
|
#x1000 Button5
|
|
#xe000 unused but must be zero
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .75i 1.75i -->
|
|
<!-- .ta .75i 1.75i -->
|
|
SETofKEYMASK
|
|
encodings are the same as for SETofKEYBUTMASK, except with
|
|
#xff00 unused but must be zero
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
STRING8: LISTofCARD8
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
STR
|
|
1 n length of name in bytes
|
|
n STRING8 name
|
|
</literallayout>
|
|
<!-- .ps +2 -->
|
|
<function>Errors</function>
|
|
<!-- .ps -->
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Request
|
|
1 0 Error
|
|
1 1 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Value
|
|
1 0 Error
|
|
1 2 code
|
|
2 CARD16 sequence number
|
|
4 <32-bits> bad value
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Window
|
|
1 0 Error
|
|
1 3 code
|
|
2 CARD16 sequence number
|
|
4 CARD32 bad resource id
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Match
|
|
1 0 Error
|
|
1 8 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Access
|
|
1 0 Error
|
|
1 10 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Alloc
|
|
1 0 Error
|
|
1 11 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Name
|
|
1 0 Error
|
|
1 15 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Device
|
|
1 0 Error
|
|
1 CARD8 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Event
|
|
1 0 Error
|
|
1 CARD8 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Mode
|
|
1 0 Error
|
|
1 CARD8 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
Class
|
|
1 0 Error
|
|
1 CARD8 code
|
|
2 CARD16 sequence number
|
|
4 unused
|
|
2 CARD16 minor opcode
|
|
1 CARD8 major opcode
|
|
21 unused
|
|
</literallayout>
|
|
<!-- .ps +2 -->
|
|
Keyboards
|
|
<!-- .ps -->
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
KEYCODE values are always greater than 7 (and less than 256).
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
KEYSYM values with the bit #x10000000 set are reserved as vendor-specific.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
The names and encodings of the standard KEYSYM values are contained in
|
|
<!-- .\"Appendix B, Keysym Encoding. -->
|
|
appendix F.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<!-- .ps +2 -->
|
|
Pointers
|
|
<!-- .ps -->
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
BUTTON values are numbered starting with one.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<!-- .ps +2 -->
|
|
Requests
|
|
<!-- .ps -->
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetExtensionVersion
|
|
1 CARD8 input extension opcode
|
|
1 1 GetExtensionVersion opcode
|
|
2 2+(n+p)/4 request length
|
|
2 n length of name
|
|
2 unused
|
|
n STRING8 name
|
|
p unused, p=pad(n)
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 1 GetExtensionVersion opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
2 CARD16 major version
|
|
2 CARD16 minor version
|
|
1 BOOL present
|
|
19 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ListInputDevices
|
|
1 CARD8 input extension opcode
|
|
1 2 ListInputDevices opcode
|
|
2 1 request length
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 2 ListInputDevices opcode
|
|
2 CARD16 sequence number
|
|
4 (n+p)/4 reply length
|
|
1 CARD8 number of input devices
|
|
23 unused
|
|
n LISTofDEVICEINFO info for each input device
|
|
p unused, p=pad(n)
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DEVICEINFO
|
|
4 CARD32 device type
|
|
1 CARD8 device id
|
|
1 CARD8 number of input classes this device reports
|
|
1 CARD8 device use
|
|
0 IsXPointer
|
|
1 IsXKeyboard
|
|
2 IsXExtensionDevice
|
|
1 unused
|
|
n LISTofINPUTINFO input info for each input class
|
|
m STR name
|
|
p unused, p=pad(m)
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
INPUTINFO KEYINFO or BUTTONINFO or VALUATORINFO
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
KEYINFO
|
|
1 0 class id
|
|
1 8 length
|
|
1 KEYCODE minimum keycode
|
|
1 KEYCODE maximum keycode
|
|
2 CARD16 number of keys
|
|
2 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
BUTTONINFO
|
|
1 1 class id
|
|
1 4 length
|
|
2 CARD16 number of buttons
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .75i 2.0i 3.0i -->
|
|
<!-- .ta .2i .75i 2.0i 3.0i -->
|
|
VALUATORINFO
|
|
1 2 class id
|
|
1 8+12n length
|
|
1 n number of axes
|
|
1 SETofDEVICEMODE mode
|
|
4 CARD32 size of motion buffer
|
|
12n LISTofAXISINFO valuator limits
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
AXISINFO
|
|
4 CARD32 resolution
|
|
4 CARD32 minimum value
|
|
4 CARD32 maximum value
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
OpenDevice
|
|
1 CARD8 input extension opcode
|
|
1 3 OpenDevice opcode
|
|
2 2 request length
|
|
1 CARD8 device id
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 3.5i -->
|
|
<!-- .ta .2i .5i 1.5i 3.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 3 OpenDevice opcode
|
|
2 CARD16 sequence number
|
|
4 (n+p)/4 reply length
|
|
1 CARD8 number of input classes
|
|
23 unused
|
|
n LISTofINPUTCLASSINFO input class information
|
|
p unused, p=pad(n)
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
INPUTCLASSINFO
|
|
1 CARD8 input class id
|
|
0 KEY
|
|
1 BUTTON
|
|
2 VALUATOR
|
|
3 FEEDBACK
|
|
4 PROXIMITY
|
|
5 FOCUS
|
|
6 OTHER
|
|
1 CARD8 event type base code for this class
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
CloseDevice
|
|
1 CARD8 input extension opcode
|
|
1 4 CloseDevice opcode
|
|
2 2 request length
|
|
1 CARD8 device id
|
|
3 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
SetDeviceMode
|
|
1 CARD8 input extension opcode
|
|
1 5 SetDeviceMode opcode
|
|
2 2 request length
|
|
1 CARD8 device id
|
|
1 CARD8 mode
|
|
2 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 3.5i -->
|
|
<!-- .ta .2i .5i 1.5i 3.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 5 SetDeviceMode opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 CARD8 status
|
|
0 Success
|
|
1 AlreadyGrabbed
|
|
3 + first_error DeviceBusy
|
|
23 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
SelectExtensionEvent
|
|
1 CARD8 input extension opcode
|
|
1 6 SelectExtensionEvent opcode
|
|
2 3+n request length
|
|
4 Window event window
|
|
2 CARD16 count
|
|
2 unused
|
|
4n LISTofEVENTCLASS desired events
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetSelectedExtensionEvents
|
|
1 CARD8 input extension opcode
|
|
1 7 GetSelectedExtensionEvents opcode
|
|
2 2 request length
|
|
4 Window event window
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 7 GetSelecteExtensionEvents opcode
|
|
2 CARD16 sequence number
|
|
4 n + m reply length
|
|
2 n this client count
|
|
2 m all clients count
|
|
20 unused
|
|
4n LISTofEVENTCLASS this client list
|
|
4m LISTofEVENTCLASS all clients list
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ChangeDeviceDontPropagateList
|
|
1 CARD8 input extension opcode
|
|
1 8 ChangeDeviceDontPropagateList opcode
|
|
2 3+n request length
|
|
4 Window event window
|
|
2 n count of events
|
|
1 mode
|
|
0 AddToList
|
|
1 DeleteFromList
|
|
1 unused
|
|
4n LISTofEVENTCLASS desired events
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetDeviceDontPropagateList
|
|
1 CARD8 input extension opcode
|
|
1 9 GetDeviceDontPropagateList opcode
|
|
2 2 request length
|
|
4 Window event window
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 9 GetDeviceDontPropagateList opcode
|
|
2 CARD16 sequence number
|
|
4 n reply length
|
|
2 n count of events
|
|
22 unused
|
|
4n LISTofEVENTCLASS don't propagate list
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetDeviceMotionEvents
|
|
1 CARD8 input extension opcode
|
|
1 10 GetDeviceMotionEvents opcode
|
|
2 4 request length
|
|
4 TIMESTAMP start
|
|
0 CurrentTime
|
|
4 TIMESTAMP stop
|
|
0 CurrentTime
|
|
1 CARD8 device id
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 3.5i -->
|
|
<!-- .ta .2i .5i 1.5i 3.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 10 GetDeviceMotionEvents opcode
|
|
2 CARD16 sequence number
|
|
4 (m+1)n reply length
|
|
4 n number of DEVICETIMECOORDs in events
|
|
1 m number of valuators per event
|
|
1 CARD8 mode of the device
|
|
0 Absolute
|
|
1 Relative
|
|
18 unused
|
|
(4m+4)n LISTofDEVICETIMECOORD events
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DEVICETIMECOORD
|
|
4 TIMESTAMP time
|
|
4m LISTofINT32 valuators
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ChangeKeyboardDevice
|
|
1 CARD8 input extension opcode
|
|
1 11 ChangeKeyboardDevice opcode
|
|
2 2 request length
|
|
1 CARD8 device id
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 11 ChangeKeyboardDevice opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 status
|
|
0 Success
|
|
1 AlreadyGrabbed
|
|
2 DeviceFrozen
|
|
23 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ChangePointerDevice
|
|
1 CARD8 input extension opcode
|
|
1 12 ChangePointerDevice opcode
|
|
2 2 request length
|
|
1 CARD8 x-axis
|
|
1 CARD8 y-axis
|
|
1 CARD8 device id
|
|
1 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 12 ChangePointerDevice opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 status
|
|
0 Success
|
|
1 AlreadyGrabbed
|
|
2 DeviceFrozen
|
|
23 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GrabDevice
|
|
1 CARD8 input extension opcode
|
|
1 13 GrabDevice opcode
|
|
2 5+n request length
|
|
4 WINDOW grab-window
|
|
4 TIMESTAMP time
|
|
0 CurrentTime
|
|
2 n count of events
|
|
1 this-device-mode
|
|
0 Synchronous
|
|
1 Asynchronous
|
|
1 other-devices-mode
|
|
0 Synchronous
|
|
1 Asynchronous
|
|
1 BOOL owner-events
|
|
1 CARD8 device id
|
|
2 unused
|
|
4n LISTofEVENTCLASS event list
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 13 GrabDevice opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 status
|
|
0 Success
|
|
1 AlreadyGrabbed
|
|
2 InvalidTime
|
|
3 NotViewable
|
|
4 Frozen
|
|
23 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
UngrabDevice
|
|
1 CARD8 input extension opcode
|
|
1 14 UngrabDevice opcode
|
|
2 3 request length
|
|
4 TIMESTAMP time
|
|
0 CurrentTime
|
|
1 CARD8 device id
|
|
3 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GrabDeviceKey
|
|
1 CARD8 input extension opcode
|
|
1 15 GrabDeviceKey opcode
|
|
2 5+n request length
|
|
4 WINDOW grab-window
|
|
2 n count of events
|
|
2 SETofKEYMASK modifiers
|
|
#x8000 AnyModifier
|
|
1 CARD8 modifier device
|
|
#x0FF UseXKeyboard
|
|
1 CARD8 grabbed device
|
|
1 KEYCODE key
|
|
0 AnyKey
|
|
1 this-device-mode
|
|
0 Synchronous
|
|
1 Asynchronous
|
|
1 other-devices-mode
|
|
0 Synchronous
|
|
1 Asynchronous
|
|
1 BOOL owner-events
|
|
2 unused
|
|
4n LISTofEVENTCLASS event list
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
UngrabDeviceKey
|
|
1 CARD8 input extension opcode
|
|
1 16 UngrabDeviceKey opcode
|
|
2 4 request length
|
|
4 WINDOW grab-window
|
|
2 SETofKEYMASK modifiers
|
|
#x8000 AnyModifier
|
|
1 CARD8 modifier device
|
|
#x0FF UseXKeyboard
|
|
1 KEYCODE key
|
|
0 AnyKey
|
|
1 CARD8 grabbed device
|
|
3 unused
|
|
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GrabDeviceButton
|
|
1 CARD8 input extension opcode
|
|
1 17 GrabDeviceButton opcode
|
|
2 5+n request length
|
|
4 WINDOW grab-window
|
|
1 CARD8 grabbed device
|
|
1 CARD8 modifier device
|
|
#x0FF UseXKeyboard
|
|
2 n count of desired events
|
|
2 SETofKEYMASK modifiers
|
|
1 this-device-mode
|
|
0 Synchronous
|
|
1 Asynchronous
|
|
1 other-device-mode
|
|
0 Synchronous
|
|
1 Asynchronous
|
|
1 BUTTON button
|
|
0 AnyButton
|
|
1 BOOL owner-events
|
|
#x8000 AnyModifier
|
|
2 unused
|
|
4n LISTofEVENTCLASS event list
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
UngrabDeviceButton
|
|
1 CARD8 input extension opcode
|
|
1 18 UngrabDeviceButton opcode
|
|
2 4 request length
|
|
4 WINDOW grab-window
|
|
2 SETofKEYMASK modifiers
|
|
#x8000 AnyModifier
|
|
1 CARD8 modifier device
|
|
#x0FF UseXKeyboard
|
|
1 BUTTON button
|
|
0 AnyButton
|
|
1 CARD8 grabbed device
|
|
3 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
AllowDeviceEvents
|
|
1 CARD8 input extension opcode
|
|
1 19 AllowDeviceEvents opcode
|
|
2 3 request length
|
|
4 TIMESTAMP time
|
|
0 CurrentTime
|
|
1 mode
|
|
0 AsyncThisDevice
|
|
1 SyncThisDevice
|
|
2 ReplayThisDevice
|
|
3 AsyncOtherDevices
|
|
4 AsyncAll
|
|
5 SyncAll
|
|
1 CARD8 device id
|
|
2 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetDeviceFocus
|
|
1 CARD8 input extension opcode
|
|
1 20 GetDeviceFocus opcode
|
|
2 2 request length
|
|
1 CARD8 device
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 20 GetDeviceFocus opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
4 WINDOW focus
|
|
0 None
|
|
1 PointerRoot
|
|
3 FollowKeyboard
|
|
4 TIMESTAMP focus time
|
|
1 revert-to
|
|
0 None
|
|
1 PointerRoot
|
|
2 Parent
|
|
3 FollowKeyboard
|
|
15 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
SetDeviceFocus
|
|
1 CARD8 input extension opcode
|
|
1 21 SetDeviceFocus opcode
|
|
2 4 request length
|
|
4 WINDOW focus
|
|
0 None
|
|
1 PointerRoot
|
|
3 FollowKeyboard
|
|
4 TIMESTAMP time
|
|
0 CurrentTime
|
|
1 revert-to
|
|
0 None
|
|
1 PointerRoot
|
|
2 Parent
|
|
3 FollowKeyboard
|
|
1 CARD8 device
|
|
2 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetFeedbackControl
|
|
1 CARD8 input extension opcode
|
|
1 22 GetFeedbackControl opcode
|
|
2 2 request length
|
|
1 CARD8 device id
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 22 GetFeedbackControl opcode
|
|
2 CARD16 sequence number
|
|
4 m/4 reply length
|
|
2 n number of feedbacks supported
|
|
22 unused
|
|
m LISTofFEEDBACKSTATE feedbacks
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
FEEDBACKSTATE KBDFEEDBACKSTATE, PTRFEEDBACKSTATE, INTEGERFEEDBACKSTATE,
|
|
STRINGFEEDBACKSTATE, BELLFEEDBACKSTATE, or LEDFEEDBACKSTATE
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
KBDFEEDBACKSTATE
|
|
1 0 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 20 length
|
|
2 CARD16 pitch
|
|
2 CARD16 duration
|
|
4 CARD32 led_mask
|
|
4 CARD32 led_values
|
|
1 global_auto_repeat
|
|
0 Off
|
|
1 On
|
|
1 CARD8 click
|
|
1 CARD8 percent
|
|
1 unused
|
|
32 LISTofCARD8 auto_repeats
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
PTRFEEDBACKSTATE
|
|
1 0 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 12 length
|
|
2 unused
|
|
2 CARD16 acceleration-numerator
|
|
2 CARD16 acceleration-denominator
|
|
2 CARD16 threshold
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
INTEGERFEEDBACKSTATE
|
|
1 0 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 16 length
|
|
4 CARD32 resolution
|
|
4 INT32 minimum value
|
|
4 INT32 maximum value
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
STRINGFEEDBACKSTATE
|
|
1 1 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 4n+8 length
|
|
2 CARD16 max_symbols
|
|
2 n number of keysyms supported
|
|
4n LISTofKEYSYM key symbols supported
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
BELLFEEDBACKSTATE
|
|
1 1 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 12 length
|
|
1 CARD8 percent
|
|
3 unused
|
|
2 CARD16 pitch
|
|
2 CARD16 duration
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
LEDFEEDBACKSTATE
|
|
1 1 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 12 length
|
|
4 CARD32 led_mask
|
|
4 BITMASK led_values
|
|
#x0001 On
|
|
#x0002 Off
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ChangeFeedbackControl
|
|
1 CARD8 input extension opcode
|
|
1 23 ChangeFeedbackControl opcode
|
|
2 3+n/4 request length
|
|
4 BITMASK value-mask (has n bits set to 1)
|
|
#x0001 keyclick-percent
|
|
#x0002 bell-percent
|
|
#x0004 bell-pitch
|
|
#x0008 bell-duration
|
|
#x0010 led
|
|
#x0020 led-mode
|
|
#x0040 key
|
|
#x0080 auto-repeat-mode
|
|
#x0001 string
|
|
#x0001 integer
|
|
#x0001 acceleration-numerator
|
|
#x0002 acceleration-denominator
|
|
#x0004 acceleration-threshold
|
|
1 CARD8 device id
|
|
1 CARD8 feedback class id
|
|
2 unused
|
|
n FEEDBACKCLASS
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
FEEDBACKCLASS KBDFEEDBACKCTL, PTRFEEDBACKCTL, INTEGERFEEDBACKCTL,
|
|
STRINGFEEDBACKCTL, BELLFEEDBACKCTL, or LEDFEEDBACKCTL
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
KBDFEEDBACKCTL
|
|
1 0 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 20 length
|
|
1 KEYCODE key
|
|
1 auto-repeat-mode
|
|
0 Off
|
|
1 On
|
|
2 Default
|
|
1 INT8 key-click-percent
|
|
1 INT8 bell-percent
|
|
2 INT16 bell-pitch
|
|
2 INT16 bell-duration
|
|
4 CARD32 led_mask
|
|
4 CARD32 led_values
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
PTRFEEDBACKCTL
|
|
1 1 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 12 length
|
|
2 unused
|
|
2 INT16 numerator
|
|
2 INT16 denominator
|
|
2 INT16 threshold
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
STRINGCTL
|
|
1 2 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 4n+8 length
|
|
2 unused
|
|
2 n number of keysyms to display
|
|
4n LISTofKEYSYM list of key symbols to display
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
INTEGERCTL
|
|
1 3 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 8 length
|
|
4 INT32 integer to display
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
LEDCTL
|
|
1 4 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 12 length
|
|
4 CARD32 led_mask
|
|
4 BITMASK led_values
|
|
#x0001 On
|
|
#x0002 Off
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
BELLCTL
|
|
1 5 feedback class id
|
|
1 CARD8 id of this feedback
|
|
2 8 length
|
|
1 INT8 percent
|
|
3 unused
|
|
2 INT16 pitch
|
|
2 INT16 duration
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetDeviceKeyMapping
|
|
1 CARD8 input extension opcode
|
|
1 24 GetDeviceKeyMapping opcode
|
|
2 2 request length
|
|
1 CARD8 device
|
|
1 KEYCODE first-keycode
|
|
1 CARD8 count
|
|
1 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .75i 2.0i 3.0i -->
|
|
<!-- .ta .2i .75i 2.0i 3.0i -->
|
|
=>
|
|
1 1 Reply
|
|
1 24 GetDeviceKeyMapping opcode
|
|
2 CARD16 sequence number
|
|
4 nm reply length (m = count field from the request)
|
|
1 n keysyms-per-keycode
|
|
23 unused
|
|
4nm LISTofKEYSYM keysyms
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .75i 2.0i 3.0i -->
|
|
<!-- .ta .2i .75i 2.0i 3.0i -->
|
|
ChangeDeviceKeyMapping
|
|
1 CARD8 input extension opcode
|
|
1 25 ChangeDeviceKeyMapping opcode
|
|
2 2+nm request length
|
|
1 CARD8 device
|
|
1 KEYCODE first-keycode
|
|
1 m keysyms-per-keycode
|
|
1 n keycode-count
|
|
4nm LISTofKEYSYM keysyms
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetDeviceModifierMapping
|
|
1 CARD8 input extension opcode
|
|
1 26 GetDeviceModifierMapping opcode
|
|
2 2 request length
|
|
1 CARD8 device
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 26 GetDeviceModifierMapping opcode
|
|
2 CARD16 sequence number
|
|
4 2n reply length
|
|
1 n keycodes-per-modifier
|
|
23 unused
|
|
8n LISTofKEYCODE keycodes
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
SetDeviceModifierMapping
|
|
1 CARD8 input extension opcode
|
|
1 27 SetDeviceModifier opcode
|
|
2 2+2n request length
|
|
1 CARD8 device
|
|
1 n keycodes-per-modifier
|
|
2 unused
|
|
8n LISTofKEYCODE keycodes
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 27 SetDeviceModifierMapping opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 status
|
|
0 Success
|
|
1 Busy
|
|
2 Failed
|
|
23 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetDeviceButtonMapping
|
|
1 CARD8 input extension opcode
|
|
1 28 GetDeviceButtonMapping opcode
|
|
2 2 request length
|
|
1 CARD8 device
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 28 GetDeviceButtonMapping opcode
|
|
2 CARD16 sequence number
|
|
4 (n+p)/4 reply length
|
|
1 n number of elements in map list
|
|
23 unused
|
|
n LISTofCARD8 map
|
|
p unused, p=pad(n)
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
SetDeviceButtonMapping
|
|
1 CARD8 input extension opcode
|
|
1 29 SetDeviceButtonMapping opcode
|
|
2 2+(n+p)/4 request length
|
|
1 CARD8 device
|
|
1 n length of map
|
|
2 unused
|
|
n LISTofCARD8 map
|
|
p unused, p=pad(n)
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 29 SetDeviceButtonMapping opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 status
|
|
0 Success
|
|
1 Busy
|
|
23 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
QueryDeviceState
|
|
1 CARD8 input extension opcode
|
|
1 30 QueryDeviceState opcode
|
|
2 2 request length
|
|
1 CARD8 device
|
|
3 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 30 QueryDeviceState opcode
|
|
2 CARD16 sequence number
|
|
4 m/4 reply length
|
|
1 n number of input classes
|
|
23 unused
|
|
m LISTofINPUTSTATE
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
INPUTSTATE KEYSTATE or BUTTONSTATE or VALUATORSTATE
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
KEYSTATE
|
|
1 CARD8 key input class id
|
|
1 36 length
|
|
1 CARD8 num_keys
|
|
1 unused
|
|
32 LISTofCARD8 status of keys
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
BUTTONSTATE
|
|
1 CARD8 button input class id
|
|
1 36 length
|
|
1 CARD8 num_buttons
|
|
1 unused
|
|
32 LISTofCARD8 status of buttons
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
VALUATORSTATE
|
|
1 CARD8 valuator input class id
|
|
1 4n + 4 length
|
|
1 n number of valuators
|
|
1 mode
|
|
#x01 DeviceMode (0 = Relative, 1 = Absolute)
|
|
#x02 ProximityState (0 = InProximity, 1 = OutOfProximity)
|
|
4n LISTofCARD32 status of valuators
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
SendExtensionEvent
|
|
1 CARD8 input extension opcode
|
|
1 31 SendExtensionEvent opcode
|
|
2 4 + 8n + m request length
|
|
4 WINDOW destination
|
|
1 CARD8 device
|
|
1 BOOL propagate
|
|
2 CARD16 eventclass count
|
|
1 CARD8 num_events
|
|
3 unused
|
|
32n LISTofEVENTS events to send
|
|
4m LISTofEVENTCLASS desired events
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceBell
|
|
1 CARD8 input extension opcode
|
|
1 32 DeviceBell opcode
|
|
2 2 request length
|
|
1 CARD8 device id
|
|
1 CARD8 feedback id
|
|
1 CARD8 feedback class
|
|
1 INT8 percent
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
SetDeviceValuators
|
|
1 CARD8 input extension opcode
|
|
1 33 SetDeviceValuators opcode
|
|
2 2 + n request length
|
|
1 CARD8 device id
|
|
1 CARD8 first valuator
|
|
1 n number of valuators
|
|
1 unused
|
|
4n LISTofINT32 valuator values to set
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 3.5i -->
|
|
<!-- .ta .2i .5i 1.5i 3.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 33 SetDeviceValuators opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 CARD8 status
|
|
0 Success
|
|
1 AlreadyGrabbed
|
|
23 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
GetDeviceControl
|
|
1 CARD8 input extension opcode
|
|
1 34 GetDeviceControl opcode
|
|
2 2 request length
|
|
2 CARD16 device control type
|
|
1 CARD8 device id
|
|
1 unused
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 3.5i -->
|
|
<!-- .ta .2i .5i 1.5i 3.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 34 GetDeviceControl opcode
|
|
2 CARD16 sequence number
|
|
4 n/4 reply length
|
|
1 CARD8 status
|
|
0 Success
|
|
1 AlreadyGrabbed
|
|
3 + first_error DeviceBusy
|
|
23 unused
|
|
n DEVICESTATE
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DEVICESTATE DEVICERESOLUTIONSTATE
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DEVICERESOLUTIONSTATE
|
|
2 0 control type
|
|
2 8 + 12n length
|
|
4 n num_valuators
|
|
4n LISTOfCARD32 resolution values
|
|
4n LISTOfCARD32 resolution min_values
|
|
4n LISTOfCARD32 resolution max_values
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ChangeDeviceControl
|
|
1 CARD8 input extension opcode
|
|
1 35 ChangeDeviceControl opcode
|
|
2 2+n/4 request length
|
|
2 CARD16 control type
|
|
1 CARD8 device id
|
|
1 unused
|
|
n DEVICECONTROL
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DEVICECONTROL DEVICERESOLUTIONCTL
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DEVICERESOLUTIONCTL
|
|
2 1 control type
|
|
2 8 + 4n length
|
|
1 CARD8 first_valuator
|
|
1 n num_valuators
|
|
2 unused
|
|
4n LISTOfCARD32 resolution values
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 3.5i -->
|
|
<!-- .ta .2i .5i 1.5i 3.5i -->
|
|
=>
|
|
1 1 Reply
|
|
1 35 ChangeDeviceControl opcode
|
|
2 CARD16 sequence number
|
|
4 0 reply length
|
|
1 CARD8 status
|
|
0 Success
|
|
1 AlreadyGrabbed
|
|
3 + first_error DeviceBusy
|
|
23 unused
|
|
</literallayout>
|
|
<!-- .ps +2 -->
|
|
Events
|
|
<!-- .ps -->
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
DeviceKeyPress, DeviceKeyRelease, DeviceButtonPress, DeviceButtonRelease,
|
|
ProximityIn, ProximityOut, and DeviceStateNotify events may be followed by
|
|
zero or more DeviceValuator events. DeviceMotionNotify events will be
|
|
followed by one or more DeviceValuator events.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceValuator
|
|
1 CARD8 code
|
|
1 CARD8 device id
|
|
2 CARD16 sequence number
|
|
2 SETofKEYBUTMASK state
|
|
1 n number of valuators this device reports
|
|
1 m number of first valuator in this event
|
|
24 LISTofINT32 valuators
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceKeyPress
|
|
1 CARD8 code
|
|
1 KEYCODE detail
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW root
|
|
4 WINDOW event
|
|
4 WINDOW child
|
|
0 None
|
|
2 INT16 root-x
|
|
2 INT16 root-y
|
|
2 INT16 event-x
|
|
2 INT16 event-y
|
|
2 SETofKEYBUTMASK state
|
|
1 BOOL same-screen
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceKeyRelease
|
|
1 CARD8 code
|
|
1 KEYCODE detail
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW root
|
|
4 WINDOW event
|
|
4 WINDOW child
|
|
0 None
|
|
2 INT16 root-x
|
|
2 INT16 root-y
|
|
2 INT16 event-x
|
|
2 INT16 event-y
|
|
2 SETofKEYBUTMASK state
|
|
1 BOOL same-screen
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceButtonPress
|
|
1 CARD8 code
|
|
1 BUTTON detail
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW root
|
|
4 WINDOW event
|
|
4 WINDOW child
|
|
0 None
|
|
2 INT16 root-x
|
|
2 INT16 root-y
|
|
2 INT16 event-x
|
|
2 INT16 event-y
|
|
2 SETofKEYBUTMASK state
|
|
1 BOOL same-screen
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceButtonRelease
|
|
1 CARD8 code
|
|
1 BUTTON detail
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW root
|
|
4 WINDOW event
|
|
4 WINDOW child
|
|
0 None
|
|
2 INT16 root-x
|
|
2 INT16 root-y
|
|
2 INT16 event-x
|
|
2 INT16 event-y
|
|
2 SETofKEYBUTMASK state
|
|
1 BOOL same-screen
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceMotionNotify
|
|
1 CARD8 code
|
|
1 detail
|
|
0 Normal
|
|
1 Hint
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW root
|
|
4 WINDOW event
|
|
4 WINDOW child
|
|
0 None
|
|
2 INT16 root-x
|
|
2 INT16 root-y
|
|
2 INT16 event-x
|
|
2 INT16 event-y
|
|
2 SETofKEYBUTMASK state
|
|
1 BOOL same-screen
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
</literallayout>
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceFocusIn
|
|
1 CARD8 code
|
|
1 detail
|
|
0 Ancestor
|
|
1 Virtual
|
|
2 Inferior
|
|
3 Nonlinear
|
|
4 NonlinearVirtual
|
|
5 Pointer
|
|
6 PointerRoot
|
|
7 None
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW event
|
|
1 mode
|
|
0 Normal
|
|
1 Grab
|
|
2 Ungrab
|
|
3 WhileGrabbed
|
|
1 CARD8 device id
|
|
18 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceFocusOut
|
|
1 CARD8 code
|
|
1 detail
|
|
0 Ancestor
|
|
1 Virtual
|
|
2 Inferior
|
|
3 Nonlinear
|
|
4 NonlinearVirtual
|
|
5 Pointer
|
|
6 PointerRoot
|
|
7 None
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW event
|
|
1 mode
|
|
0 Normal
|
|
1 Grab
|
|
2 Ungrab
|
|
3 WhileGrabbed
|
|
1 CARD8 device id
|
|
18 unused
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ProximityIn
|
|
1 CARD8 code
|
|
1 unused
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW root
|
|
4 WINDOW event
|
|
4 WINDOW child
|
|
0 None
|
|
2 INT16 root-x
|
|
2 INT16 root-y
|
|
2 INT16 event-x
|
|
2 INT16 event-y
|
|
2 SETofKEYBUTMASK state
|
|
1 BOOL same-screen
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ProximityOut
|
|
1 CARD8 code
|
|
1 unused
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
4 WINDOW root
|
|
4 WINDOW event
|
|
4 WINDOW child
|
|
0 None
|
|
2 INT16 root-x
|
|
2 INT16 root-y
|
|
2 INT16 event-x
|
|
2 INT16 event-y
|
|
2 SETofKEYBUTMASK state
|
|
1 BOOL same-screen
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
DeviceStateNotify events may be immediately followed by zero or one
|
|
DeviceKeyStateNotify and/ or zero or more DeviceValuator events.
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceStateNotify
|
|
1 CARD8 code
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
1 CARD8 num_keys
|
|
1 CARD8 num_buttons
|
|
1 CARD8 num_valuators
|
|
1 CARD8 valuator mode and input classes reported
|
|
#x01 reporting keys
|
|
#x02 reporting buttons
|
|
#x04 reporting valuators
|
|
#x40 device mode (0 = Relative, 1 = Absolute)
|
|
#x80 proximity state (0 = InProximity, 1 = OutOfProximity)
|
|
4 LISTofCARD8 first 32 keys (if reported)
|
|
4 LISTofCARD8 first 32 buttons (if reported)
|
|
12 LISTofCARD32 first 3 valuators (if reported)
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceKeyStateNotify
|
|
1 CARD8 code
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
2 CARD16 sequence number
|
|
28 LISTofCARD8 state of keys 33-255
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceButtonStateNotify
|
|
1 CARD8 code
|
|
1 CARD8 device id
|
|
#x80 MORE_EVENTS follow
|
|
2 CARD16 sequence number
|
|
28 LISTofCARD8 state of buttons 33-255
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceValuator
|
|
1 CARD8 code
|
|
1 CARD8 device id
|
|
2 CARD16 sequence number
|
|
2 SETofKEYBUTMASK state
|
|
1 n number of valuators this device reports
|
|
1 n number of first valuator in this event
|
|
24 LISTofINT32 valuators
|
|
</literallayout>
|
|
</para>
|
|
<para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
DeviceMappingNotify
|
|
1 CARD8 code
|
|
1 CARD8 device id
|
|
2 CARD16 sequence number
|
|
1 request
|
|
0 MappingModifier
|
|
1 MappingKeyboard
|
|
2 MappingPointer
|
|
1 KEYCODE first-keycode
|
|
1 CARD8 count
|
|
1 unused
|
|
4 TIMESTAMP time
|
|
20 unused
|
|
</literallayout>
|
|
</para>
|
|
<!-- .LP -->
|
|
<literallayout class="monospaced">
|
|
<!-- .TA .2i .5i 1.5i 2.5i -->
|
|
<!-- .ta .2i .5i 1.5i 2.5i -->
|
|
ChangeDeviceNotify
|
|
1 CARD8 code
|
|
1 CARD8 id of device specified on change request
|
|
2 CARD16 sequence number
|
|
4 TIMESTAMP time
|
|
1 request
|
|
0 NewPointer
|
|
1 NewKeyboard
|
|
23 unused
|
|
</literallayout>
|
|
<!-- .\" print Table of Contents -->
|
|
<!-- .if o .bp \" blank page to make count even -->
|
|
<!-- .bp 1 -->
|
|
<!-- .af PN i -->
|
|
<!-- .PX -->
|
|
|
|
</appendix>
|