1f1ee322dSmrg<appendix id="Input_Extension_Protocol_Encoding">
237eb1ca1Smrg<title>Input Extension Protocol Encoding</title>
337eb1ca1Smrg<para>
437eb1ca1Smrg<function>Syntactic Conventions</function>
537eb1ca1Smrg</para>
637eb1ca1Smrg<para>
737eb1ca1Smrg<!-- .LP -->
837eb1ca1SmrgAll numbers are in decimal, 
937eb1ca1Smrgunless prefixed with #x, in which case they are in hexadecimal (base 16).
1037eb1ca1Smrg</para>
1137eb1ca1Smrg<para>
1237eb1ca1Smrg<!-- .LP -->
1337eb1ca1SmrgThe general syntax used to describe requests, replies, errors, events, and
1437eb1ca1Smrgcompound types is:
1537eb1ca1Smrg</para>
1637eb1ca1Smrg<para>
1737eb1ca1Smrg<!-- .LP -->
1837eb1ca1Smrg<literallayout class="monospaced">
1937eb1ca1Smrg<function>NameofThing</function>
2037eb1ca1Smrg  encode-form
2137eb1ca1Smrg  ...
2237eb1ca1Smrg  encode-form
2337eb1ca1Smrg</literallayout>
2437eb1ca1SmrgEach encode-form describes a single component.
2537eb1ca1Smrg</para>
2637eb1ca1Smrg<para>
2737eb1ca1Smrg<!-- .LP -->
2837eb1ca1SmrgFor components described in the protocol as:
2937eb1ca1Smrg</para>
3037eb1ca1Smrg<para>
3137eb1ca1Smrg<!-- .LP -->
3237eb1ca1Smrg<literallayout class="monospaced">
3337eb1ca1Smrgname: TYPE
3437eb1ca1Smrg</literallayout>
3537eb1ca1Smrgthe encode-form is:
3637eb1ca1Smrg</para>
3737eb1ca1Smrg<para>
3837eb1ca1Smrg<!-- .LP -->
3937eb1ca1Smrg<literallayout class="monospaced">
4037eb1ca1Smrg<!-- .TA 1i 1.5i 2.5i -->
4137eb1ca1Smrg<!-- .ta 1i 1.5i 2.5i -->
4237eb1ca1SmrgN	TYPE	name
4337eb1ca1Smrg</literallayout>
4437eb1ca1SmrgN is the number of bytes occupied in the data stream, 
4537eb1ca1Smrgand TYPE is the interpretation of those bytes.
4637eb1ca1SmrgFor example,
4737eb1ca1Smrg</para>
4837eb1ca1Smrg<para>
4937eb1ca1Smrg<!-- .LP -->
5037eb1ca1Smrg<literallayout class="monospaced">
5137eb1ca1Smrg<!-- .TA 1i 1.5i -->
5237eb1ca1Smrg<!-- .ta 1i 1.5i -->
5337eb1ca1Smrgdepth: CARD8
5437eb1ca1Smrg</literallayout>
5537eb1ca1Smrgbecomes:
5637eb1ca1Smrg</para>
5737eb1ca1Smrg<para>
5837eb1ca1Smrg<!-- .LP -->
5937eb1ca1Smrg<literallayout class="monospaced">
6037eb1ca1Smrg<!-- .TA 1i 1.5i 2.5i  -->
6137eb1ca1Smrg<!-- .ta 1i 1.5i 2.5i -->
6237eb1ca1Smrg1	CARD8	depth
6337eb1ca1Smrg</literallayout>
6437eb1ca1SmrgFor components with a static numeric value the encode-form is:
6537eb1ca1Smrg</para>
6637eb1ca1Smrg<para>
6737eb1ca1Smrg<!-- .LP -->
6837eb1ca1Smrg<literallayout class="monospaced">
6937eb1ca1Smrg<!-- .TA 1i 1.5i 2.5i -->
7037eb1ca1Smrg<!-- .ta 1i 1.5i 2.5i -->
7137eb1ca1SmrgN	value	name
7237eb1ca1Smrg</literallayout>
7337eb1ca1SmrgThe value is always interpreted as an N-byte unsigned integer.
7437eb1ca1SmrgFor example, 
7537eb1ca1Smrgthe first two bytes of a Window error are always zero (indicating an
7637eb1ca1Smrgerror in general) and three (indicating the Window error in particular):
7737eb1ca1Smrg</para>
7837eb1ca1Smrg<para>
7937eb1ca1Smrg<!-- .LP -->
8037eb1ca1Smrg<literallayout class="monospaced">
8137eb1ca1Smrg<!-- .TA 1i 1.5i 2.5i -->
8237eb1ca1Smrg<!-- .ta 1i 1.5i 2.5i -->
8337eb1ca1Smrg1	0	Error
8437eb1ca1Smrg1	3	code
8537eb1ca1Smrg</literallayout>
8637eb1ca1SmrgFor components described in the protocol as:
8737eb1ca1Smrg</para>
8837eb1ca1Smrg<para>
8937eb1ca1Smrg<!-- .LP -->
9037eb1ca1Smrg<literallayout class="monospaced">
9137eb1ca1Smrgname: <function>{Name1, ..., NameI}</function>
9237eb1ca1Smrg</literallayout>
9337eb1ca1Smrg</para>
9437eb1ca1Smrg<para>
9537eb1ca1Smrg<!-- .LP -->
9637eb1ca1Smrgthe encode-form is:
9737eb1ca1Smrg</para>
9837eb1ca1Smrg<para>
9937eb1ca1Smrg<!-- .LP -->
10037eb1ca1Smrg<literallayout class="monospaced">
10137eb1ca1Smrg<!-- .TA 1i 1.5i 2.5i -->
10237eb1ca1Smrg<!-- .ta 1i 1.5i 2.5i -->
10337eb1ca1SmrgN		name
10437eb1ca1Smrg	value1 Name1
10537eb1ca1Smrg	...
10637eb1ca1Smrg	valueI NameI
10737eb1ca1Smrg</literallayout>
10837eb1ca1SmrgThe value is always interpreted as an N-byte unsigned integer.
10937eb1ca1SmrgNote that the size of N is sometimes larger than that strictly required 
11037eb1ca1Smrgto encode the values.
11137eb1ca1SmrgFor example:
11237eb1ca1Smrg</para>
11337eb1ca1Smrg<para>
11437eb1ca1Smrg<!-- .LP -->
11537eb1ca1Smrg<literallayout class="monospaced">
11637eb1ca1Smrgclass: <function>{InputOutput, InputOnly, CopyFromParent}</function>
11737eb1ca1Smrg</literallayout>
11837eb1ca1Smrg</para>
11937eb1ca1Smrg<para>
12037eb1ca1Smrg<!-- .LP -->
12137eb1ca1Smrgbecomes:
12237eb1ca1Smrg</para>
12337eb1ca1Smrg<para>
12437eb1ca1Smrg<!-- .LP -->
12537eb1ca1Smrg<literallayout class="monospaced">
12637eb1ca1Smrg<!-- .TA 1i 1.5i 2.5i 3i -->
12737eb1ca1Smrg<!-- .ta 1i 1.5i 2.5i 3i -->
12837eb1ca1Smrg2			class
12937eb1ca1Smrg	0	CopyFromParent
13037eb1ca1Smrg	1	InputOutput
13137eb1ca1Smrg	2	InputOnly
13237eb1ca1Smrg</literallayout>
13337eb1ca1SmrgFor components described in the protocol as:
13437eb1ca1Smrg</para>
13537eb1ca1Smrg<para>
13637eb1ca1Smrg<!-- .LP -->
13737eb1ca1Smrg<literallayout class="monospaced">
13837eb1ca1SmrgNAME: TYPE or <function>Alternative1 ... or AlternativeI</function>
13937eb1ca1Smrg</literallayout>
14037eb1ca1Smrg</para>
14137eb1ca1Smrg<para>
14237eb1ca1Smrg<!-- .LP -->
14337eb1ca1Smrgthe encode-form is:
14437eb1ca1Smrg</para>
14537eb1ca1Smrg<para>
14637eb1ca1Smrg<!-- .LP -->
14737eb1ca1Smrg<literallayout class="monospaced">
14837eb1ca1Smrg<!-- .TA 1i 1.5i 2i 2.5i 3i -->
14937eb1ca1Smrg<!-- .ta 1i 1.5i 2i 2.5i 3i -->
15037eb1ca1SmrgN	TYPE			NAME
15137eb1ca1Smrg	value1	Alternative1
15237eb1ca1Smrg	...
15337eb1ca1Smrg	valueI	AlternativeI
15437eb1ca1Smrg</literallayout>
15537eb1ca1SmrgThe alternative values are guaranteed not to conflict with the encoding
15637eb1ca1Smrgof TYPE.  
15737eb1ca1SmrgFor example:
15837eb1ca1Smrg</para>
15937eb1ca1Smrg<para>
16037eb1ca1Smrg<!-- .LP -->
16137eb1ca1Smrg<literallayout class="monospaced">
16237eb1ca1Smrgdestination: WINDOW or <function>PointerWindow</function> or <function>InputFocus</function>
16337eb1ca1Smrg</literallayout>
16437eb1ca1Smrg</para>
16537eb1ca1Smrg<para>
16637eb1ca1Smrg<!-- .LP -->
16737eb1ca1Smrgbecomes:
16837eb1ca1Smrg</para>
16937eb1ca1Smrg<para>
17037eb1ca1Smrg<!-- .LP -->
17137eb1ca1Smrg<literallayout class="monospaced">
17237eb1ca1Smrg<!-- .TA 1i 1.5i 2.5i -->
17337eb1ca1Smrg<!-- .ta 1i 1.5i 2.5i -->
17437eb1ca1Smrg4	WINDOW		destination
17537eb1ca1Smrg	0	PointerWindow
17637eb1ca1Smrg	1	InputFocus
17737eb1ca1Smrg</literallayout>
17837eb1ca1SmrgFor components described in the protocol as:
17937eb1ca1Smrg</para>
18037eb1ca1Smrg<para>
18137eb1ca1Smrg<!-- .LP -->
18237eb1ca1Smrg<literallayout class="monospaced">
18337eb1ca1Smrg<!-- .TA 1i 1.5i -->
18437eb1ca1Smrg<!-- .ta 1i 1.5i -->
18537eb1ca1Smrgvalue-mask: BITMASK
18637eb1ca1Smrg</literallayout>
18737eb1ca1Smrgthe encode-form is:
18837eb1ca1Smrg</para>
18937eb1ca1Smrg<para>
19037eb1ca1Smrg<!-- .LP -->
19137eb1ca1Smrg<literallayout class="monospaced">
19237eb1ca1Smrg<!-- .TA 1i 1.5i 2i 2.5i  -->
19337eb1ca1Smrg<!-- .ta 1i 1.5i 2i 2.5i -->
19437eb1ca1SmrgN	BITMASK			value-mask
19537eb1ca1Smrg	mask1	mask-name1
19637eb1ca1Smrg	...
19737eb1ca1Smrg	maskI	mask-nameI
19837eb1ca1Smrg</literallayout>
19937eb1ca1SmrgThe individual bits in the mask are specified and named, 
20037eb1ca1Smrgand N is 2 or 4.
20137eb1ca1SmrgThe most-significant bit in a BITMASK is reserved for use in defining
20237eb1ca1Smrgchained (multiword) bitmasks, as extensions augment existing core requests.
20337eb1ca1SmrgThe precise interpretation of this bit is not yet defined here, 
20437eb1ca1Smrgalthough a probable mechanism is that a 1-bit indicates that another N bytes 
20537eb1ca1Smrgof bitmask follows, with bits within the overall mask still interpreted 
20637eb1ca1Smrgfrom least-significant to most-significant with an N-byte unit, with N-byte units 
20737eb1ca1Smrginterpreted in stream order, and with the overall mask being byte-swapped 
20837eb1ca1Smrgin individual N-byte units.
20937eb1ca1Smrg</para>
21037eb1ca1Smrg<para>
21137eb1ca1Smrg<!-- .LP -->
21237eb1ca1SmrgFor LISTofVALUE encodings, the request is followed by a section of the form:
21337eb1ca1Smrg</para>
21437eb1ca1Smrg<para>
21537eb1ca1Smrg<!-- .LP -->
21637eb1ca1Smrg<literallayout class="monospaced">
21737eb1ca1Smrg<!-- .TA 1i 1.5i -->
21837eb1ca1Smrg<!-- .ta 1i 1.5i -->
21937eb1ca1SmrgVALUEs
22037eb1ca1Smrg encode-form
22137eb1ca1Smrg ...
22237eb1ca1Smrg encode-form
22337eb1ca1Smrg</literallayout>
22437eb1ca1Smrglisting an encode-form for each VALUE.
22537eb1ca1SmrgThe NAME in each encode-form keys to the corresponding BITMASK bit.
22637eb1ca1SmrgThe encoding of a VALUE always occupies four bytes, 
22737eb1ca1Smrgbut the number of bytes specified in the encoding-form indicates how
22837eb1ca1Smrgmany of the least-significant bytes are actually used; 
22937eb1ca1Smrgthe remaining bytes are unused and their values do not matter.
23037eb1ca1Smrg</para>
23137eb1ca1Smrg<para>
23237eb1ca1Smrg<!-- .LP -->
23337eb1ca1SmrgIn various cases, the number of bytes occupied by a component will be specified
23437eb1ca1Smrgby a lowercase single-letter variable name instead of a specific numeric
23537eb1ca1Smrgvalue, and often some other component will have its value specified as a
23637eb1ca1Smrgsimple numeric expression involving these variables.
23737eb1ca1SmrgComponents specified with such expressions are always interpreted 
23837eb1ca1Smrgas unsigned integers.
23937eb1ca1SmrgThe scope of such variables is always just the enclosing request, reply, 
24037eb1ca1Smrgerror, event, or compound type structure.
24137eb1ca1SmrgFor example:
24237eb1ca1Smrg</para>
24337eb1ca1Smrg<para>
24437eb1ca1Smrg<!-- .LP -->
24537eb1ca1Smrg<literallayout class="monospaced">
24637eb1ca1Smrg<!-- .TA 1i 1.5i 2i 2.5i -->
24737eb1ca1Smrg<!-- .ta 1i 1.5i 2i 2.5i -->
24837eb1ca1Smrg2	3+n			request length
24937eb1ca1Smrg4n	LISTofPOINT		points
25037eb1ca1Smrg</literallayout>
25137eb1ca1SmrgFor unused bytes (the values of the bytes are undefined and do not matter),
25237eb1ca1Smrgthe encode-form is:
25337eb1ca1Smrg</para>
25437eb1ca1Smrg<para>
25537eb1ca1Smrg<!-- .LP -->
25637eb1ca1Smrg<literallayout class="monospaced">
25737eb1ca1Smrg<!-- .TA 1i 1.5i 2i 2.5i -->
25837eb1ca1Smrg<!-- .ta 1i 1.5i 2i 2.5i -->
25937eb1ca1SmrgN			unused
26037eb1ca1Smrg</literallayout>
26137eb1ca1SmrgIf the number of unused bytes is variable, the encode-form typically is:
26237eb1ca1Smrg</para>
26337eb1ca1Smrg<para>
26437eb1ca1Smrg<!-- .LP -->
26537eb1ca1Smrg<literallayout class="monospaced">
26637eb1ca1Smrg<!-- .TA 1i 1.5i 2i 2.5i -->
26737eb1ca1Smrg<!-- .ta 1i 1.5i 2i 2.5i -->
26837eb1ca1Smrgp			unused, p=pad(E)
26937eb1ca1Smrg</literallayout>
27037eb1ca1Smrgwhere E is some expression,
27137eb1ca1Smrgand pad(E) is the number of bytes needed to round E up to a multiple of four.
27237eb1ca1Smrg</para>
27337eb1ca1Smrg<para>
27437eb1ca1Smrg<!-- .LP -->
27537eb1ca1Smrg<literallayout class="monospaced">
27637eb1ca1Smrg<!-- .TA 1i 1.5i 2i 2.5i -->
27737eb1ca1Smrg<!-- .ta 1i 1.5i 2i 2.5i -->
27837eb1ca1Smrgpad(E) = (4 - (E mod 4)) mod 4
27937eb1ca1Smrg</literallayout>
28037eb1ca1Smrg<!-- .ps +2 -->
28137eb1ca1Smrg<function>Common Types</function>
28237eb1ca1Smrg<!-- .ps -->
28337eb1ca1Smrg</para>
28437eb1ca1Smrg<para>
28537eb1ca1Smrg<!-- .LP -->
28637eb1ca1SmrgLISTofFOO
28737eb1ca1Smrg</para>
28837eb1ca1Smrg<itemizedlist>
28937eb1ca1Smrg  <listitem>
29037eb1ca1Smrg    <para>
29137eb1ca1SmrgIn this document the LISTof notation strictly means some number of repetitions
29237eb1ca1Smrgof the FOO encoding; 
29337eb1ca1Smrgthe actual length of the list is encoded elsewhere.
29437eb1ca1Smrg    </para>
29537eb1ca1Smrg  </listitem>
29637eb1ca1Smrg</itemizedlist>
29737eb1ca1Smrg<para>
29837eb1ca1Smrg<!-- .LP -->
29937eb1ca1SmrgSETofFOO
30037eb1ca1Smrg</para>
30137eb1ca1Smrg<itemizedlist>
30237eb1ca1Smrg  <listitem>
30337eb1ca1Smrg    <para>
30437eb1ca1SmrgA set is always represented by a bitmask, with a 1-bit indicating presence in
30537eb1ca1Smrgthe set.
30637eb1ca1Smrg    </para>
30737eb1ca1Smrg  </listitem>
30837eb1ca1Smrg</itemizedlist>
30937eb1ca1Smrg<para>
31037eb1ca1Smrg<!-- .LP -->
31137eb1ca1SmrgBITMASK: CARD32
31237eb1ca1Smrg</para>
31337eb1ca1Smrg<para>
31437eb1ca1Smrg<!-- .LP -->
31537eb1ca1SmrgWINDOW: CARD32
31637eb1ca1Smrg</para>
31737eb1ca1Smrg<para>
31837eb1ca1Smrg<!-- .LP -->
31937eb1ca1SmrgBYTE: 8-bit value
32037eb1ca1Smrg</para>
32137eb1ca1Smrg<para>
32237eb1ca1Smrg<!-- .LP -->
32337eb1ca1SmrgINT8: 8-bit signed integer
32437eb1ca1Smrg</para>
32537eb1ca1Smrg<para>
32637eb1ca1Smrg<!-- .LP -->
32737eb1ca1SmrgINT16: 16-bit signed integer
32837eb1ca1Smrg</para>
32937eb1ca1Smrg<para>
33037eb1ca1Smrg<!-- .LP -->
33137eb1ca1SmrgINT32: 32-bit signed integer
33237eb1ca1Smrg</para>
33337eb1ca1Smrg<para>
33437eb1ca1Smrg<!-- .LP -->
33537eb1ca1SmrgCARD8: 8-bit unsigned integer
33637eb1ca1Smrg</para>
33737eb1ca1Smrg<para>
33837eb1ca1Smrg<!-- .LP -->
33937eb1ca1SmrgCARD16: 16-bit unsigned integer
34037eb1ca1Smrg</para>
34137eb1ca1Smrg<para>
34237eb1ca1Smrg<!-- .LP -->
34337eb1ca1SmrgCARD32: 32-bit unsigned integer
34437eb1ca1Smrg</para>
34537eb1ca1Smrg<para>
34637eb1ca1Smrg<!-- .LP -->
34737eb1ca1SmrgTIMESTAMP: CARD32
34837eb1ca1Smrg</para>
34937eb1ca1Smrg<para>
35037eb1ca1Smrg<!-- .LP -->
35137eb1ca1SmrgEVENTCLASS: CARD32
35237eb1ca1Smrg</para>
35337eb1ca1Smrg<para>
35437eb1ca1Smrg<!-- .LP -->
35537eb1ca1Smrg<literallayout class="monospaced">
35637eb1ca1Smrg<!-- .TA .75i 1.75i -->
35737eb1ca1Smrg<!-- .ta .75i 1.75i -->
35837eb1ca1SmrgINPUTCLASS
35937eb1ca1Smrg	0	KeyClass
36037eb1ca1Smrg	1	ButtonClass
36137eb1ca1Smrg	2	ValuatorClass
36237eb1ca1Smrg	3	FeedbackClass
36337eb1ca1Smrg	4	ProximityClass
36437eb1ca1Smrg	5	FocusClass
36537eb1ca1Smrg	6	OtherClass
36637eb1ca1Smrg</literallayout>
36737eb1ca1Smrg</para>
36837eb1ca1Smrg<para>
36937eb1ca1Smrg<!-- .LP -->
37037eb1ca1Smrg<literallayout class="monospaced">
37137eb1ca1Smrg<!-- .TA .75i 1.75i -->
37237eb1ca1Smrg<!-- .ta .75i 1.75i -->
37337eb1ca1SmrgINPUTCLASS
37437eb1ca1Smrg	0	KbdFeedbackClass
37537eb1ca1Smrg	1	PtrFeedbackClass
37637eb1ca1Smrg	2	StringFeedbackClass
37737eb1ca1Smrg	3	IntegerFeedbackClass
37837eb1ca1Smrg	4	LedFeedbackClass
37937eb1ca1Smrg	5	BellFeedbackClass
38037eb1ca1Smrg</literallayout>
38137eb1ca1Smrg</para>
38237eb1ca1Smrg<para>
38337eb1ca1Smrg<!-- .LP -->
38437eb1ca1Smrg<literallayout class="monospaced">
38537eb1ca1Smrg<!-- .TA .75i 1.75i -->
38637eb1ca1Smrg<!-- .ta .75i 1.75i -->
38737eb1ca1SmrgINPUTINFO
38837eb1ca1Smrg	0	KEYINFO
38937eb1ca1Smrg	1	BUTTONINFO
39037eb1ca1Smrg	2	VALUATORINFO
39137eb1ca1Smrg</literallayout>
39237eb1ca1Smrg</para>
39337eb1ca1Smrg<para>
39437eb1ca1Smrg<!-- .LP -->
39537eb1ca1Smrg<literallayout class="monospaced">
39637eb1ca1Smrg<!-- .TA .75i 1.75i -->
39737eb1ca1Smrg<!-- .ta .75i 1.75i -->
39837eb1ca1SmrgDEVICEMODE
39937eb1ca1Smrg	0	Relative
40037eb1ca1Smrg	1	Absolute
40137eb1ca1Smrg</literallayout>
40237eb1ca1Smrg</para>
40337eb1ca1Smrg<para>
40437eb1ca1Smrg<!-- .LP -->
40537eb1ca1Smrg<literallayout class="monospaced">
40637eb1ca1Smrg<!-- .TA .75i 1.75i -->
40737eb1ca1Smrg<!-- .ta .75i 1.75i -->
40837eb1ca1SmrgPROXIMITYSTATE
40937eb1ca1Smrg	0	InProximity
41037eb1ca1Smrg	1	OutOfProximity
41137eb1ca1Smrg</literallayout>
41237eb1ca1Smrg</para>
41337eb1ca1Smrg<para>
41437eb1ca1Smrg<!-- .LP -->
41537eb1ca1Smrg<literallayout class="monospaced">
41637eb1ca1Smrg<!-- .TA .75i 1.75i -->
41737eb1ca1Smrg<!-- .ta .75i 1.75i -->
41837eb1ca1SmrgBOOL
41937eb1ca1Smrg	0	False
42037eb1ca1Smrg	1	True
42137eb1ca1Smrg</literallayout>
42237eb1ca1Smrg</para>
42337eb1ca1Smrg<para>
42437eb1ca1Smrg<!-- .LP -->
42537eb1ca1SmrgKEYSYM: CARD32
42637eb1ca1Smrg</para>
42737eb1ca1Smrg<para>
42837eb1ca1Smrg<!-- .LP -->
42937eb1ca1SmrgKEYCODE: CARD8
43037eb1ca1Smrg</para>
43137eb1ca1Smrg<para>
43237eb1ca1Smrg<!-- .LP -->
43337eb1ca1SmrgBUTTON: CARD8
43437eb1ca1Smrg</para>
43537eb1ca1Smrg<para>
43637eb1ca1Smrg<!-- .LP -->
43737eb1ca1Smrg<literallayout class="monospaced">
43837eb1ca1Smrg<!-- .TA .75i 1.75i -->
43937eb1ca1Smrg<!-- .ta .75i 1.75i -->
44037eb1ca1SmrgSETofKEYBUTMASK
44137eb1ca1Smrg	#x0001	Shift
44237eb1ca1Smrg	#x0002	Lock
44337eb1ca1Smrg	#x0004	Control
44437eb1ca1Smrg	#x0008	Mod1
44537eb1ca1Smrg	#x0010	Mod2
44637eb1ca1Smrg	#x0020	Mod3
44737eb1ca1Smrg	#x0040	Mod4
44837eb1ca1Smrg	#x0080	Mod5
44937eb1ca1Smrg	#x0100	Button1
45037eb1ca1Smrg	#x0200	Button2
45137eb1ca1Smrg	#x0400	Button3
45237eb1ca1Smrg	#x0800	Button4
45337eb1ca1Smrg	#x1000	Button5
45437eb1ca1Smrg	#xe000	unused but must be zero
45537eb1ca1Smrg</literallayout>
45637eb1ca1Smrg</para>
45737eb1ca1Smrg<para>
45837eb1ca1Smrg<!-- .LP -->
45937eb1ca1Smrg<literallayout class="monospaced">
46037eb1ca1Smrg<!-- .TA .75i 1.75i -->
46137eb1ca1Smrg<!-- .ta .75i 1.75i -->
46237eb1ca1SmrgSETofKEYMASK
46337eb1ca1Smrg	encodings are the same as for SETofKEYBUTMASK, except with
46437eb1ca1Smrg	#xff00		unused but must be zero
46537eb1ca1Smrg</literallayout>
46637eb1ca1Smrg</para>
46737eb1ca1Smrg<para>
46837eb1ca1Smrg<!-- .LP -->
46937eb1ca1SmrgSTRING8: LISTofCARD8
47037eb1ca1Smrg</para>
47137eb1ca1Smrg<para>
47237eb1ca1Smrg<!-- .LP -->
47337eb1ca1Smrg<literallayout class="monospaced">
47437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
47537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
47637eb1ca1SmrgSTR
47737eb1ca1Smrg	1	n		length of name in bytes
47837eb1ca1Smrg	n	STRING8		name
47937eb1ca1Smrg</literallayout>
48037eb1ca1Smrg<!-- .ps +2 -->
48137eb1ca1Smrg<function>Errors</function>
48237eb1ca1Smrg<!-- .ps -->
48337eb1ca1Smrg</para>
48437eb1ca1Smrg<para>
48537eb1ca1Smrg<!-- .LP -->
48637eb1ca1Smrg<literallayout class="monospaced">
48737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
48837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
48937eb1ca1SmrgRequest
49037eb1ca1Smrg	1	0		Error
49137eb1ca1Smrg	1	1		code
49237eb1ca1Smrg	2	CARD16		sequence number
49337eb1ca1Smrg	4			unused
49437eb1ca1Smrg	2	CARD16		minor opcode
49537eb1ca1Smrg	1	CARD8		major opcode
49637eb1ca1Smrg	21			unused
49737eb1ca1Smrg</literallayout>
49837eb1ca1Smrg</para>
49937eb1ca1Smrg<para>
50037eb1ca1Smrg<!-- .LP -->
50137eb1ca1Smrg<literallayout class="monospaced">
50237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
50337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
50437eb1ca1SmrgValue
50537eb1ca1Smrg	1	0		Error
50637eb1ca1Smrg	1	2		code
50737eb1ca1Smrg	2	CARD16		sequence number
50837eb1ca1Smrg	4	&lt;32-bits&gt;		bad value
50937eb1ca1Smrg	2	CARD16		minor opcode
51037eb1ca1Smrg	1	CARD8		major opcode
51137eb1ca1Smrg	21			unused
51237eb1ca1Smrg</literallayout>
51337eb1ca1Smrg</para>
51437eb1ca1Smrg<para>
51537eb1ca1Smrg<!-- .LP -->
51637eb1ca1Smrg<literallayout class="monospaced">
51737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
51837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
51937eb1ca1SmrgWindow
52037eb1ca1Smrg	1	0		Error
52137eb1ca1Smrg	1	3		code
52237eb1ca1Smrg	2	CARD16		sequence number
52337eb1ca1Smrg	4	CARD32		bad resource id
52437eb1ca1Smrg	2	CARD16		minor opcode
52537eb1ca1Smrg	1	CARD8		major opcode
52637eb1ca1Smrg	21			unused
52737eb1ca1Smrg</literallayout>
52837eb1ca1Smrg</para>
52937eb1ca1Smrg<para>
53037eb1ca1Smrg<!-- .LP -->
53137eb1ca1Smrg<literallayout class="monospaced">
53237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
53337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
53437eb1ca1SmrgMatch
53537eb1ca1Smrg	1	0		Error
53637eb1ca1Smrg	1	8		code
53737eb1ca1Smrg	2	CARD16		sequence number
53837eb1ca1Smrg	4			unused
53937eb1ca1Smrg	2	CARD16		minor opcode
54037eb1ca1Smrg	1	CARD8		major opcode
54137eb1ca1Smrg	21			unused
54237eb1ca1Smrg</literallayout>
54337eb1ca1Smrg</para>
54437eb1ca1Smrg<para>
54537eb1ca1Smrg<!-- .LP -->
54637eb1ca1Smrg<literallayout class="monospaced">
54737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
54837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
54937eb1ca1SmrgAccess
55037eb1ca1Smrg	1	0		Error
55137eb1ca1Smrg	1	10		code
55237eb1ca1Smrg	2	CARD16		sequence number
55337eb1ca1Smrg	4			unused
55437eb1ca1Smrg	2	CARD16		minor opcode
55537eb1ca1Smrg	1	CARD8		major opcode
55637eb1ca1Smrg	21			unused
55737eb1ca1Smrg</literallayout>
55837eb1ca1Smrg</para>
55937eb1ca1Smrg<para>
56037eb1ca1Smrg<!-- .LP -->
56137eb1ca1Smrg<literallayout class="monospaced">
56237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
56337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
56437eb1ca1SmrgAlloc
56537eb1ca1Smrg	1	0		Error
56637eb1ca1Smrg	1	11		code
56737eb1ca1Smrg	2	CARD16		sequence number
56837eb1ca1Smrg	4			unused
56937eb1ca1Smrg	2	CARD16		minor opcode
57037eb1ca1Smrg	1	CARD8		major opcode
57137eb1ca1Smrg	21			unused
57237eb1ca1Smrg</literallayout>
57337eb1ca1Smrg</para>
57437eb1ca1Smrg<para>
57537eb1ca1Smrg<!-- .LP -->
57637eb1ca1Smrg<literallayout class="monospaced">
57737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
57837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
57937eb1ca1SmrgName
58037eb1ca1Smrg	1	0		Error
58137eb1ca1Smrg	1	15		code
58237eb1ca1Smrg	2	CARD16		sequence number
58337eb1ca1Smrg	4			unused
58437eb1ca1Smrg	2	CARD16		minor opcode
58537eb1ca1Smrg	1	CARD8		major opcode
58637eb1ca1Smrg	21			unused
58737eb1ca1Smrg</literallayout>
58837eb1ca1Smrg</para>
58937eb1ca1Smrg<para>
59037eb1ca1Smrg<!-- .LP -->
59137eb1ca1Smrg<literallayout class="monospaced">
59237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
59337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
59437eb1ca1SmrgDevice
59537eb1ca1Smrg	1	0		Error
59637eb1ca1Smrg	1	CARD8		code
59737eb1ca1Smrg	2	CARD16		sequence number
59837eb1ca1Smrg	4			unused
59937eb1ca1Smrg	2	CARD16		minor opcode
60037eb1ca1Smrg	1	CARD8		major opcode
60137eb1ca1Smrg	21			unused
60237eb1ca1Smrg</literallayout>
60337eb1ca1Smrg</para>
60437eb1ca1Smrg<para>
60537eb1ca1Smrg<!-- .LP -->
60637eb1ca1Smrg<literallayout class="monospaced">
60737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
60837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
60937eb1ca1SmrgEvent
61037eb1ca1Smrg	1	0		Error
61137eb1ca1Smrg	1	CARD8		code
61237eb1ca1Smrg	2	CARD16		sequence number
61337eb1ca1Smrg	4			unused
61437eb1ca1Smrg	2	CARD16		minor opcode
61537eb1ca1Smrg	1	CARD8		major opcode
61637eb1ca1Smrg	21			unused
61737eb1ca1Smrg</literallayout>
61837eb1ca1Smrg</para>
61937eb1ca1Smrg<para>
62037eb1ca1Smrg<!-- .LP -->
62137eb1ca1Smrg<literallayout class="monospaced">
62237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
62337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
62437eb1ca1SmrgMode
62537eb1ca1Smrg	1	0		Error
62637eb1ca1Smrg	1	CARD8		code
62737eb1ca1Smrg	2	CARD16		sequence number
62837eb1ca1Smrg	4			unused
62937eb1ca1Smrg	2	CARD16		minor opcode
63037eb1ca1Smrg	1	CARD8		major opcode
63137eb1ca1Smrg	21			unused
63237eb1ca1Smrg</literallayout>
63337eb1ca1Smrg</para>
63437eb1ca1Smrg<para>
63537eb1ca1Smrg<!-- .LP -->
63637eb1ca1Smrg<literallayout class="monospaced">
63737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
63837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
63937eb1ca1SmrgClass
64037eb1ca1Smrg	1	0		Error
64137eb1ca1Smrg	1	CARD8		code
64237eb1ca1Smrg	2	CARD16		sequence number
64337eb1ca1Smrg	4			unused
64437eb1ca1Smrg	2	CARD16		minor opcode
64537eb1ca1Smrg	1	CARD8		major opcode
64637eb1ca1Smrg	21			unused
64737eb1ca1Smrg</literallayout>
64837eb1ca1Smrg<!-- .ps +2 -->
64937eb1ca1SmrgKeyboards
65037eb1ca1Smrg<!-- .ps -->
65137eb1ca1Smrg</para>
65237eb1ca1Smrg<para>
65337eb1ca1Smrg<!-- .LP -->
65437eb1ca1SmrgKEYCODE values are always greater than 7 (and less than 256).
65537eb1ca1Smrg</para>
65637eb1ca1Smrg<para>
65737eb1ca1Smrg<!-- .LP -->
65837eb1ca1SmrgKEYSYM values with the bit #x10000000 set are reserved as vendor-specific.
65937eb1ca1Smrg</para>
66037eb1ca1Smrg<para>
66137eb1ca1Smrg<!-- .LP -->
66237eb1ca1SmrgThe names and encodings of the standard KEYSYM values are contained in 
66337eb1ca1Smrg<!-- .\"Appendix B, Keysym Encoding. -->
66437eb1ca1Smrgappendix F.
66537eb1ca1Smrg</para>
66637eb1ca1Smrg<para>
66737eb1ca1Smrg<!-- .LP -->
66837eb1ca1Smrg<!-- .ps +2 -->
66937eb1ca1SmrgPointers
67037eb1ca1Smrg<!-- .ps -->
67137eb1ca1Smrg</para>
67237eb1ca1Smrg<para>
67337eb1ca1Smrg<!-- .LP -->
67437eb1ca1SmrgBUTTON values are numbered starting with one.
67537eb1ca1Smrg</para>
67637eb1ca1Smrg<para>
67737eb1ca1Smrg<!-- .LP -->
67837eb1ca1Smrg<!-- .ps +2 -->
67937eb1ca1SmrgRequests
68037eb1ca1Smrg<!-- .ps -->
68137eb1ca1Smrg</para>
68237eb1ca1Smrg<para>
68337eb1ca1Smrg<!-- .LP -->
68437eb1ca1Smrg<literallayout class="monospaced">
68537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
68637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
68737eb1ca1SmrgGetExtensionVersion
68837eb1ca1Smrg	1	CARD8		input extension opcode
68937eb1ca1Smrg	1	1		GetExtensionVersion opcode
69037eb1ca1Smrg	2	2+(n+p)/4		request length
69137eb1ca1Smrg	2	n		length of name
69237eb1ca1Smrg	2			unused
69337eb1ca1Smrg	n	STRING8		name
69437eb1ca1Smrg	p			unused, p=pad(n)
69537eb1ca1Smrg</literallayout>
69637eb1ca1Smrg<literallayout class="monospaced">
69737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
69837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
69937eb1ca1Smrg =&gt;
70037eb1ca1Smrg	1	1		Reply
70137eb1ca1Smrg	1	1		GetExtensionVersion opcode
70237eb1ca1Smrg	2	CARD16		sequence number
70337eb1ca1Smrg	4	0		reply length
70437eb1ca1Smrg	2	CARD16		major version
70537eb1ca1Smrg	2	CARD16		minor version
70637eb1ca1Smrg	1	BOOL		present
70737eb1ca1Smrg	19			unused
70837eb1ca1Smrg</literallayout>
70937eb1ca1Smrg</para>
71037eb1ca1Smrg<para>
71137eb1ca1Smrg<!-- .LP -->
71237eb1ca1Smrg<literallayout class="monospaced">
71337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
71437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
71537eb1ca1SmrgListInputDevices
71637eb1ca1Smrg	1	CARD8		input extension opcode
71737eb1ca1Smrg	1	2		ListInputDevices opcode
71837eb1ca1Smrg	2	1		request length
71937eb1ca1Smrg</literallayout>
72037eb1ca1Smrg<literallayout class="monospaced">
72137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
72237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
72337eb1ca1Smrg =&gt;
72437eb1ca1Smrg	1	1			Reply
72537eb1ca1Smrg	1	2			ListInputDevices opcode
72637eb1ca1Smrg	2	CARD16			sequence number
72737eb1ca1Smrg	4	(n+p)/4			reply length
72837eb1ca1Smrg	1	CARD8			number of input devices
72937eb1ca1Smrg	23				unused
73037eb1ca1Smrg	n	LISTofDEVICEINFO	info for each input device
73137eb1ca1Smrg	p				unused, p=pad(n)
73237eb1ca1Smrg</literallayout>
73337eb1ca1Smrg</para>
73437eb1ca1Smrg<para>
73537eb1ca1Smrg<!-- .LP -->
73637eb1ca1Smrg<literallayout class="monospaced">
73737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
73837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
73937eb1ca1Smrg  DEVICEINFO
74037eb1ca1Smrg	4	CARD32		device type
74137eb1ca1Smrg	1	CARD8		device id
74237eb1ca1Smrg	1	CARD8		number of input classes this device reports
74337eb1ca1Smrg	1	CARD8		device use
74437eb1ca1Smrg			0	IsXPointer
74537eb1ca1Smrg			1	IsXKeyboard
74637eb1ca1Smrg			2	IsXExtensionDevice
74737eb1ca1Smrg	1			unused
74837eb1ca1Smrg	n	LISTofINPUTINFO 		input info for each input class
74937eb1ca1Smrg	m	STR			name
75037eb1ca1Smrg	p				unused, p=pad(m)
75137eb1ca1Smrg</literallayout>
75237eb1ca1Smrg</para>
75337eb1ca1Smrg<para>
75437eb1ca1Smrg<!-- .LP -->
75537eb1ca1Smrg<literallayout class="monospaced">
75637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
75737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
75837eb1ca1Smrg  INPUTINFO	KEYINFO or BUTTONINFO or VALUATORINFO
75937eb1ca1Smrg</literallayout>
76037eb1ca1Smrg</para>
76137eb1ca1Smrg<para>
76237eb1ca1Smrg<!-- .LP -->
76337eb1ca1Smrg<literallayout class="monospaced">
76437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
76537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
76637eb1ca1Smrg  KEYINFO
76737eb1ca1Smrg	1	0		class id
76837eb1ca1Smrg	1	8		length
76937eb1ca1Smrg	1	KEYCODE		minimum keycode
77037eb1ca1Smrg	1	KEYCODE		maximum keycode
77137eb1ca1Smrg	2	CARD16		number of keys
77237eb1ca1Smrg	2			unused
77337eb1ca1Smrg</literallayout>
77437eb1ca1Smrg</para>
77537eb1ca1Smrg<para>
77637eb1ca1Smrg<!-- .LP -->
77737eb1ca1Smrg<literallayout class="monospaced">
77837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
77937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
78037eb1ca1SmrgBUTTONINFO
78137eb1ca1Smrg	1	1		class id
78237eb1ca1Smrg	1	4		length
78337eb1ca1Smrg	2	CARD16		number of buttons
78437eb1ca1Smrg</literallayout>
78537eb1ca1Smrg</para>
78637eb1ca1Smrg<para>
78737eb1ca1Smrg<!-- .LP -->
78837eb1ca1Smrg<literallayout class="monospaced">
78937eb1ca1Smrg<!-- .TA .2i .75i 2.0i 3.0i -->
79037eb1ca1Smrg<!-- .ta .2i .75i 2.0i 3.0i -->
79137eb1ca1SmrgVALUATORINFO
79237eb1ca1Smrg	1	2		class id
79337eb1ca1Smrg	1	8+12n		length
79437eb1ca1Smrg	1	n		number of axes
79537eb1ca1Smrg	1	SETofDEVICEMODE			mode
79637eb1ca1Smrg	4	CARD32		size of motion buffer
79737eb1ca1Smrg	12n	LISTofAXISINFO		valuator limits
79837eb1ca1Smrg</literallayout>
79937eb1ca1Smrg</para>
80037eb1ca1Smrg<para>
80137eb1ca1Smrg<!-- .LP -->
80237eb1ca1Smrg<literallayout class="monospaced">
80337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
80437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
80537eb1ca1SmrgAXISINFO
80637eb1ca1Smrg	4	CARD32		resolution
80737eb1ca1Smrg	4	CARD32		minimum value
80837eb1ca1Smrg	4	CARD32		maximum value
80937eb1ca1Smrg</literallayout>
81037eb1ca1Smrg</para>
81137eb1ca1Smrg<para>
81237eb1ca1Smrg<!-- .LP -->
81337eb1ca1Smrg<literallayout class="monospaced">
81437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
81537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
81637eb1ca1SmrgOpenDevice
81737eb1ca1Smrg	1	CARD8		input extension opcode
81837eb1ca1Smrg	1	3		OpenDevice opcode
81937eb1ca1Smrg	2	2		request length
82037eb1ca1Smrg	1	CARD8		device id
82137eb1ca1Smrg	3			unused
82237eb1ca1Smrg</literallayout>
82337eb1ca1Smrg<literallayout class="monospaced">
82437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 3.5i -->
82537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 3.5i -->
82637eb1ca1Smrg =&gt;
82737eb1ca1Smrg	1	1			Reply
82837eb1ca1Smrg	1	3			OpenDevice opcode
82937eb1ca1Smrg	2	CARD16			sequence number
83037eb1ca1Smrg	4	(n+p)/4			reply length
83137eb1ca1Smrg	1	CARD8			number of input classes
83237eb1ca1Smrg	23				unused
83337eb1ca1Smrg	n	LISTofINPUTCLASSINFO	input class information
83437eb1ca1Smrg	p				unused, p=pad(n)
83537eb1ca1Smrg</literallayout>
83637eb1ca1Smrg</para>
83737eb1ca1Smrg<para>
83837eb1ca1Smrg<!-- .LP -->
83937eb1ca1Smrg<literallayout class="monospaced">
84037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
84137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
84237eb1ca1Smrg  INPUTCLASSINFO
84337eb1ca1Smrg	1	CARD8		input class id
84437eb1ca1Smrg		0	KEY
84537eb1ca1Smrg		1	BUTTON
84637eb1ca1Smrg		2	VALUATOR
84737eb1ca1Smrg		3	FEEDBACK
84837eb1ca1Smrg		4	PROXIMITY
84937eb1ca1Smrg		5	FOCUS
85037eb1ca1Smrg		6	OTHER
85137eb1ca1Smrg	1	CARD8		event type base code for this class
85237eb1ca1Smrg</literallayout>
85337eb1ca1Smrg</para>
85437eb1ca1Smrg<para>
85537eb1ca1Smrg<!-- .LP -->
85637eb1ca1Smrg<literallayout class="monospaced">
85737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
85837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
85937eb1ca1SmrgCloseDevice
86037eb1ca1Smrg	1	CARD8		input extension opcode
86137eb1ca1Smrg	1	4		CloseDevice opcode
86237eb1ca1Smrg	2	2		request length
86337eb1ca1Smrg	1	CARD8		device id
86437eb1ca1Smrg	3			unused
86537eb1ca1Smrg</literallayout>
86637eb1ca1Smrg</para>
86737eb1ca1Smrg<para>
86837eb1ca1Smrg<!-- .LP -->
86937eb1ca1Smrg<literallayout class="monospaced">
87037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
87137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
87237eb1ca1SmrgSetDeviceMode
87337eb1ca1Smrg	1	CARD8		input extension opcode
87437eb1ca1Smrg	1	5		SetDeviceMode opcode
87537eb1ca1Smrg	2	2		request length
87637eb1ca1Smrg	1	CARD8		device id
87737eb1ca1Smrg	1	CARD8		mode
87837eb1ca1Smrg	2			unused
87937eb1ca1Smrg</literallayout>
88037eb1ca1Smrg<literallayout class="monospaced">
88137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 3.5i -->
88237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 3.5i -->
88337eb1ca1Smrg =&gt;
88437eb1ca1Smrg	1	1			Reply
88537eb1ca1Smrg	1	5			SetDeviceMode opcode
88637eb1ca1Smrg	2	CARD16			sequence number
88737eb1ca1Smrg	4	0			reply length
88837eb1ca1Smrg	1	CARD8			status
88937eb1ca1Smrg		0		Success
89037eb1ca1Smrg			1	AlreadyGrabbed
89137eb1ca1Smrg		3 + first_error	DeviceBusy
89237eb1ca1Smrg	23				unused
89337eb1ca1Smrg</literallayout>
89437eb1ca1Smrg</para>
89537eb1ca1Smrg<para>
89637eb1ca1Smrg<!-- .LP -->
89737eb1ca1Smrg<literallayout class="monospaced">
89837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
89937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
90037eb1ca1SmrgSelectExtensionEvent
90137eb1ca1Smrg	1	CARD8			input extension opcode
90237eb1ca1Smrg	1	6			SelectExtensionEvent opcode
90337eb1ca1Smrg	2	3+n				request length
90437eb1ca1Smrg	4	Window			event window
90537eb1ca1Smrg	2	CARD16			count
90637eb1ca1Smrg	2				unused
90737eb1ca1Smrg	4n	LISTofEVENTCLASS	desired events
90837eb1ca1Smrg</literallayout>
90937eb1ca1Smrg</para>
91037eb1ca1Smrg<para>
91137eb1ca1Smrg<!-- .LP -->
91237eb1ca1Smrg<literallayout class="monospaced">
91337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
91437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
91537eb1ca1SmrgGetSelectedExtensionEvents
91637eb1ca1Smrg	1	CARD8		input extension opcode
91737eb1ca1Smrg	1	7		GetSelectedExtensionEvents opcode
91837eb1ca1Smrg	2	2		request length
91937eb1ca1Smrg	4	Window		event window
92037eb1ca1Smrg</literallayout>
92137eb1ca1Smrg<literallayout class="monospaced">
92237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
92337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
92437eb1ca1Smrg =&gt;
92537eb1ca1Smrg	1	1		Reply
92637eb1ca1Smrg	1	7		GetSelecteExtensionEvents opcode
92737eb1ca1Smrg	2	CARD16		sequence number
92837eb1ca1Smrg	4	n + m  		reply length
92937eb1ca1Smrg	2	n     		this client count
93037eb1ca1Smrg	2	m     		all clients count
93137eb1ca1Smrg	20			unused
93237eb1ca1Smrg	4n	LISTofEVENTCLASS	this client list
93337eb1ca1Smrg	4m	LISTofEVENTCLASS	all clients list
93437eb1ca1Smrg</literallayout>
93537eb1ca1Smrg</para>
93637eb1ca1Smrg<para>
93737eb1ca1Smrg<!-- .LP -->
93837eb1ca1Smrg<literallayout class="monospaced">
93937eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
94037eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
94137eb1ca1SmrgChangeDeviceDontPropagateList
94237eb1ca1Smrg	1	CARD8			input extension opcode
94337eb1ca1Smrg	1	8			ChangeDeviceDontPropagateList opcode
94437eb1ca1Smrg	2	3+n				request length
94537eb1ca1Smrg	4	Window			event window
94637eb1ca1Smrg	2	n			count of events
94737eb1ca1Smrg	1	mode
94837eb1ca1Smrg		0	AddToList
94937eb1ca1Smrg		1	DeleteFromList
95037eb1ca1Smrg	1				unused
95137eb1ca1Smrg	4n	LISTofEVENTCLASS	desired events
95237eb1ca1Smrg</literallayout>
95337eb1ca1Smrg</para>
95437eb1ca1Smrg<para>
95537eb1ca1Smrg<!-- .LP -->
95637eb1ca1Smrg<literallayout class="monospaced">
95737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
95837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
95937eb1ca1SmrgGetDeviceDontPropagateList
96037eb1ca1Smrg	1	CARD8		input extension opcode
96137eb1ca1Smrg	1	9		GetDeviceDontPropagateList opcode
96237eb1ca1Smrg	2	2		request length
96337eb1ca1Smrg	4	Window		event window
96437eb1ca1Smrg</literallayout>
96537eb1ca1Smrg<literallayout class="monospaced">
96637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
96737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
96837eb1ca1Smrg =&gt;
96937eb1ca1Smrg	1	1			Reply
97037eb1ca1Smrg	1	9			GetDeviceDontPropagateList opcode
97137eb1ca1Smrg	2	CARD16			sequence number
97237eb1ca1Smrg	4	n  			reply length
97337eb1ca1Smrg	2	n			count of events
97437eb1ca1Smrg	22				unused
97537eb1ca1Smrg	4n	LISTofEVENTCLASS	don't propagate list
97637eb1ca1Smrg</literallayout>
97737eb1ca1Smrg</para>
97837eb1ca1Smrg<para>
97937eb1ca1Smrg<!-- .LP -->
98037eb1ca1Smrg<literallayout class="monospaced">
98137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
98237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
98337eb1ca1SmrgGetDeviceMotionEvents
98437eb1ca1Smrg	1	CARD8		input extension opcode
98537eb1ca1Smrg	1	10		GetDeviceMotionEvents opcode
98637eb1ca1Smrg	2	4		request length
98737eb1ca1Smrg	4	TIMESTAMP		start
98837eb1ca1Smrg		0	CurrentTime
98937eb1ca1Smrg	4	TIMESTAMP		stop
99037eb1ca1Smrg		0	CurrentTime
99137eb1ca1Smrg	1	CARD8		device id
99237eb1ca1Smrg	3			unused
99337eb1ca1Smrg</literallayout>
99437eb1ca1Smrg<literallayout class="monospaced">
99537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 3.5i -->
99637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 3.5i -->
99737eb1ca1Smrg =&gt;
99837eb1ca1Smrg	1		1		Reply
99937eb1ca1Smrg	1		10	GetDeviceMotionEvents opcode
100037eb1ca1Smrg	2		CARD16	sequence number
100137eb1ca1Smrg	4		(m+1)n	reply length
100237eb1ca1Smrg	4		n		number of DEVICETIMECOORDs in events
100337eb1ca1Smrg	1		m		number of valuators per event
100437eb1ca1Smrg	1		CARD8		mode of the device
100537eb1ca1Smrg			0	Absolute
100637eb1ca1Smrg			1	Relative
100737eb1ca1Smrg	18				unused
100837eb1ca1Smrg	(4m+4)n	LISTofDEVICETIMECOORD	events
100937eb1ca1Smrg</literallayout>
101037eb1ca1Smrg</para>
101137eb1ca1Smrg<para>
101237eb1ca1Smrg<!-- .LP -->
101337eb1ca1Smrg<literallayout class="monospaced">
101437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
101537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
101637eb1ca1Smrg  DEVICETIMECOORD
101737eb1ca1Smrg	4	TIMESTAMP		time
101837eb1ca1Smrg	4m	LISTofINT32		valuators
101937eb1ca1Smrg</literallayout>
102037eb1ca1Smrg</para>
102137eb1ca1Smrg<para>
102237eb1ca1Smrg<!-- .LP -->
102337eb1ca1Smrg<literallayout class="monospaced">
102437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
102537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
102637eb1ca1SmrgChangeKeyboardDevice
102737eb1ca1Smrg	1	CARD8		input extension opcode
102837eb1ca1Smrg	1	11		ChangeKeyboardDevice opcode
102937eb1ca1Smrg	2	2		request length
103037eb1ca1Smrg	1	CARD8		device id
103137eb1ca1Smrg	3			unused
103237eb1ca1Smrg</literallayout>
103337eb1ca1Smrg<literallayout class="monospaced">
103437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
103537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
103637eb1ca1Smrg =&gt;
103737eb1ca1Smrg	1	1		Reply
103837eb1ca1Smrg	1	11		ChangeKeyboardDevice opcode
103937eb1ca1Smrg	2	CARD16		sequence number
104037eb1ca1Smrg	4	0		reply length
104137eb1ca1Smrg	1			status
104237eb1ca1Smrg		0	Success
104337eb1ca1Smrg		1	AlreadyGrabbed
104437eb1ca1Smrg		2	DeviceFrozen
104537eb1ca1Smrg	23			unused
104637eb1ca1Smrg</literallayout>
104737eb1ca1Smrg</para>
104837eb1ca1Smrg<para>
104937eb1ca1Smrg<!-- .LP -->
105037eb1ca1Smrg<literallayout class="monospaced">
105137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
105237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
105337eb1ca1SmrgChangePointerDevice
105437eb1ca1Smrg	1	CARD8		input extension opcode
105537eb1ca1Smrg	1	12		ChangePointerDevice opcode
105637eb1ca1Smrg	2	2		request length
105737eb1ca1Smrg	1	CARD8		x-axis
105837eb1ca1Smrg	1	CARD8		y-axis
105937eb1ca1Smrg	1	CARD8		device id
106037eb1ca1Smrg	1			unused
106137eb1ca1Smrg</literallayout>
106237eb1ca1Smrg<literallayout class="monospaced">
106337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
106437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
106537eb1ca1Smrg =&gt;
106637eb1ca1Smrg	1	1		Reply
106737eb1ca1Smrg	1	12		ChangePointerDevice opcode
106837eb1ca1Smrg	2	CARD16		sequence number
106937eb1ca1Smrg	4	0		reply length
107037eb1ca1Smrg	1			status
107137eb1ca1Smrg		0	Success
107237eb1ca1Smrg		1	AlreadyGrabbed
107337eb1ca1Smrg		2	DeviceFrozen
107437eb1ca1Smrg	23			unused
107537eb1ca1Smrg</literallayout>
107637eb1ca1Smrg</para>
107737eb1ca1Smrg<para>
107837eb1ca1Smrg<!-- .LP -->
107937eb1ca1Smrg<literallayout class="monospaced">
108037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
108137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
108237eb1ca1SmrgGrabDevice
108337eb1ca1Smrg	1	CARD8		input extension opcode
108437eb1ca1Smrg	1	13		GrabDevice opcode
108537eb1ca1Smrg	2	5+n			request length
108637eb1ca1Smrg	4	WINDOW		grab-window
108737eb1ca1Smrg	4	TIMESTAMP		time
108837eb1ca1Smrg		0	CurrentTime
108937eb1ca1Smrg	2	n		count of events
109037eb1ca1Smrg	1			this-device-mode
109137eb1ca1Smrg		0	Synchronous
109237eb1ca1Smrg		1	Asynchronous
109337eb1ca1Smrg	1			other-devices-mode
109437eb1ca1Smrg		0	Synchronous
109537eb1ca1Smrg		1	Asynchronous
109637eb1ca1Smrg	1	BOOL		owner-events
109737eb1ca1Smrg	1	CARD8		device id
109837eb1ca1Smrg	2			unused
109937eb1ca1Smrg	4n	LISTofEVENTCLASS	event list
110037eb1ca1Smrg</literallayout>
110137eb1ca1Smrg<literallayout class="monospaced">
110237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
110337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
110437eb1ca1Smrg =&gt;
110537eb1ca1Smrg	1	1		Reply
110637eb1ca1Smrg	1	13		GrabDevice opcode
110737eb1ca1Smrg	2	CARD16		sequence number
110837eb1ca1Smrg	4	0		reply length
110937eb1ca1Smrg	1			status
111037eb1ca1Smrg		0	Success
111137eb1ca1Smrg		1	AlreadyGrabbed
111237eb1ca1Smrg		2	InvalidTime
111337eb1ca1Smrg		3	NotViewable
111437eb1ca1Smrg		4	Frozen
111537eb1ca1Smrg	23			unused
111637eb1ca1Smrg</literallayout>
111737eb1ca1Smrg</para>
111837eb1ca1Smrg<para>
111937eb1ca1Smrg<!-- .LP -->
112037eb1ca1Smrg<literallayout class="monospaced">
112137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
112237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
112337eb1ca1SmrgUngrabDevice
112437eb1ca1Smrg	1	CARD8		input extension opcode
112537eb1ca1Smrg	1	14		UngrabDevice opcode
112637eb1ca1Smrg	2	3		request length
112737eb1ca1Smrg	4	TIMESTAMP		time
112837eb1ca1Smrg		0	CurrentTime
112937eb1ca1Smrg	1	CARD8		device id
113037eb1ca1Smrg	3			unused
113137eb1ca1Smrg</literallayout>
113237eb1ca1Smrg</para>
113337eb1ca1Smrg<para>
113437eb1ca1Smrg<!-- .LP -->
113537eb1ca1Smrg<literallayout class="monospaced">
113637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
113737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
113837eb1ca1SmrgGrabDeviceKey
113937eb1ca1Smrg	1	CARD8		input extension opcode
114037eb1ca1Smrg	1	15		GrabDeviceKey opcode
114137eb1ca1Smrg	2	5+n		request length
114237eb1ca1Smrg	4	WINDOW		grab-window
114337eb1ca1Smrg	2	n		count of events
114437eb1ca1Smrg	2	SETofKEYMASK		modifiers
114537eb1ca1Smrg		#x8000	AnyModifier
114637eb1ca1Smrg	1	CARD8		modifier device
114737eb1ca1Smrg		#x0FF	UseXKeyboard
114837eb1ca1Smrg	1	CARD8		grabbed device
114937eb1ca1Smrg	1	KEYCODE			key
115037eb1ca1Smrg		0	AnyKey
115137eb1ca1Smrg	1			this-device-mode
115237eb1ca1Smrg		0	Synchronous
115337eb1ca1Smrg		1	Asynchronous
115437eb1ca1Smrg	1			other-devices-mode
115537eb1ca1Smrg		0	Synchronous
115637eb1ca1Smrg		1	Asynchronous
115737eb1ca1Smrg	1	BOOL		owner-events
115837eb1ca1Smrg	2			unused
115937eb1ca1Smrg	4n	LISTofEVENTCLASS	event list
116037eb1ca1Smrg</literallayout>
116137eb1ca1Smrg</para>
116237eb1ca1Smrg<para>
116337eb1ca1Smrg<!-- .LP -->
116437eb1ca1Smrg<literallayout class="monospaced">
116537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
116637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
116737eb1ca1SmrgUngrabDeviceKey
116837eb1ca1Smrg	1	CARD8		input extension opcode
116937eb1ca1Smrg	1	16		UngrabDeviceKey opcode
117037eb1ca1Smrg	2	4		request length
117137eb1ca1Smrg	4	WINDOW		grab-window
117237eb1ca1Smrg	2	SETofKEYMASK		modifiers
117337eb1ca1Smrg		#x8000	AnyModifier
117437eb1ca1Smrg	1	CARD8		modifier device
117537eb1ca1Smrg		#x0FF	UseXKeyboard
117637eb1ca1Smrg	1	KEYCODE			key
117737eb1ca1Smrg		0	AnyKey
117837eb1ca1Smrg	1	CARD8		grabbed device
117937eb1ca1Smrg	3			unused
118037eb1ca1Smrg
118137eb1ca1Smrg</literallayout>
118237eb1ca1Smrg</para>
118337eb1ca1Smrg<para>
118437eb1ca1Smrg<!-- .LP -->
118537eb1ca1Smrg<literallayout class="monospaced">
118637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
118737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
118837eb1ca1SmrgGrabDeviceButton
118937eb1ca1Smrg	1	CARD8		input extension opcode
119037eb1ca1Smrg	1	17		GrabDeviceButton opcode
119137eb1ca1Smrg	2	5+n		request length
119237eb1ca1Smrg	4	WINDOW		grab-window
119337eb1ca1Smrg	1	CARD8		grabbed device
119437eb1ca1Smrg	1	CARD8		modifier device
119537eb1ca1Smrg		#x0FF	UseXKeyboard
119637eb1ca1Smrg	2	n		count of desired events
119737eb1ca1Smrg	2	SETofKEYMASK		modifiers
119837eb1ca1Smrg	1			this-device-mode
119937eb1ca1Smrg		0	Synchronous
120037eb1ca1Smrg		1	Asynchronous
120137eb1ca1Smrg	1			other-device-mode
120237eb1ca1Smrg		0	Synchronous
120337eb1ca1Smrg		1	Asynchronous
120437eb1ca1Smrg	1	BUTTON		button
120537eb1ca1Smrg		0	AnyButton
120637eb1ca1Smrg	1	BOOL		owner-events
120737eb1ca1Smrg		#x8000	AnyModifier
120837eb1ca1Smrg	2			unused
120937eb1ca1Smrg	4n	LISTofEVENTCLASS	event list
121037eb1ca1Smrg</literallayout>
121137eb1ca1Smrg</para>
121237eb1ca1Smrg<para>
121337eb1ca1Smrg<!-- .LP -->
121437eb1ca1Smrg<literallayout class="monospaced">
121537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
121637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
121737eb1ca1SmrgUngrabDeviceButton
121837eb1ca1Smrg	1	CARD8		input extension opcode
121937eb1ca1Smrg	1	18		UngrabDeviceButton opcode
122037eb1ca1Smrg	2	4		request length
122137eb1ca1Smrg	4	WINDOW		grab-window
122237eb1ca1Smrg	2	SETofKEYMASK		modifiers
122337eb1ca1Smrg		#x8000	AnyModifier
122437eb1ca1Smrg	1	CARD8		modifier device
122537eb1ca1Smrg		#x0FF	UseXKeyboard
122637eb1ca1Smrg	1	BUTTON		button
122737eb1ca1Smrg		0	AnyButton
122837eb1ca1Smrg	1	CARD8		grabbed device
122937eb1ca1Smrg	3			unused
123037eb1ca1Smrg</literallayout>
123137eb1ca1Smrg</para>
123237eb1ca1Smrg<para>
123337eb1ca1Smrg<!-- .LP -->
123437eb1ca1Smrg<literallayout class="monospaced">
123537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
123637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
123737eb1ca1SmrgAllowDeviceEvents
123837eb1ca1Smrg	1	CARD8		input extension opcode
123937eb1ca1Smrg	1	19		AllowDeviceEvents opcode
124037eb1ca1Smrg	2	3		request length
124137eb1ca1Smrg	4	TIMESTAMP		time
124237eb1ca1Smrg		0	CurrentTime
124337eb1ca1Smrg	1			mode
124437eb1ca1Smrg		0	AsyncThisDevice
124537eb1ca1Smrg		1	SyncThisDevice
124637eb1ca1Smrg		2	ReplayThisDevice
124737eb1ca1Smrg		3	AsyncOtherDevices
124837eb1ca1Smrg		4	AsyncAll
124937eb1ca1Smrg		5	SyncAll
125037eb1ca1Smrg	1	CARD8		device id
125137eb1ca1Smrg	2			unused
125237eb1ca1Smrg</literallayout>
125337eb1ca1Smrg</para>
125437eb1ca1Smrg<para>
125537eb1ca1Smrg<!-- .LP -->
125637eb1ca1Smrg<literallayout class="monospaced">
125737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
125837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
125937eb1ca1SmrgGetDeviceFocus
126037eb1ca1Smrg	1	CARD8		input extension opcode
126137eb1ca1Smrg	1	20		GetDeviceFocus opcode
126237eb1ca1Smrg	2	2		request length
126337eb1ca1Smrg	1	CARD8		device
126437eb1ca1Smrg	3			unused
126537eb1ca1Smrg</literallayout>
126637eb1ca1Smrg<literallayout class="monospaced">
126737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
126837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
126937eb1ca1Smrg =&gt;
127037eb1ca1Smrg	1	1		Reply
127137eb1ca1Smrg	1	20		GetDeviceFocus opcode
127237eb1ca1Smrg	2	CARD16		sequence number
127337eb1ca1Smrg	4	0		reply length
127437eb1ca1Smrg	4	WINDOW		focus
127537eb1ca1Smrg		0	None
127637eb1ca1Smrg		1	PointerRoot
127737eb1ca1Smrg		3	FollowKeyboard
127837eb1ca1Smrg	4	TIMESTAMP	focus time
127937eb1ca1Smrg	1			revert-to
128037eb1ca1Smrg		0	None
128137eb1ca1Smrg		1	PointerRoot
128237eb1ca1Smrg		2	Parent
128337eb1ca1Smrg		3	FollowKeyboard
128437eb1ca1Smrg	15			unused
128537eb1ca1Smrg</literallayout>
128637eb1ca1Smrg</para>
128737eb1ca1Smrg<para>
128837eb1ca1Smrg<!-- .LP -->
128937eb1ca1Smrg<literallayout class="monospaced">
129037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
129137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
129237eb1ca1SmrgSetDeviceFocus
129337eb1ca1Smrg	1	CARD8		input extension opcode
129437eb1ca1Smrg	1	21		SetDeviceFocus opcode
129537eb1ca1Smrg	2	4		request length
129637eb1ca1Smrg	4	WINDOW		focus
129737eb1ca1Smrg		0	None
129837eb1ca1Smrg		1	PointerRoot
129937eb1ca1Smrg		3	FollowKeyboard
130037eb1ca1Smrg	4	TIMESTAMP		time
130137eb1ca1Smrg		0	CurrentTime
130237eb1ca1Smrg	1			revert-to
130337eb1ca1Smrg		0	None
130437eb1ca1Smrg		1	PointerRoot
130537eb1ca1Smrg		2	Parent
130637eb1ca1Smrg		3	FollowKeyboard
130737eb1ca1Smrg	1	CARD8		device
130837eb1ca1Smrg	2			unused
130937eb1ca1Smrg</literallayout>
131037eb1ca1Smrg</para>
131137eb1ca1Smrg<para>
131237eb1ca1Smrg<!-- .LP -->
131337eb1ca1Smrg<literallayout class="monospaced">
131437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
131537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
131637eb1ca1SmrgGetFeedbackControl
131737eb1ca1Smrg	1	CARD8		input extension opcode
131837eb1ca1Smrg	1	22		GetFeedbackControl opcode
131937eb1ca1Smrg	2	2		request length
132037eb1ca1Smrg	1	CARD8		device id
132137eb1ca1Smrg	3			unused
132237eb1ca1Smrg</literallayout>
132337eb1ca1Smrg<literallayout class="monospaced">
132437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
132537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
132637eb1ca1Smrg =&gt;
132737eb1ca1Smrg	1	1		Reply
132837eb1ca1Smrg	1	22		GetFeedbackControl opcode
132937eb1ca1Smrg	2	CARD16		sequence number
133037eb1ca1Smrg	4	m/4			reply length
133137eb1ca1Smrg	2	n		number of feedbacks supported
133237eb1ca1Smrg	22			unused
133337eb1ca1Smrg	m	LISTofFEEDBACKSTATE	feedbacks
133437eb1ca1Smrg</literallayout>
133537eb1ca1Smrg</para>
133637eb1ca1Smrg<para>
133737eb1ca1Smrg<!-- .LP -->
133837eb1ca1Smrg<literallayout class="monospaced">
133937eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
134037eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
134137eb1ca1Smrg  FEEDBACKSTATE	KBDFEEDBACKSTATE, PTRFEEDBACKSTATE, INTEGERFEEDBACKSTATE, 
134237eb1ca1Smrg  STRINGFEEDBACKSTATE, BELLFEEDBACKSTATE, or LEDFEEDBACKSTATE
134337eb1ca1Smrg</literallayout>
134437eb1ca1Smrg</para>
134537eb1ca1Smrg<para>
134637eb1ca1Smrg<!-- .LP -->
134737eb1ca1Smrg<literallayout class="monospaced">
134837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
134937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
135037eb1ca1Smrg  KBDFEEDBACKSTATE
135137eb1ca1Smrg	1	0		feedback class id
135237eb1ca1Smrg	1	CARD8		id of this feedback
135337eb1ca1Smrg	2	20		length
135437eb1ca1Smrg	2	CARD16		pitch
135537eb1ca1Smrg	2	CARD16		duration
135637eb1ca1Smrg	4	CARD32		led_mask
135737eb1ca1Smrg	4	CARD32		led_values
135837eb1ca1Smrg	1	    		global_auto_repeat
135937eb1ca1Smrg		0	Off
136037eb1ca1Smrg		1	On
136137eb1ca1Smrg	1	CARD8		click
136237eb1ca1Smrg	1	CARD8		percent
136337eb1ca1Smrg	1	    		unused
136437eb1ca1Smrg	32	LISTofCARD8	auto_repeats
136537eb1ca1Smrg</literallayout>
136637eb1ca1Smrg</para>
136737eb1ca1Smrg<para>
136837eb1ca1Smrg<!-- .LP -->
136937eb1ca1Smrg<literallayout class="monospaced">
137037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
137137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
137237eb1ca1Smrg  PTRFEEDBACKSTATE
137337eb1ca1Smrg	1	0		feedback class id
137437eb1ca1Smrg	1	CARD8		id of this feedback
137537eb1ca1Smrg	2	12		length
137637eb1ca1Smrg	2			unused
137737eb1ca1Smrg	2	CARD16		acceleration-numerator
137837eb1ca1Smrg	2	CARD16		acceleration-denominator
137937eb1ca1Smrg	2	CARD16		threshold
138037eb1ca1Smrg</literallayout>
138137eb1ca1Smrg</para>
138237eb1ca1Smrg<para>
138337eb1ca1Smrg<!-- .LP -->
138437eb1ca1Smrg<literallayout class="monospaced">
138537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
138637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
138737eb1ca1Smrg  INTEGERFEEDBACKSTATE
138837eb1ca1Smrg	1	0		feedback class id
138937eb1ca1Smrg	1	CARD8		id of this feedback
139037eb1ca1Smrg	2	16		length
139137eb1ca1Smrg	4	CARD32		resolution
139237eb1ca1Smrg	4	INT32		minimum value
139337eb1ca1Smrg	4	INT32		maximum value
139437eb1ca1Smrg</literallayout>
139537eb1ca1Smrg</para>
139637eb1ca1Smrg<para>
139737eb1ca1Smrg<!-- .LP -->
139837eb1ca1Smrg<literallayout class="monospaced">
139937eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
140037eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
140137eb1ca1Smrg  STRINGFEEDBACKSTATE
140237eb1ca1Smrg	1	1		feedback class id
140337eb1ca1Smrg	1	CARD8		id of this feedback
140437eb1ca1Smrg	2	4n+8		length
140537eb1ca1Smrg	2	CARD16		max_symbols
140637eb1ca1Smrg	2	n      		number of keysyms supported
140737eb1ca1Smrg	4n	LISTofKEYSYM		key symbols supported
140837eb1ca1Smrg</literallayout>
140937eb1ca1Smrg</para>
141037eb1ca1Smrg<para>
141137eb1ca1Smrg<!-- .LP -->
141237eb1ca1Smrg<literallayout class="monospaced">
141337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
141437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
141537eb1ca1Smrg  BELLFEEDBACKSTATE
141637eb1ca1Smrg	1	1		feedback class id
141737eb1ca1Smrg	1	CARD8		id of this feedback
141837eb1ca1Smrg	2	12		length
141937eb1ca1Smrg	1	CARD8		percent
142037eb1ca1Smrg	3			unused
142137eb1ca1Smrg	2	CARD16		pitch
142237eb1ca1Smrg	2	CARD16		duration
142337eb1ca1Smrg</literallayout>
142437eb1ca1Smrg</para>
142537eb1ca1Smrg<para>
142637eb1ca1Smrg<!-- .LP -->
142737eb1ca1Smrg<literallayout class="monospaced">
142837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
142937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
143037eb1ca1Smrg  LEDFEEDBACKSTATE
143137eb1ca1Smrg	1	1		feedback class id
143237eb1ca1Smrg	1	CARD8		id of this feedback
143337eb1ca1Smrg	2	12		length
143437eb1ca1Smrg	4	CARD32		led_mask
143537eb1ca1Smrg	4	BITMASK		led_values
143637eb1ca1Smrg		#x0001	On
143737eb1ca1Smrg		#x0002	Off
143837eb1ca1Smrg</literallayout>
143937eb1ca1Smrg</para>
144037eb1ca1Smrg<para>
144137eb1ca1Smrg<!-- .LP -->
144237eb1ca1Smrg<literallayout class="monospaced">
144337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
144437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
144537eb1ca1SmrgChangeFeedbackControl
144637eb1ca1Smrg	1	CARD8		input extension opcode
144737eb1ca1Smrg	1	23		ChangeFeedbackControl opcode
144837eb1ca1Smrg	2	3+n/4		request length
144937eb1ca1Smrg	4	BITMASK		value-mask (has n bits set to 1)
145037eb1ca1Smrg		#x0001	keyclick-percent
145137eb1ca1Smrg		#x0002	bell-percent
145237eb1ca1Smrg		#x0004	bell-pitch
145337eb1ca1Smrg		#x0008	bell-duration
145437eb1ca1Smrg		#x0010	led
145537eb1ca1Smrg		#x0020	led-mode
145637eb1ca1Smrg		#x0040	key
145737eb1ca1Smrg		#x0080	auto-repeat-mode
145837eb1ca1Smrg		#x0001	string
145937eb1ca1Smrg		#x0001	integer
146037eb1ca1Smrg		#x0001	acceleration-numerator
146137eb1ca1Smrg		#x0002	acceleration-denominator
146237eb1ca1Smrg		#x0004	acceleration-threshold
146337eb1ca1Smrg	1	CARD8		device id
146437eb1ca1Smrg	1	CARD8		feedback class id
146537eb1ca1Smrg	2			unused
146637eb1ca1Smrg	n	FEEDBACKCLASS
146737eb1ca1Smrg</literallayout>
146837eb1ca1Smrg</para>
146937eb1ca1Smrg<para>
147037eb1ca1Smrg<!-- .LP -->
147137eb1ca1Smrg<literallayout class="monospaced">
147237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
147337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
147437eb1ca1Smrg  FEEDBACKCLASS	KBDFEEDBACKCTL, PTRFEEDBACKCTL, INTEGERFEEDBACKCTL, 
147537eb1ca1Smrg  STRINGFEEDBACKCTL, BELLFEEDBACKCTL, or LEDFEEDBACKCTL 
147637eb1ca1Smrg</literallayout>
147737eb1ca1Smrg</para>
147837eb1ca1Smrg<para>
147937eb1ca1Smrg<!-- .LP -->
148037eb1ca1Smrg<literallayout class="monospaced">
148137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
148237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
148337eb1ca1Smrg  KBDFEEDBACKCTL
148437eb1ca1Smrg	1	0		feedback class id
148537eb1ca1Smrg	1	CARD8		id of this feedback
148637eb1ca1Smrg	2	20		length
148737eb1ca1Smrg	1	KEYCODE		key
148837eb1ca1Smrg	1			auto-repeat-mode
148937eb1ca1Smrg		0	Off
149037eb1ca1Smrg		1	On
149137eb1ca1Smrg		2	Default
149237eb1ca1Smrg	1	INT8		key-click-percent
149337eb1ca1Smrg	1	INT8		bell-percent
149437eb1ca1Smrg	2	INT16		bell-pitch
149537eb1ca1Smrg	2	INT16		bell-duration
149637eb1ca1Smrg	4	CARD32		led_mask
149737eb1ca1Smrg	4	CARD32		led_values
149837eb1ca1Smrg</literallayout>
149937eb1ca1Smrg</para>
150037eb1ca1Smrg<para>
150137eb1ca1Smrg<!-- .LP -->
150237eb1ca1Smrg<literallayout class="monospaced">
150337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
150437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
150537eb1ca1Smrg  PTRFEEDBACKCTL
150637eb1ca1Smrg	1	1		feedback class id
150737eb1ca1Smrg	1	CARD8		id of this feedback
150837eb1ca1Smrg	2	12		length
150937eb1ca1Smrg	2			unused
151037eb1ca1Smrg	2	INT16		numerator
151137eb1ca1Smrg	2	INT16		denominator
151237eb1ca1Smrg	2	INT16		threshold
151337eb1ca1Smrg</literallayout>
151437eb1ca1Smrg</para>
151537eb1ca1Smrg<para>
151637eb1ca1Smrg<!-- .LP -->
151737eb1ca1Smrg<literallayout class="monospaced">
151837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
151937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
152037eb1ca1Smrg  STRINGCTL
152137eb1ca1Smrg	1	2		feedback class id
152237eb1ca1Smrg	1	CARD8		id of this feedback
152337eb1ca1Smrg	2	4n+8		length
152437eb1ca1Smrg	2			unused
152537eb1ca1Smrg	2	n		number of keysyms to display
152637eb1ca1Smrg	4n	LISTofKEYSYM		list of key symbols to display
152737eb1ca1Smrg</literallayout>
152837eb1ca1Smrg</para>
152937eb1ca1Smrg<para>
153037eb1ca1Smrg<!-- .LP -->
153137eb1ca1Smrg<literallayout class="monospaced">
153237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
153337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
153437eb1ca1Smrg  INTEGERCTL
153537eb1ca1Smrg	1	3		feedback class id
153637eb1ca1Smrg	1	CARD8		id of this feedback
153737eb1ca1Smrg	2	8		length
153837eb1ca1Smrg	4	INT32		integer to display
153937eb1ca1Smrg</literallayout>
154037eb1ca1Smrg</para>
154137eb1ca1Smrg<para>
154237eb1ca1Smrg<!-- .LP -->
154337eb1ca1Smrg<literallayout class="monospaced">
154437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
154537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
154637eb1ca1Smrg  LEDCTL
154737eb1ca1Smrg	1	4		feedback class id
154837eb1ca1Smrg	1	CARD8		id of this feedback
154937eb1ca1Smrg	2	12		length
155037eb1ca1Smrg	4	CARD32		led_mask
155137eb1ca1Smrg	4	BITMASK		led_values
155237eb1ca1Smrg		#x0001	On
155337eb1ca1Smrg		#x0002	Off
155437eb1ca1Smrg</literallayout>
155537eb1ca1Smrg</para>
155637eb1ca1Smrg<para>
155737eb1ca1Smrg<!-- .LP -->
155837eb1ca1Smrg<literallayout class="monospaced">
155937eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
156037eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
156137eb1ca1Smrg  BELLCTL
156237eb1ca1Smrg	1	5		feedback class id
156337eb1ca1Smrg	1	CARD8		id of this feedback
156437eb1ca1Smrg	2	8		length
156537eb1ca1Smrg	1	INT8		percent
156637eb1ca1Smrg	3			unused
156737eb1ca1Smrg	2	INT16		pitch
156837eb1ca1Smrg	2	INT16		duration
156937eb1ca1Smrg</literallayout>
157037eb1ca1Smrg</para>
157137eb1ca1Smrg<para>
157237eb1ca1Smrg<!-- .LP -->
157337eb1ca1Smrg<literallayout class="monospaced">
157437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
157537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
157637eb1ca1SmrgGetDeviceKeyMapping
157737eb1ca1Smrg	1	CARD8		input extension opcode
157837eb1ca1Smrg	1	24		GetDeviceKeyMapping opcode
157937eb1ca1Smrg	2	2		request length
158037eb1ca1Smrg	1	CARD8		device
158137eb1ca1Smrg	1	KEYCODE		first-keycode
158237eb1ca1Smrg	1	CARD8		count
158337eb1ca1Smrg	1			unused
158437eb1ca1Smrg</literallayout>
158537eb1ca1Smrg<literallayout class="monospaced">
158637eb1ca1Smrg<!-- .TA .2i .75i 2.0i 3.0i -->
158737eb1ca1Smrg<!-- .ta .2i .75i 2.0i 3.0i -->
158837eb1ca1Smrg =&gt;
158937eb1ca1Smrg	1	1		Reply
159037eb1ca1Smrg	1	24		GetDeviceKeyMapping opcode
159137eb1ca1Smrg	2	CARD16		sequence number
159237eb1ca1Smrg	4	nm		reply length (m = count field from the request)
159337eb1ca1Smrg	1	n		keysyms-per-keycode
159437eb1ca1Smrg	23			unused
159537eb1ca1Smrg	4nm	LISTofKEYSYM		keysyms
159637eb1ca1Smrg</literallayout>
159737eb1ca1Smrg</para>
159837eb1ca1Smrg<para>
159937eb1ca1Smrg<!-- .LP -->
160037eb1ca1Smrg<literallayout class="monospaced">
160137eb1ca1Smrg<!-- .TA .2i .75i 2.0i 3.0i -->
160237eb1ca1Smrg<!-- .ta .2i .75i 2.0i 3.0i -->
160337eb1ca1SmrgChangeDeviceKeyMapping
160437eb1ca1Smrg	1	CARD8		input extension opcode
160537eb1ca1Smrg	1	25		ChangeDeviceKeyMapping opcode
160637eb1ca1Smrg	2	2+nm		request length
160737eb1ca1Smrg	1	CARD8		device
160837eb1ca1Smrg	1	KEYCODE		first-keycode
160937eb1ca1Smrg	1	m		keysyms-per-keycode
161037eb1ca1Smrg	1	n		keycode-count
161137eb1ca1Smrg	4nm	LISTofKEYSYM		keysyms
161237eb1ca1Smrg</literallayout>
161337eb1ca1Smrg</para>
161437eb1ca1Smrg<para>
161537eb1ca1Smrg<!-- .LP -->
161637eb1ca1Smrg<literallayout class="monospaced">
161737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
161837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
161937eb1ca1SmrgGetDeviceModifierMapping
162037eb1ca1Smrg	1	CARD8		input extension opcode
162137eb1ca1Smrg	1	26		GetDeviceModifierMapping opcode
162237eb1ca1Smrg	2	2		request length
162337eb1ca1Smrg	1	CARD8		device
162437eb1ca1Smrg	3			unused
162537eb1ca1Smrg</literallayout>
162637eb1ca1Smrg<literallayout class="monospaced">
162737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
162837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
162937eb1ca1Smrg =&gt;
163037eb1ca1Smrg	1	1		Reply
163137eb1ca1Smrg	1	26		GetDeviceModifierMapping opcode
163237eb1ca1Smrg	2	CARD16		sequence number
163337eb1ca1Smrg	4	2n		reply length
163437eb1ca1Smrg	1	n		keycodes-per-modifier
163537eb1ca1Smrg	23			unused
163637eb1ca1Smrg	8n	LISTofKEYCODE		keycodes
163737eb1ca1Smrg</literallayout>
163837eb1ca1Smrg</para>
163937eb1ca1Smrg<para>
164037eb1ca1Smrg<!-- .LP -->
164137eb1ca1Smrg<literallayout class="monospaced">
164237eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
164337eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
164437eb1ca1SmrgSetDeviceModifierMapping
164537eb1ca1Smrg	1	CARD8		input extension opcode
164637eb1ca1Smrg	1	27		SetDeviceModifier opcode
164737eb1ca1Smrg	2	2+2n		request length
164837eb1ca1Smrg	1	CARD8		device
164937eb1ca1Smrg	1	n		keycodes-per-modifier
165037eb1ca1Smrg	2			unused
165137eb1ca1Smrg	8n	LISTofKEYCODE		keycodes
165237eb1ca1Smrg</literallayout>
165337eb1ca1Smrg<literallayout class="monospaced">
165437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
165537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
165637eb1ca1Smrg =&gt;
165737eb1ca1Smrg	1	1		Reply
165837eb1ca1Smrg	1	27		SetDeviceModifierMapping opcode
165937eb1ca1Smrg	2	CARD16		sequence number
166037eb1ca1Smrg	4	0		reply length
166137eb1ca1Smrg	1			status
166237eb1ca1Smrg		0	Success
166337eb1ca1Smrg		1	Busy
166437eb1ca1Smrg		2	Failed
166537eb1ca1Smrg	23			unused
166637eb1ca1Smrg</literallayout>
166737eb1ca1Smrg</para>
166837eb1ca1Smrg<para>
166937eb1ca1Smrg<!-- .LP -->
167037eb1ca1Smrg<literallayout class="monospaced">
167137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
167237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
167337eb1ca1SmrgGetDeviceButtonMapping
167437eb1ca1Smrg	1	CARD8		input extension opcode
167537eb1ca1Smrg	1	28		GetDeviceButtonMapping opcode
167637eb1ca1Smrg	2	2		request length
167737eb1ca1Smrg	1	CARD8		device
167837eb1ca1Smrg	3			unused
167937eb1ca1Smrg</literallayout>
168037eb1ca1Smrg<literallayout class="monospaced">
168137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
168237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
168337eb1ca1Smrg =&gt;
168437eb1ca1Smrg	1	1		Reply
168537eb1ca1Smrg	1	28		GetDeviceButtonMapping opcode
168637eb1ca1Smrg	2	CARD16		sequence number
168737eb1ca1Smrg	4	(n+p)/4		reply length
168837eb1ca1Smrg	1	n		number of elements in map list
168937eb1ca1Smrg	23			unused
169037eb1ca1Smrg	n	LISTofCARD8			map
169137eb1ca1Smrg	p			unused, p=pad(n)
169237eb1ca1Smrg</literallayout>
169337eb1ca1Smrg</para>
169437eb1ca1Smrg<para>
169537eb1ca1Smrg<!-- .LP -->
169637eb1ca1Smrg<literallayout class="monospaced">
169737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
169837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
169937eb1ca1SmrgSetDeviceButtonMapping
170037eb1ca1Smrg	1	CARD8		input extension opcode
170137eb1ca1Smrg	1	29		SetDeviceButtonMapping opcode
170237eb1ca1Smrg	2	2+(n+p)/4		request length
170337eb1ca1Smrg	1	CARD8		device
170437eb1ca1Smrg	1	n		length of map
170537eb1ca1Smrg	2			unused
170637eb1ca1Smrg	n	LISTofCARD8			map
170737eb1ca1Smrg	p			unused, p=pad(n)
170837eb1ca1Smrg</literallayout>
170937eb1ca1Smrg<literallayout class="monospaced">
171037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
171137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
171237eb1ca1Smrg =&gt;
171337eb1ca1Smrg	1	1		Reply
171437eb1ca1Smrg	1	29		SetDeviceButtonMapping opcode
171537eb1ca1Smrg	2	CARD16		sequence number
171637eb1ca1Smrg	4	0		reply length
171737eb1ca1Smrg	1			status
171837eb1ca1Smrg		0	Success
171937eb1ca1Smrg		1	Busy
172037eb1ca1Smrg	23			unused
172137eb1ca1Smrg</literallayout>
172237eb1ca1Smrg</para>
172337eb1ca1Smrg<para>
172437eb1ca1Smrg<!-- .LP -->
172537eb1ca1Smrg<literallayout class="monospaced">
172637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
172737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
172837eb1ca1SmrgQueryDeviceState
172937eb1ca1Smrg	1	CARD8		input extension opcode
173037eb1ca1Smrg	1	30		QueryDeviceState opcode
173137eb1ca1Smrg	2	2		request length
173237eb1ca1Smrg	1	CARD8		device
173337eb1ca1Smrg	3			unused
173437eb1ca1Smrg</literallayout>
173537eb1ca1Smrg<literallayout class="monospaced">
173637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
173737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
173837eb1ca1Smrg =&gt;
173937eb1ca1Smrg	1	1			Reply
174037eb1ca1Smrg	1	30			QueryDeviceState opcode
174137eb1ca1Smrg	2	CARD16			sequence number
174237eb1ca1Smrg	4	m/4			reply length
174337eb1ca1Smrg	1	n     	 		number of input classes
174437eb1ca1Smrg	23				unused
174537eb1ca1Smrg	m	LISTofINPUTSTATE
174637eb1ca1Smrg</literallayout>
174737eb1ca1Smrg<literallayout class="monospaced">
174837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
174937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
175037eb1ca1Smrg  INPUTSTATE	KEYSTATE or BUTTONSTATE or VALUATORSTATE
175137eb1ca1Smrg</literallayout>
175237eb1ca1Smrg</para>
175337eb1ca1Smrg<para>
175437eb1ca1Smrg<!-- .LP -->
175537eb1ca1Smrg<literallayout class="monospaced">
175637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
175737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
175837eb1ca1Smrg  KEYSTATE
175937eb1ca1Smrg	1	CARD8		key input class id
176037eb1ca1Smrg	1	36		length
176137eb1ca1Smrg	1	CARD8		num_keys
176237eb1ca1Smrg	1			unused
176337eb1ca1Smrg	32	LISTofCARD8		status of keys
176437eb1ca1Smrg</literallayout>
176537eb1ca1Smrg<literallayout class="monospaced">
176637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
176737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
176837eb1ca1Smrg  BUTTONSTATE
176937eb1ca1Smrg	1	CARD8		button input class id
177037eb1ca1Smrg	1	36		length
177137eb1ca1Smrg	1	CARD8		num_buttons
177237eb1ca1Smrg	1			unused
177337eb1ca1Smrg	32	LISTofCARD8			status of buttons
177437eb1ca1Smrg</literallayout>
177537eb1ca1Smrg<literallayout class="monospaced">
177637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
177737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
177837eb1ca1Smrg  VALUATORSTATE
177937eb1ca1Smrg	1	CARD8		valuator input class id
178037eb1ca1Smrg	1	4n + 4		length
178137eb1ca1Smrg	1	n		number of valuators
178237eb1ca1Smrg	1			mode
178337eb1ca1Smrg		#x01	DeviceMode (0 = Relative, 1 = Absolute)
178437eb1ca1Smrg		#x02	ProximityState (0 = InProximity, 1 = OutOfProximity)
178537eb1ca1Smrg	4n	LISTofCARD32		status of valuators
178637eb1ca1Smrg</literallayout>
178737eb1ca1Smrg</para>
178837eb1ca1Smrg<para>
178937eb1ca1Smrg<!-- .LP -->
179037eb1ca1Smrg<literallayout class="monospaced">
179137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
179237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
179337eb1ca1SmrgSendExtensionEvent
179437eb1ca1Smrg	1	CARD8			input extension opcode
179537eb1ca1Smrg	1	31			SendExtensionEvent opcode
179637eb1ca1Smrg	2	4 + 8n + m		request length
179737eb1ca1Smrg	4	WINDOW			destination
179837eb1ca1Smrg	1	CARD8			device
179937eb1ca1Smrg	1	BOOL			propagate
180037eb1ca1Smrg	2	CARD16			eventclass count
180137eb1ca1Smrg	1	CARD8			num_events
180237eb1ca1Smrg	3				unused
180337eb1ca1Smrg	32n	LISTofEVENTS		events to send
180437eb1ca1Smrg	4m	LISTofEVENTCLASS	desired events
180537eb1ca1Smrg</literallayout>
180637eb1ca1Smrg</para>
180737eb1ca1Smrg<para>
180837eb1ca1Smrg<!-- .LP -->
180937eb1ca1Smrg<literallayout class="monospaced">
181037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
181137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
181237eb1ca1SmrgDeviceBell
181337eb1ca1Smrg	1	CARD8		input extension opcode
181437eb1ca1Smrg	1	32		DeviceBell opcode
181537eb1ca1Smrg	2	2		request length
181637eb1ca1Smrg	1	CARD8		device id
181737eb1ca1Smrg	1	CARD8		feedback id
181837eb1ca1Smrg	1	CARD8		feedback class
181937eb1ca1Smrg	1	INT8		percent
182037eb1ca1Smrg</literallayout>
182137eb1ca1Smrg</para>
182237eb1ca1Smrg<para>
182337eb1ca1Smrg<!-- .LP -->
182437eb1ca1Smrg<literallayout class="monospaced">
182537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
182637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
182737eb1ca1SmrgSetDeviceValuators
182837eb1ca1Smrg	1	CARD8		input extension opcode
182937eb1ca1Smrg	1	33		SetDeviceValuators opcode
183037eb1ca1Smrg	2	2 + n		request length
183137eb1ca1Smrg	1	CARD8		device id
183237eb1ca1Smrg	1	CARD8		first valuator
183337eb1ca1Smrg	1	n    		number of valuators
183437eb1ca1Smrg	1			unused
183537eb1ca1Smrg	4n	LISTofINT32	valuator values to set
183637eb1ca1Smrg</literallayout>
183737eb1ca1Smrg<literallayout class="monospaced">
183837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 3.5i -->
183937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 3.5i -->
184037eb1ca1Smrg =&gt;
184137eb1ca1Smrg	1	1			Reply
184237eb1ca1Smrg	1	33			SetDeviceValuators opcode
184337eb1ca1Smrg	2	CARD16			sequence number
184437eb1ca1Smrg	4	0			reply length
184537eb1ca1Smrg	1	CARD8			status
184637eb1ca1Smrg		0	Success
184737eb1ca1Smrg		1	AlreadyGrabbed
184837eb1ca1Smrg	23				unused
184937eb1ca1Smrg</literallayout>
185037eb1ca1Smrg</para>
185137eb1ca1Smrg<para>
185237eb1ca1Smrg<!-- .LP -->
185337eb1ca1Smrg<literallayout class="monospaced">
185437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
185537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
185637eb1ca1SmrgGetDeviceControl
185737eb1ca1Smrg	1	CARD8		input extension opcode
185837eb1ca1Smrg	1	34		GetDeviceControl opcode
185937eb1ca1Smrg	2	2		request length
186037eb1ca1Smrg	2	CARD16		device control type
186137eb1ca1Smrg	1	CARD8		device id
186237eb1ca1Smrg	1			unused
186337eb1ca1Smrg</literallayout>
186437eb1ca1Smrg<literallayout class="monospaced">
186537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 3.5i -->
186637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 3.5i -->
186737eb1ca1Smrg =&gt;
186837eb1ca1Smrg	1	1			Reply
186937eb1ca1Smrg	1	34			GetDeviceControl opcode
187037eb1ca1Smrg	2	CARD16			sequence number
187137eb1ca1Smrg	4	n/4			reply length
187237eb1ca1Smrg	1	CARD8			status
187337eb1ca1Smrg		0			Success
187437eb1ca1Smrg		1			AlreadyGrabbed
187537eb1ca1Smrg		3 + first_error		DeviceBusy
187637eb1ca1Smrg	23				unused
187737eb1ca1Smrg	n				DEVICESTATE
187837eb1ca1Smrg</literallayout>
187937eb1ca1Smrg<literallayout class="monospaced">
188037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
188137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
188237eb1ca1SmrgDEVICESTATE			DEVICERESOLUTIONSTATE
188337eb1ca1Smrg</literallayout>
188437eb1ca1Smrg</para>
188537eb1ca1Smrg<para>
188637eb1ca1Smrg<!-- .LP -->
188737eb1ca1Smrg<literallayout class="monospaced">
188837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
188937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
189037eb1ca1SmrgDEVICERESOLUTIONSTATE
189137eb1ca1Smrg 	2	0		control type
189237eb1ca1Smrg 	2	8 + 12n		length
189337eb1ca1Smrg 	4	n    		num_valuators
189437eb1ca1Smrg 	4n	LISTOfCARD32	resolution values
189537eb1ca1Smrg 	4n	LISTOfCARD32	resolution min_values
189637eb1ca1Smrg 	4n	LISTOfCARD32	resolution max_values
189737eb1ca1Smrg</literallayout>
189837eb1ca1Smrg</para>
189937eb1ca1Smrg<para>
190037eb1ca1Smrg<!-- .LP -->
190137eb1ca1Smrg</para>
190237eb1ca1Smrg<para>
190337eb1ca1Smrg<!-- .LP -->
190437eb1ca1Smrg<literallayout class="monospaced">
190537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
190637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
190737eb1ca1SmrgChangeDeviceControl
190837eb1ca1Smrg 	1	CARD8		input extension opcode
190937eb1ca1Smrg 	1	35		ChangeDeviceControl opcode
191037eb1ca1Smrg 	2	2+n/4		request length
191137eb1ca1Smrg 	2	CARD16		control type
191237eb1ca1Smrg 	1	CARD8		device id
191337eb1ca1Smrg 	1			unused
191437eb1ca1Smrg 	n			DEVICECONTROL
191537eb1ca1Smrg</literallayout>
191637eb1ca1Smrg<literallayout class="monospaced">
191737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
191837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
191937eb1ca1SmrgDEVICECONTROL		DEVICERESOLUTIONCTL
192037eb1ca1Smrg</literallayout>
192137eb1ca1Smrg</para>
192237eb1ca1Smrg<para>
192337eb1ca1Smrg<!-- .LP -->
192437eb1ca1Smrg<literallayout class="monospaced">
192537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
192637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
192737eb1ca1SmrgDEVICERESOLUTIONCTL
192837eb1ca1Smrg 	2	1		control type
192937eb1ca1Smrg 	2	8 + 4n		length
193037eb1ca1Smrg 	1	CARD8		first_valuator
193137eb1ca1Smrg 	1	n    		num_valuators
193237eb1ca1Smrg 	2			unused
193337eb1ca1Smrg 	4n	LISTOfCARD32	resolution values
193437eb1ca1Smrg</literallayout>
193537eb1ca1Smrg</para>
193637eb1ca1Smrg<para>
193737eb1ca1Smrg<!-- .LP -->
193837eb1ca1Smrg<literallayout class="monospaced">
193937eb1ca1Smrg<!-- .TA .2i .5i 1.5i 3.5i -->
194037eb1ca1Smrg<!-- .ta .2i .5i 1.5i 3.5i -->
194137eb1ca1Smrg =&gt;
194237eb1ca1Smrg 	1	1			Reply
194337eb1ca1Smrg 	1	35			ChangeDeviceControl opcode
194437eb1ca1Smrg 	2	CARD16			sequence number
194537eb1ca1Smrg 	4	0			reply length
194637eb1ca1Smrg 	1	CARD8			status
194737eb1ca1Smrg 		0			Success
194837eb1ca1Smrg 		1			AlreadyGrabbed
194937eb1ca1Smrg 		3 + first_error		DeviceBusy
195037eb1ca1Smrg 	23				unused
195137eb1ca1Smrg</literallayout>
195237eb1ca1Smrg<!-- .ps +2 -->
195337eb1ca1SmrgEvents
195437eb1ca1Smrg<!-- .ps -->
195537eb1ca1Smrg</para>
195637eb1ca1Smrg<para>
195737eb1ca1Smrg<!-- .LP -->
195837eb1ca1SmrgDeviceKeyPress, DeviceKeyRelease, DeviceButtonPress, DeviceButtonRelease,
195937eb1ca1SmrgProximityIn, ProximityOut, and DeviceStateNotify  events may be followed by 
196037eb1ca1Smrgzero or more DeviceValuator events.  DeviceMotionNotify events will be 
196137eb1ca1Smrgfollowed by one or more DeviceValuator events.
196237eb1ca1Smrg</para>
196337eb1ca1Smrg<para>
196437eb1ca1Smrg<!-- .LP -->
196537eb1ca1Smrg<literallayout class="monospaced">
196637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
196737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
196837eb1ca1SmrgDeviceValuator
196937eb1ca1Smrg	1	CARD8		code
197037eb1ca1Smrg	1	CARD8		device id
197137eb1ca1Smrg	2	CARD16		sequence number
197237eb1ca1Smrg	2	SETofKEYBUTMASK		state
197337eb1ca1Smrg	1	n		number of valuators this device reports
197437eb1ca1Smrg	1	m		number of first valuator in this event
197537eb1ca1Smrg	24	LISTofINT32	valuators
197637eb1ca1Smrg</literallayout>
197737eb1ca1Smrg</para>
197837eb1ca1Smrg<para>
197937eb1ca1Smrg<!-- .LP -->
198037eb1ca1Smrg<literallayout class="monospaced">
198137eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
198237eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
198337eb1ca1SmrgDeviceKeyPress
198437eb1ca1Smrg	1	CARD8		code
198537eb1ca1Smrg	1	KEYCODE		detail
198637eb1ca1Smrg	2	CARD16		sequence number
198737eb1ca1Smrg	4	TIMESTAMP		time
198837eb1ca1Smrg	4	WINDOW		root
198937eb1ca1Smrg	4	WINDOW		event
199037eb1ca1Smrg	4	WINDOW		child
199137eb1ca1Smrg		0	None
199237eb1ca1Smrg	2	INT16		root-x
199337eb1ca1Smrg	2	INT16		root-y
199437eb1ca1Smrg	2	INT16		event-x
199537eb1ca1Smrg	2	INT16		event-y
199637eb1ca1Smrg	2	SETofKEYBUTMASK		state
199737eb1ca1Smrg	1	BOOL		same-screen
199837eb1ca1Smrg	1	CARD8		device id
199937eb1ca1Smrg		#x80		MORE_EVENTS follow
200037eb1ca1Smrg</literallayout>
200137eb1ca1Smrg</para>
200237eb1ca1Smrg<para>
200337eb1ca1Smrg<!-- .LP -->
200437eb1ca1Smrg<literallayout class="monospaced">
200537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
200637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
200737eb1ca1SmrgDeviceKeyRelease
200837eb1ca1Smrg	1	CARD8		code
200937eb1ca1Smrg	1	KEYCODE		detail
201037eb1ca1Smrg	2	CARD16		sequence number
201137eb1ca1Smrg	4	TIMESTAMP		time
201237eb1ca1Smrg	4	WINDOW		root
201337eb1ca1Smrg	4	WINDOW		event
201437eb1ca1Smrg	4	WINDOW		child
201537eb1ca1Smrg		0	None
201637eb1ca1Smrg	2	INT16		root-x
201737eb1ca1Smrg	2	INT16		root-y
201837eb1ca1Smrg	2	INT16		event-x
201937eb1ca1Smrg	2	INT16		event-y
202037eb1ca1Smrg	2	SETofKEYBUTMASK			state
202137eb1ca1Smrg	1	BOOL		same-screen
202237eb1ca1Smrg	1	CARD8		device id
202337eb1ca1Smrg		#x80		MORE_EVENTS follow
202437eb1ca1Smrg</literallayout>
202537eb1ca1Smrg</para>
202637eb1ca1Smrg<para>
202737eb1ca1Smrg<!-- .LP -->
202837eb1ca1Smrg<literallayout class="monospaced">
202937eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
203037eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
203137eb1ca1SmrgDeviceButtonPress
203237eb1ca1Smrg	1	CARD8		code
203337eb1ca1Smrg	1	BUTTON		detail
203437eb1ca1Smrg	2	CARD16		sequence number
203537eb1ca1Smrg	4	TIMESTAMP		time
203637eb1ca1Smrg	4	WINDOW		root
203737eb1ca1Smrg	4	WINDOW		event
203837eb1ca1Smrg	4	WINDOW		child
203937eb1ca1Smrg		0	None
204037eb1ca1Smrg	2	INT16		root-x
204137eb1ca1Smrg	2	INT16		root-y
204237eb1ca1Smrg	2	INT16		event-x
204337eb1ca1Smrg	2	INT16		event-y
204437eb1ca1Smrg	2	SETofKEYBUTMASK		state
204537eb1ca1Smrg	1	BOOL		same-screen
204637eb1ca1Smrg	1	CARD8		device id
204737eb1ca1Smrg		#x80		MORE_EVENTS follow
204837eb1ca1Smrg</literallayout>
204937eb1ca1Smrg</para>
205037eb1ca1Smrg<para>
205137eb1ca1Smrg<!-- .LP -->
205237eb1ca1Smrg<literallayout class="monospaced">
205337eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
205437eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
205537eb1ca1SmrgDeviceButtonRelease
205637eb1ca1Smrg	1	CARD8		code
205737eb1ca1Smrg	1	BUTTON		detail
205837eb1ca1Smrg	2	CARD16		sequence number
205937eb1ca1Smrg	4	TIMESTAMP		time
206037eb1ca1Smrg	4	WINDOW		root
206137eb1ca1Smrg	4	WINDOW		event
206237eb1ca1Smrg	4	WINDOW		child
206337eb1ca1Smrg		0	None
206437eb1ca1Smrg	2	INT16		root-x
206537eb1ca1Smrg	2	INT16		root-y
206637eb1ca1Smrg	2	INT16		event-x
206737eb1ca1Smrg	2	INT16		event-y
206837eb1ca1Smrg	2	SETofKEYBUTMASK		state
206937eb1ca1Smrg	1	BOOL		same-screen
207037eb1ca1Smrg	1	CARD8		device id
207137eb1ca1Smrg		#x80		MORE_EVENTS follow
207237eb1ca1Smrg</literallayout>
207337eb1ca1Smrg</para>
207437eb1ca1Smrg<para>
207537eb1ca1Smrg<!-- .LP -->
207637eb1ca1Smrg<literallayout class="monospaced">
207737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
207837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
207937eb1ca1SmrgDeviceMotionNotify
208037eb1ca1Smrg	1	CARD8		code
208137eb1ca1Smrg	1			detail
208237eb1ca1Smrg		0	Normal
208337eb1ca1Smrg		1	Hint
208437eb1ca1Smrg	2	CARD16		sequence number
208537eb1ca1Smrg	4	TIMESTAMP		time
208637eb1ca1Smrg	4	WINDOW		root
208737eb1ca1Smrg	4	WINDOW		event
208837eb1ca1Smrg	4	WINDOW		child
208937eb1ca1Smrg	 	0	None
209037eb1ca1Smrg	2	INT16		root-x
209137eb1ca1Smrg	2	INT16		root-y
209237eb1ca1Smrg	2	INT16		event-x
209337eb1ca1Smrg	2	INT16		event-y
209437eb1ca1Smrg	2	SETofKEYBUTMASK		state
209537eb1ca1Smrg	1	BOOL		same-screen
209637eb1ca1Smrg	1	CARD8		device id
209737eb1ca1Smrg		#x80		MORE_EVENTS follow
209837eb1ca1Smrg</literallayout>
209937eb1ca1Smrg<literallayout class="monospaced">
210037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
210137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
210237eb1ca1SmrgDeviceFocusIn
210337eb1ca1Smrg	1	CARD8		code
210437eb1ca1Smrg	1			detail
210537eb1ca1Smrg		0	Ancestor
210637eb1ca1Smrg		1	Virtual
210737eb1ca1Smrg		2	Inferior
210837eb1ca1Smrg		3	Nonlinear
210937eb1ca1Smrg		4	NonlinearVirtual
211037eb1ca1Smrg		5	Pointer
211137eb1ca1Smrg		6	PointerRoot
211237eb1ca1Smrg		7	None
211337eb1ca1Smrg	2	CARD16		sequence number
211437eb1ca1Smrg	4	TIMESTAMP		time
211537eb1ca1Smrg	4	WINDOW		event
211637eb1ca1Smrg	1			mode
211737eb1ca1Smrg		0	Normal
211837eb1ca1Smrg		1	Grab
211937eb1ca1Smrg		2	Ungrab
212037eb1ca1Smrg		3	WhileGrabbed
212137eb1ca1Smrg	1	CARD8		device id
212237eb1ca1Smrg	18			unused
212337eb1ca1Smrg</literallayout>
212437eb1ca1Smrg</para>
212537eb1ca1Smrg<para>
212637eb1ca1Smrg<!-- .LP -->
212737eb1ca1Smrg<literallayout class="monospaced">
212837eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
212937eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
213037eb1ca1SmrgDeviceFocusOut
213137eb1ca1Smrg	1	CARD8		code
213237eb1ca1Smrg	1			detail
213337eb1ca1Smrg		0	Ancestor
213437eb1ca1Smrg		1	Virtual
213537eb1ca1Smrg		2	Inferior
213637eb1ca1Smrg		3	Nonlinear
213737eb1ca1Smrg		4	NonlinearVirtual
213837eb1ca1Smrg		5	Pointer
213937eb1ca1Smrg		6	PointerRoot
214037eb1ca1Smrg		7	None
214137eb1ca1Smrg	2	CARD16		sequence number
214237eb1ca1Smrg	4	TIMESTAMP		time
214337eb1ca1Smrg	4	WINDOW		event
214437eb1ca1Smrg	1			mode
214537eb1ca1Smrg		0	Normal
214637eb1ca1Smrg		1	Grab
214737eb1ca1Smrg		2	Ungrab
214837eb1ca1Smrg		3	WhileGrabbed
214937eb1ca1Smrg	1	CARD8		device id
215037eb1ca1Smrg	18			unused
215137eb1ca1Smrg</literallayout>
215237eb1ca1Smrg</para>
215337eb1ca1Smrg<para>
215437eb1ca1Smrg<!-- .LP -->
215537eb1ca1Smrg<literallayout class="monospaced">
215637eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
215737eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
215837eb1ca1SmrgProximityIn
215937eb1ca1Smrg	1	CARD8		code
216037eb1ca1Smrg	1			unused
216137eb1ca1Smrg	2	CARD16		sequence number
216237eb1ca1Smrg	4	TIMESTAMP		time
216337eb1ca1Smrg	4	WINDOW		root
216437eb1ca1Smrg	4	WINDOW		event
216537eb1ca1Smrg	4	WINDOW		child
216637eb1ca1Smrg		0	None
216737eb1ca1Smrg	2	INT16		root-x
216837eb1ca1Smrg	2	INT16		root-y
216937eb1ca1Smrg	2	INT16		event-x
217037eb1ca1Smrg	2	INT16		event-y
217137eb1ca1Smrg	2	SETofKEYBUTMASK			state
217237eb1ca1Smrg	1	BOOL		same-screen
217337eb1ca1Smrg	1	CARD8		device id
217437eb1ca1Smrg		#x80		MORE_EVENTS follow
217537eb1ca1Smrg</literallayout>
217637eb1ca1Smrg</para>
217737eb1ca1Smrg<para>
217837eb1ca1Smrg<!-- .LP -->
217937eb1ca1Smrg<literallayout class="monospaced">
218037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
218137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
218237eb1ca1SmrgProximityOut
218337eb1ca1Smrg	1	CARD8		code
218437eb1ca1Smrg	1			unused
218537eb1ca1Smrg	2	CARD16		sequence number
218637eb1ca1Smrg	4	TIMESTAMP		time
218737eb1ca1Smrg	4	WINDOW		root
218837eb1ca1Smrg	4	WINDOW		event
218937eb1ca1Smrg	4	WINDOW		child
219037eb1ca1Smrg		0	None
219137eb1ca1Smrg	2	INT16		root-x
219237eb1ca1Smrg	2	INT16		root-y
219337eb1ca1Smrg	2	INT16		event-x
219437eb1ca1Smrg	2	INT16		event-y
219537eb1ca1Smrg	2	SETofKEYBUTMASK			state
219637eb1ca1Smrg	1	BOOL		same-screen
219737eb1ca1Smrg	1	CARD8		device id
219837eb1ca1Smrg		#x80		MORE_EVENTS follow
219937eb1ca1Smrg</literallayout>
220037eb1ca1Smrg</para>
220137eb1ca1Smrg<para>
220237eb1ca1Smrg<!-- .LP -->
220337eb1ca1SmrgDeviceStateNotify events may be immediately followed by zero or one
220437eb1ca1SmrgDeviceKeyStateNotify and/ or zero or more DeviceValuator events.
220537eb1ca1Smrg</para>
220637eb1ca1Smrg<para>
220737eb1ca1Smrg<!-- .LP -->
220837eb1ca1Smrg<literallayout class="monospaced">
220937eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
221037eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
221137eb1ca1SmrgDeviceStateNotify
221237eb1ca1Smrg	1	CARD8		code
221337eb1ca1Smrg	1	CARD8		device id
221437eb1ca1Smrg		#x80		MORE_EVENTS follow
221537eb1ca1Smrg	2	CARD16		sequence number
221637eb1ca1Smrg	4	TIMESTAMP		time
221737eb1ca1Smrg	1	CARD8		num_keys
221837eb1ca1Smrg	1	CARD8		num_buttons
221937eb1ca1Smrg	1	CARD8		num_valuators
222037eb1ca1Smrg 	1	CARD8		valuator mode and input classes reported
222137eb1ca1Smrg 		#x01	reporting keys
222237eb1ca1Smrg 		#x02	reporting buttons
222337eb1ca1Smrg 		#x04	reporting valuators
222437eb1ca1Smrg 		#x40	device mode (0 = Relative, 1 = Absolute)
222537eb1ca1Smrg 		#x80	proximity state (0 = InProximity, 1 = OutOfProximity)
222637eb1ca1Smrg	4	LISTofCARD8		first 32 keys (if reported)
222737eb1ca1Smrg	4	LISTofCARD8		first 32 buttons (if reported)
222837eb1ca1Smrg	12	LISTofCARD32		first 3 valuators (if reported)
222937eb1ca1Smrg</literallayout>
223037eb1ca1Smrg</para>
223137eb1ca1Smrg<para>
223237eb1ca1Smrg<!-- .LP -->
223337eb1ca1Smrg<literallayout class="monospaced">
223437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
223537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
223637eb1ca1SmrgDeviceKeyStateNotify
223737eb1ca1Smrg	1	CARD8		code
223837eb1ca1Smrg	1	CARD8		device id
223937eb1ca1Smrg		#x80		MORE_EVENTS follow
224037eb1ca1Smrg	2	CARD16		sequence number
224137eb1ca1Smrg	28	LISTofCARD8		state of keys 33-255
224237eb1ca1Smrg</literallayout>
224337eb1ca1Smrg</para>
224437eb1ca1Smrg<para>
224537eb1ca1Smrg<!-- .LP -->
224637eb1ca1Smrg<literallayout class="monospaced">
224737eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
224837eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
224937eb1ca1SmrgDeviceButtonStateNotify
225037eb1ca1Smrg	1	CARD8		code
225137eb1ca1Smrg	1	CARD8		device id
225237eb1ca1Smrg		#x80		MORE_EVENTS follow
225337eb1ca1Smrg	2	CARD16		sequence number
225437eb1ca1Smrg	28	LISTofCARD8		state of buttons 33-255
225537eb1ca1Smrg</literallayout>
225637eb1ca1Smrg</para>
225737eb1ca1Smrg<para>
225837eb1ca1Smrg<!-- .LP -->
225937eb1ca1Smrg<literallayout class="monospaced">
226037eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
226137eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
226237eb1ca1SmrgDeviceValuator
226337eb1ca1Smrg	1	CARD8		code
226437eb1ca1Smrg	1	CARD8		device id
226537eb1ca1Smrg	2	CARD16		sequence number
226637eb1ca1Smrg	2	SETofKEYBUTMASK		state
226737eb1ca1Smrg	1	n		number of valuators this device reports
226837eb1ca1Smrg	1	n		number of first valuator in this event
226937eb1ca1Smrg	24	LISTofINT32	valuators
227037eb1ca1Smrg</literallayout>
227137eb1ca1Smrg</para>
227237eb1ca1Smrg<para>
227337eb1ca1Smrg<!-- .LP -->
227437eb1ca1Smrg<literallayout class="monospaced">
227537eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
227637eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
227737eb1ca1SmrgDeviceMappingNotify
227837eb1ca1Smrg	1	CARD8		code
227937eb1ca1Smrg	1	CARD8		device id
228037eb1ca1Smrg	2	CARD16		sequence number
228137eb1ca1Smrg	1			request
228237eb1ca1Smrg		0	MappingModifier
228337eb1ca1Smrg		1	MappingKeyboard
228437eb1ca1Smrg		2	MappingPointer
228537eb1ca1Smrg	1	KEYCODE		first-keycode
228637eb1ca1Smrg	1	CARD8		count
228737eb1ca1Smrg	1			unused
228837eb1ca1Smrg	4	TIMESTAMP		time
228937eb1ca1Smrg	20			unused
229037eb1ca1Smrg</literallayout>
229137eb1ca1Smrg</para>
229237eb1ca1Smrg<!-- .LP -->
229337eb1ca1Smrg<literallayout class="monospaced">
229437eb1ca1Smrg<!-- .TA .2i .5i 1.5i 2.5i -->
229537eb1ca1Smrg<!-- .ta .2i .5i 1.5i 2.5i -->
229637eb1ca1SmrgChangeDeviceNotify
229737eb1ca1Smrg	1	CARD8		code
229837eb1ca1Smrg	1	CARD8		id of device specified on change request
229937eb1ca1Smrg	2	CARD16		sequence number
230037eb1ca1Smrg	4	TIMESTAMP		time
230137eb1ca1Smrg	1			request
230237eb1ca1Smrg		0	NewPointer
230337eb1ca1Smrg		1	NewKeyboard
230437eb1ca1Smrg	23			unused
230537eb1ca1Smrg</literallayout>
230637eb1ca1Smrg<!-- .\" print Table of Contents -->
230737eb1ca1Smrg<!-- .if o .bp \" blank page to make count even -->
230837eb1ca1Smrg<!-- .bp 1 -->
230937eb1ca1Smrg<!-- .af PN i -->
231037eb1ca1Smrg<!-- .PX -->
231137eb1ca1Smrg
231237eb1ca1Smrg</appendix>
2313