1/************************************************************
2Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
3
4Permission to use, copy, modify, and distribute this
5software and its documentation for any purpose and without
6fee is hereby granted, provided that the above copyright
7notice appear in all copies and that both that copyright
8notice and this permission notice appear in supporting
9documentation, and that the name of Silicon Graphics not be
10used in advertising or publicity pertaining to distribution
11of the software without specific prior written permission.
12Silicon Graphics makes no representation about the suitability
13of this software for any purpose. It is provided "as is"
14without any express or implied warranty.
15
16SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
22OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
23THE USE OR PERFORMANCE OF THIS SOFTWARE.
24
25********************************************************/
26
27#ifndef _XKBPROTO_H_
28#define	_XKBPROTO_H_
29
30#include <X11/Xmd.h>
31#include <X11/Xfuncproto.h>
32#include <X11/extensions/XKB.h>
33
34#define Window CARD32
35#define Atom CARD32
36#define Time CARD32
37#define KeyCode CARD8
38#define KeySym CARD32
39
40#define	XkbPaddedSize(n)	((((unsigned int)(n)+3) >> 2) << 2)
41
42typedef struct _xkbUseExtension {
43    CARD8	reqType;
44    CARD8	xkbReqType;	/* always X_KBUseExtension */
45    CARD16	length;
46    CARD16	wantedMajor;
47    CARD16	wantedMinor;
48} xkbUseExtensionReq;
49#define	sz_xkbUseExtensionReq	8
50
51typedef struct _xkbUseExtensionReply {
52    BYTE	type;		/* X_Reply */
53    BOOL	supported;
54    CARD16	sequenceNumber;
55    CARD32	length;
56    CARD16	serverMajor;
57    CARD16	serverMinor;
58    CARD32	pad1;
59    CARD32	pad2;
60    CARD32	pad3;
61    CARD32	pad4;
62    CARD32	pad5;
63} xkbUseExtensionReply;
64#define	sz_xkbUseExtensionReply	32
65
66typedef	struct _xkbSelectEvents {
67    CARD8	reqType;
68    CARD8	xkbReqType;	/* X_KBSelectEvents */
69    CARD16	length;
70    CARD16	deviceSpec;
71    CARD16	affectWhich;
72    CARD16	clear;
73    CARD16	selectAll;
74    CARD16	affectMap;
75    CARD16	map;
76} xkbSelectEventsReq;
77#define	sz_xkbSelectEventsReq	16
78
79typedef struct _xkbBell {
80    CARD8	reqType;
81    CARD8	xkbReqType;	/* X_KBBell */
82    CARD16	length;
83    CARD16	deviceSpec;
84    CARD16	bellClass;
85    CARD16	bellID;
86    INT8	percent;
87    BOOL	forceSound;
88    BOOL	eventOnly;
89    CARD8	pad1;
90    INT16	pitch;
91    INT16	duration;
92    CARD16	pad2;
93    Atom	name;
94    Window	window;
95} xkbBellReq;
96#define	sz_xkbBellReq		28
97
98typedef struct _xkbGetState {
99	CARD8		reqType;
100	CARD8		xkbReqType;	/* always X_KBGetState */
101	CARD16		length;
102	CARD16		deviceSpec;
103	CARD16		pad;
104} xkbGetStateReq;
105#define	sz_xkbGetStateReq	8
106
107typedef	struct _xkbGetStateReply {
108    BYTE	type;
109    BYTE	deviceID;
110    CARD16	sequenceNumber;
111    CARD32	length;
112    CARD8	mods;
113    CARD8	baseMods;
114    CARD8	latchedMods;
115    CARD8	lockedMods;
116    CARD8	group;
117    CARD8	lockedGroup;
118    INT16	baseGroup;
119    INT16	latchedGroup;
120    CARD8	compatState;
121    CARD8	grabMods;
122    CARD8	compatGrabMods;
123    CARD8	lookupMods;
124    CARD8	compatLookupMods;
125    CARD8	pad1;
126    CARD16	ptrBtnState;
127    CARD16	pad2;
128    CARD32	pad3;
129} xkbGetStateReply;
130#define	sz_xkbGetStateReply	32
131
132typedef struct _xkbLatchLockState {
133    CARD8	reqType;
134    CARD8	xkbReqType;	/* always X_KBLatchLockState */
135    CARD16	length;
136    CARD16	deviceSpec;
137    CARD8	affectModLocks;
138    CARD8	modLocks;
139    BOOL	lockGroup;
140    CARD8	groupLock;
141    CARD8	affectModLatches;
142    CARD8	modLatches;
143    CARD8	pad;
144    BOOL	latchGroup;
145    INT16	groupLatch;
146} xkbLatchLockStateReq;
147#define	sz_xkbLatchLockStateReq		16
148
149typedef struct _xkbGetControls {
150    CARD8	reqType;
151    CARD8	xkbReqType;	/* always X_KBGetControls */
152    CARD16	length;
153    CARD16	deviceSpec;
154    CARD16	pad;
155} xkbGetControlsReq;
156#define	sz_xkbGetControlsReq	8
157
158typedef struct _xkbGetControlsReply {
159    BYTE	type;		/* X_Reply */
160    CARD8	deviceID;
161    CARD16	sequenceNumber;
162    CARD32	length;
163    CARD8	mkDfltBtn;
164    CARD8	numGroups;
165    CARD8	groupsWrap;
166    CARD8	internalMods;
167    CARD8	ignoreLockMods;
168    CARD8	internalRealMods;
169    CARD8	ignoreLockRealMods;
170    CARD8	pad1;
171    CARD16	internalVMods;
172    CARD16	ignoreLockVMods;
173    CARD16	repeatDelay;
174    CARD16	repeatInterval;
175    CARD16	slowKeysDelay;
176    CARD16	debounceDelay;
177    CARD16	mkDelay;
178    CARD16	mkInterval;
179    CARD16	mkTimeToMax;
180    CARD16	mkMaxSpeed;
181    INT16	mkCurve;
182    CARD16	axOptions;
183    CARD16	axTimeout;
184    CARD16	axtOptsMask;
185    CARD16	axtOptsValues;
186    CARD16	pad2;
187    CARD32	axtCtrlsMask;
188    CARD32	axtCtrlsValues;
189    CARD32	enabledCtrls;
190    BYTE	perKeyRepeat[XkbPerKeyBitArraySize];
191} xkbGetControlsReply;
192#define	sz_xkbGetControlsReply	92
193
194typedef struct _xkbSetControls {
195    CARD8	reqType;
196    CARD8	xkbReqType;	/* always X_KBSetControls */
197    CARD16	length;
198    CARD16	deviceSpec;
199    CARD8	affectInternalMods;
200    CARD8	internalMods;
201    CARD8	affectIgnoreLockMods;
202    CARD8	ignoreLockMods;
203    CARD16	affectInternalVMods;
204    CARD16	internalVMods;
205    CARD16	affectIgnoreLockVMods;
206    CARD16	ignoreLockVMods;
207    CARD8	mkDfltBtn;
208    CARD8	groupsWrap;
209    CARD16	axOptions;
210    CARD16	pad1;
211    CARD32	affectEnabledCtrls;
212    CARD32	enabledCtrls;
213    CARD32	changeCtrls;
214    CARD16	repeatDelay;
215    CARD16	repeatInterval;
216    CARD16	slowKeysDelay;
217    CARD16	debounceDelay;
218    CARD16	mkDelay;
219    CARD16	mkInterval;
220    CARD16	mkTimeToMax;
221    CARD16	mkMaxSpeed;
222    INT16	mkCurve;
223    CARD16	axTimeout;
224    CARD32	axtCtrlsMask;
225    CARD32	axtCtrlsValues;
226    CARD16	axtOptsMask;
227    CARD16	axtOptsValues;
228    BYTE	perKeyRepeat[XkbPerKeyBitArraySize];
229} xkbSetControlsReq;
230#define	sz_xkbSetControlsReq	100
231
232typedef	struct _xkbKTMapEntryWireDesc {
233    BOOL	active;
234    CARD8	mask;
235    CARD8	level;
236    CARD8	realMods;
237    CARD16	virtualMods;
238    CARD16	pad;
239} xkbKTMapEntryWireDesc;
240#define sz_xkbKTMapEntryWireDesc	8
241
242typedef struct _xkbKTSetMapEntryWireDesc {
243    CARD8	level;
244    CARD8	realMods;
245    CARD16	virtualMods;
246} xkbKTSetMapEntryWireDesc;
247#define	sz_xkbKTSetMapEntryWireDesc	4
248
249typedef struct _xkbModsWireDesc {
250    CARD8	mask;		/* GetMap only */
251    CARD8	realMods;
252    CARD16	virtualMods;
253} xkbModsWireDesc;
254#define	sz_xkbModsWireDesc	4
255
256typedef struct _xkbKeyTypeWireDesc {
257    CARD8	mask;
258    CARD8	realMods;
259    CARD16	virtualMods;
260    CARD8	numLevels;
261    CARD8	nMapEntries;
262    BOOL	preserve;
263    CARD8	pad;
264} xkbKeyTypeWireDesc;
265#define	sz_xkbKeyTypeWireDesc	8
266
267typedef struct _xkbSymMapWireDesc {
268    CARD8	ktIndex[XkbNumKbdGroups];
269    CARD8	groupInfo;
270    CARD8	width;
271    CARD16	nSyms;
272} xkbSymMapWireDesc;
273#define	sz_xkbSymMapWireDesc	8
274
275typedef struct _xkbVModMapWireDesc {
276    KeyCode	key;
277    CARD8	pad;
278    CARD16	vmods;
279} xkbVModMapWireDesc;
280#define	sz_xkbVModMapWireDesc	4
281
282typedef struct _xkbBehaviorWireDesc {
283	CARD8	key;
284	CARD8	type;
285	CARD8	data;
286	CARD8	pad;
287} xkbBehaviorWireDesc;
288#define	sz_xkbBehaviorWireDesc	4
289
290typedef	struct _xkbActionWireDesc {
291    CARD8	type;
292    CARD8	data[7];
293} xkbActionWireDesc;
294#define	sz_xkbActionWireDesc	8
295
296typedef struct _xkbGetMap {
297    CARD8	reqType;
298    CARD8	xkbReqType;	/* always X_KBGetMap */
299    CARD16	length;
300    CARD16	deviceSpec;
301    CARD16	full;
302    CARD16	partial;
303    CARD8	firstType;
304    CARD8	nTypes;
305    KeyCode	firstKeySym;
306    CARD8	nKeySyms;
307    KeyCode	firstKeyAct;
308    CARD8	nKeyActs;
309    KeyCode	firstKeyBehavior;
310    CARD8	nKeyBehaviors;
311    CARD16	virtualMods;
312    KeyCode	firstKeyExplicit;
313    CARD8	nKeyExplicit;
314    KeyCode	firstModMapKey;
315    CARD8	nModMapKeys;
316    KeyCode	firstVModMapKey;
317    CARD8	nVModMapKeys;
318    CARD16	pad1;
319} xkbGetMapReq;
320#define	sz_xkbGetMapReq	28
321
322typedef struct _xkbGetMapReply {
323    CARD8	type;		/* always X_Reply */
324    CARD8	deviceID;
325    CARD16	sequenceNumber;
326    CARD32	length;
327    CARD16	pad1;
328    KeyCode	minKeyCode;
329    KeyCode	maxKeyCode;
330    CARD16	present;
331    CARD8	firstType;
332    CARD8	nTypes;
333    CARD8	totalTypes;
334    KeyCode	firstKeySym;
335    CARD16	totalSyms;
336    CARD8	nKeySyms;
337    KeyCode	firstKeyAct;
338    CARD16	totalActs;
339    CARD8	nKeyActs;
340    KeyCode	firstKeyBehavior;
341    CARD8	nKeyBehaviors;
342    CARD8	totalKeyBehaviors;
343    KeyCode	firstKeyExplicit;
344    CARD8	nKeyExplicit;
345    CARD8	totalKeyExplicit;
346    KeyCode	firstModMapKey;
347    CARD8	nModMapKeys;
348    CARD8	totalModMapKeys;
349    KeyCode	firstVModMapKey;
350    CARD8	nVModMapKeys;
351    CARD8	totalVModMapKeys;
352    CARD8	pad2;
353    CARD16	virtualMods;
354} xkbGetMapReply;
355#define	sz_xkbGetMapReply		40
356
357#define	XkbSetMapResizeTypes		(1L<<0)
358#define	XkbSetMapRecomputeActions	(1L<<1)
359#define	XkbSetMapAllFlags		(0x3)
360
361typedef struct _xkbSetMap {
362    CARD8	reqType;
363    CARD8	xkbReqType;	/* always X_KBSetMap */
364    CARD16	length;
365    CARD16	deviceSpec;
366    CARD16	present;
367    CARD16	flags;
368    KeyCode	minKeyCode;
369    KeyCode	maxKeyCode;
370    CARD8	firstType;
371    CARD8	nTypes;
372    KeyCode	firstKeySym;
373    CARD8	nKeySyms;
374    CARD16	totalSyms;
375    KeyCode	firstKeyAct;
376    CARD8	nKeyActs;
377    CARD16	totalActs;
378    KeyCode	firstKeyBehavior;
379    CARD8	nKeyBehaviors;
380    CARD8	totalKeyBehaviors;
381    KeyCode	firstKeyExplicit;
382    CARD8	nKeyExplicit;
383    CARD8	totalKeyExplicit;
384    KeyCode	firstModMapKey;
385    CARD8	nModMapKeys;
386    CARD8	totalModMapKeys;
387    KeyCode	firstVModMapKey;
388    CARD8	nVModMapKeys;
389    CARD8	totalVModMapKeys;
390    CARD16	virtualMods;
391} xkbSetMapReq;
392#define	sz_xkbSetMapReq	36
393
394typedef struct _xkbSymInterpretWireDesc {
395    CARD32		sym;
396    CARD8		mods;
397    CARD8		match;
398    CARD8		virtualMod;
399    CARD8		flags;
400    xkbActionWireDesc	act;
401} xkbSymInterpretWireDesc;
402#define	sz_xkbSymInterpretWireDesc	16
403
404typedef struct _xkbGetCompatMap {
405    CARD8	reqType;
406    CARD8	xkbReqType;	/* always X_KBGetCompatMap */
407    CARD16	length;
408    CARD16	deviceSpec;
409    CARD8	groups;
410    BOOL	getAllSI;
411    CARD16	firstSI;
412    CARD16	nSI;
413} xkbGetCompatMapReq;
414#define	sz_xkbGetCompatMapReq	12
415
416typedef struct _xkbGetCompatMapReply {
417    CARD8	type;		/* always X_Reply */
418    CARD8	deviceID;
419    CARD16	sequenceNumber;
420    CARD32	length;
421    CARD8	groups;
422    CARD8	pad1;
423    CARD16	firstSI;
424    CARD16	nSI;
425    CARD16	nTotalSI;
426    CARD32	pad2;
427    CARD32	pad3;
428    CARD32	pad4;
429    CARD32	pad5;
430} xkbGetCompatMapReply;
431#define	sz_xkbGetCompatMapReply		32
432
433typedef struct _xkbSetCompatMap {
434    CARD8	reqType;
435    CARD8	xkbReqType;	/* always X_KBSetCompatMap */
436    CARD16	length;
437    CARD16	deviceSpec;
438    CARD8	pad1;
439    BOOL	recomputeActions;
440    BOOL	truncateSI;
441    CARD8	groups;
442    CARD16	firstSI;
443    CARD16	nSI;
444    CARD16	pad2;
445} xkbSetCompatMapReq;
446#define	sz_xkbSetCompatMapReq	16
447
448typedef struct _xkbGetIndicatorState {
449    CARD8	reqType;
450    CARD8	xkbReqType;	/* always X_KBGetIndicatorState */
451    CARD16	length;
452    CARD16	deviceSpec;
453    CARD16	pad1;
454} xkbGetIndicatorStateReq;
455#define	sz_xkbGetIndicatorStateReq	8
456
457typedef struct _xkbGetIndicatorStateReply {
458    CARD8	type;		/* always X_Reply */
459    CARD8	deviceID;
460    CARD16	sequenceNumber;
461    CARD32	length;
462    CARD32	state;
463    CARD32	pad1;
464    CARD32	pad2;
465    CARD32	pad3;
466    CARD32	pad4;
467    CARD32	pad5;
468} xkbGetIndicatorStateReply;
469#define	sz_xkbGetIndicatorStateReply	32
470
471typedef struct _xkbGetIndicatorMap {
472    CARD8	reqType;
473    CARD8	xkbReqType;	/* always X_KBGetIndicatorMap */
474    CARD16	length;
475    CARD16	deviceSpec;
476    CARD16	pad;
477    CARD32	which;
478} xkbGetIndicatorMapReq;
479#define	sz_xkbGetIndicatorMapReq	12
480
481typedef struct _xkbGetIndicatorMapReply {
482    CARD8	type;		/* always X_Reply */
483    CARD8	deviceID;
484    CARD16	sequenceNumber;
485    CARD32	length;
486    CARD32	which;
487    CARD32	realIndicators;
488    CARD8	nIndicators;
489    CARD8	pad1;
490    CARD16	pad2;
491    CARD32	pad3;
492    CARD32	pad4;
493    CARD32	pad5;
494} xkbGetIndicatorMapReply;
495#define	sz_xkbGetIndicatorMapReply	32
496
497typedef struct _xkbIndicatorMapWireDesc {
498    CARD8	flags;
499    CARD8	whichGroups;
500    CARD8	groups;
501    CARD8	whichMods;
502    CARD8	mods;
503    CARD8	realMods;
504    CARD16	virtualMods;
505    CARD32	ctrls;
506} xkbIndicatorMapWireDesc;
507#define	sz_xkbIndicatorMapWireDesc	12
508
509typedef struct _xkbSetIndicatorMap {
510    CARD8	reqType;
511    CARD8	xkbReqType;	/* always X_KBSetIndicatorMap */
512    CARD16	length;
513    CARD16	deviceSpec;
514    CARD16	pad1;
515    CARD32	which;
516} xkbSetIndicatorMapReq;
517#define	sz_xkbSetIndicatorMapReq	12
518
519typedef struct _xkbGetNamedIndicator {
520    CARD8	reqType;
521    CARD8	xkbReqType;	/* X_KBGetNamedIndicator */
522    CARD16	length;
523    CARD16	deviceSpec;
524    CARD16	ledClass;
525    CARD16	ledID;
526    CARD16	pad1;
527    Atom	indicator;
528} xkbGetNamedIndicatorReq;
529#define	sz_xkbGetNamedIndicatorReq		16
530
531typedef	struct _xkbGetNamedIndicatorReply {
532    BYTE	type;
533    BYTE	deviceID;
534    CARD16	sequenceNumber;
535    CARD32	length;
536    Atom	indicator;
537    BOOL	found;
538    BOOL	on;
539    BOOL	realIndicator;
540    CARD8	ndx;
541    CARD8	flags;
542    CARD8	whichGroups;
543    CARD8	groups;
544    CARD8	whichMods;
545    CARD8	mods;
546    CARD8	realMods;
547    CARD16	virtualMods;
548    CARD32	ctrls;
549    BOOL	supported;
550    CARD8	pad1;
551    CARD16	pad2;
552} xkbGetNamedIndicatorReply;
553#define	sz_xkbGetNamedIndicatorReply	32
554
555typedef struct _xkbSetNamedIndicator {
556    CARD8	reqType;
557    CARD8	xkbReqType;	/* X_KBSetNamedIndicator */
558    CARD16	length;
559    CARD16	deviceSpec;
560    CARD16	ledClass;
561    CARD16	ledID;
562    CARD16	pad1;
563    Atom	indicator;
564    BOOL	setState;
565    BOOL	on;
566    BOOL	setMap;
567    BOOL	createMap;
568    CARD8	pad2;
569    CARD8	flags;
570    CARD8	whichGroups;
571    CARD8	groups;
572    CARD8	whichMods;
573    CARD8	realMods;
574    CARD16	virtualMods;
575    CARD32	ctrls;
576} xkbSetNamedIndicatorReq;
577#define	sz_xkbSetNamedIndicatorReq	32
578
579typedef struct _xkbGetNames {
580    CARD8	reqType;
581    CARD8	xkbReqType;	/* always X_KBGetNames */
582    CARD16	length;
583    CARD16	deviceSpec;
584    CARD16	pad;
585    CARD32	which;
586} xkbGetNamesReq;
587#define	sz_xkbGetNamesReq		12
588
589typedef	struct _xkbGetNamesReply {
590    BYTE	type;
591    BYTE	deviceID;
592    CARD16	sequenceNumber;
593    CARD32	length;
594    CARD32	which;
595    KeyCode	minKeyCode;
596    KeyCode	maxKeyCode;
597    CARD8	nTypes;
598    CARD8	groupNames;
599    CARD16	virtualMods;
600    KeyCode	firstKey;
601    CARD8	nKeys;
602    CARD32	indicators;
603    CARD8	nRadioGroups;
604    CARD8	nKeyAliases;
605    CARD16	nKTLevels;
606    CARD32	pad3;
607} xkbGetNamesReply;
608#define	sz_xkbGetNamesReply	32
609
610typedef struct _xkbSetNames {
611    CARD8	reqType;
612    CARD8	xkbReqType;	/* always X_KBSetNames */
613    CARD16	length;
614    CARD16	deviceSpec;
615    CARD16	virtualMods;
616    CARD32	which;
617    CARD8	firstType;
618    CARD8	nTypes;
619    CARD8	firstKTLevel;
620    CARD8	nKTLevels;
621    CARD32	indicators;
622    CARD8	groupNames;
623    CARD8	nRadioGroups;
624    KeyCode	firstKey;
625    CARD8	nKeys;
626    CARD8	nKeyAliases;
627    CARD8	pad1;
628    CARD16	totalKTLevelNames;
629} xkbSetNamesReq;
630#define	sz_xkbSetNamesReq	28
631
632typedef struct _xkbPointWireDesc {
633    INT16	x;
634    INT16	y;
635} xkbPointWireDesc;
636#define	sz_xkbPointWireDesc	4
637
638typedef struct _xkbOutlineWireDesc {
639    CARD8	nPoints;
640    CARD8	cornerRadius;
641    CARD16	pad;
642} xkbOutlineWireDesc;
643#define	sz_xkbOutlineWireDesc	4
644
645typedef struct _xkbShapeWireDesc {
646    Atom	name;
647    CARD8	nOutlines;
648    CARD8	primaryNdx;
649    CARD8	approxNdx;
650    CARD8	pad;
651} xkbShapeWireDesc;
652#define	sz_xkbShapeWireDesc	8
653
654typedef struct _xkbSectionWireDesc {
655    Atom	name;
656    INT16	top;
657    INT16	left;
658    CARD16	width;
659    CARD16	height;
660    INT16	angle;
661    CARD8	priority;
662    CARD8	nRows;
663    CARD8	nDoodads;
664    CARD8	nOverlays;
665    CARD16	pad;
666} xkbSectionWireDesc;
667#define	sz_xkbSectionWireDesc	20
668
669typedef struct _xkbRowWireDesc {
670    INT16	top;
671    INT16	left;
672    CARD8	nKeys;
673    BOOL	vertical;
674    CARD16	pad;
675} xkbRowWireDesc;
676#define	sz_xkbRowWireDesc	8
677
678typedef struct _xkbKeyWireDesc {
679    CARD8	name[XkbKeyNameLength]	_X_NONSTRING;
680    INT16	gap;
681    CARD8	shapeNdx;
682    CARD8	colorNdx;
683} xkbKeyWireDesc;
684#define	sz_xkbKeyWireDesc	8
685
686typedef struct _xkbOverlayWireDesc {
687    Atom	name;
688    CARD8	nRows;
689    CARD8	pad1;
690    CARD16	pad2;
691} xkbOverlayWireDesc;
692#define	sz_xkbOverlayWireDesc	8
693
694typedef struct _xkbOverlayRowWireDesc {
695   CARD8	rowUnder;
696   CARD8	nKeys;
697   CARD16	pad1;
698} xkbOverlayRowWireDesc;
699#define	sz_xkbOverlayRowWireDesc	4
700
701typedef struct _xkbOverlayKeyWireDesc {
702   CARD8	over[XkbKeyNameLength]	_X_NONSTRING;
703   CARD8	under[XkbKeyNameLength]	_X_NONSTRING;
704} xkbOverlayKeyWireDesc;
705#define	sz_xkbOverlayKeyWireDesc	8
706
707typedef struct _xkbShapeDoodadWireDesc {
708    Atom	name;
709    CARD8	type;
710    CARD8	priority;
711    INT16	top;
712    INT16	left;
713    INT16	angle;
714    CARD8	colorNdx;
715    CARD8	shapeNdx;
716    CARD16	pad1;
717    CARD32	pad2;
718} xkbShapeDoodadWireDesc;
719#define	sz_xkbShapeDoodadWireDesc	20
720
721typedef struct _xkbTextDoodadWireDesc {
722    Atom	name;
723    CARD8	type;
724    CARD8	priority;
725    INT16	top;
726    INT16	left;
727    INT16	angle;
728    CARD16	width;
729    CARD16	height;
730    CARD8	colorNdx;
731    CARD8	pad1;
732    CARD16	pad2;
733} xkbTextDoodadWireDesc;
734#define	sz_xkbTextDoodadWireDesc	20
735
736typedef struct _xkbIndicatorDoodadWireDesc {
737    Atom	name;
738    CARD8	type;
739    CARD8	priority;
740    INT16	top;
741    INT16	left;
742    INT16	angle;
743    CARD8	shapeNdx;
744    CARD8	onColorNdx;
745    CARD8	offColorNdx;
746    CARD8	pad1;
747    CARD32	pad2;
748} xkbIndicatorDoodadWireDesc;
749#define	sz_xkbIndicatorDoodadWireDesc	20
750
751typedef struct _xkbLogoDoodadWireDesc {
752    Atom	name;
753    CARD8	type;
754    CARD8	priority;
755    INT16	top;
756    INT16	left;
757    INT16	angle;
758    CARD8	colorNdx;
759    CARD8	shapeNdx;
760    CARD16	pad1;
761    CARD32	pad2;
762} xkbLogoDoodadWireDesc;
763#define	sz_xkbLogoDoodadWireDesc	20
764
765typedef struct _xkbAnyDoodadWireDesc {
766    Atom	name;
767    CARD8	type;
768    CARD8	priority;
769    INT16	top;
770    INT16	left;
771    INT16	angle;
772    CARD32	pad2;
773    CARD32	pad3;
774} xkbAnyDoodadWireDesc;
775#define	sz_xkbAnyDoodadWireDesc	20
776
777typedef union _xkbDoodadWireDesc {
778    xkbAnyDoodadWireDesc	any;
779    xkbShapeDoodadWireDesc	shape;
780    xkbTextDoodadWireDesc	text;
781    xkbIndicatorDoodadWireDesc	indicator;
782    xkbLogoDoodadWireDesc	logo;
783} xkbDoodadWireDesc;
784#define	sz_xkbDoodadWireDesc	20
785
786typedef struct _xkbGetGeometry {
787    CARD8	reqType;
788    CARD8	xkbReqType;	/* always X_KBGetGeometry */
789    CARD16	length;
790    CARD16	deviceSpec;
791    CARD16	pad;
792    Atom	name;
793} xkbGetGeometryReq;
794#define	sz_xkbGetGeometryReq	12
795
796typedef struct _xkbGetGeometryReply {
797    CARD8	type;		/* always X_Reply */
798    CARD8	deviceID;
799    CARD16	sequenceNumber;
800    CARD32	length;
801    Atom	name;
802    BOOL	found;
803    CARD8	pad;
804    CARD16	widthMM;
805    CARD16	heightMM;
806    CARD16	nProperties;
807    CARD16	nColors;
808    CARD16	nShapes;
809    CARD16	nSections;
810    CARD16	nDoodads;
811    CARD16	nKeyAliases;
812    CARD8	baseColorNdx;
813    CARD8	labelColorNdx;
814} xkbGetGeometryReply;
815#define	sz_xkbGetGeometryReply	32
816
817typedef struct _xkbSetGeometry {
818    CARD8	reqType;
819    CARD8	xkbReqType;	/* always X_KBSetGeometry */
820    CARD16	length;
821    CARD16	deviceSpec;
822    CARD8	nShapes;
823    CARD8	nSections;
824    Atom	name;
825    CARD16	widthMM;
826    CARD16	heightMM;
827    CARD16	nProperties;
828    CARD16	nColors;
829    CARD16	nDoodads;
830    CARD16	nKeyAliases;
831    CARD8	baseColorNdx;
832    CARD8	labelColorNdx;
833    CARD16	pad;
834} xkbSetGeometryReq;
835#define	sz_xkbSetGeometryReq	28
836
837typedef struct _xkbPerClientFlags {
838    CARD8	reqType;
839    CARD8	xkbReqType;/* always X_KBPerClientFlags */
840    CARD16	length;
841    CARD16	deviceSpec;
842    CARD16	pad1;
843    CARD32	change;
844    CARD32	value;
845    CARD32	ctrlsToChange;
846    CARD32	autoCtrls;
847    CARD32	autoCtrlValues;
848} xkbPerClientFlagsReq;
849#define	sz_xkbPerClientFlagsReq	28
850
851typedef struct _xkbPerClientFlagsReply {
852    CARD8	type;		/* always X_Reply */
853    CARD8	deviceID;
854    CARD16	sequenceNumber;
855    CARD32	length;
856    CARD32	supported;
857    CARD32	value;
858    CARD32	autoCtrls;
859    CARD32	autoCtrlValues;
860    CARD32	pad1;
861    CARD32	pad2;
862} xkbPerClientFlagsReply;
863#define	sz_xkbPerClientFlagsReply	32
864
865typedef struct _xkbListComponents {
866    CARD8	reqType;
867    CARD8	xkbReqType;	/* always X_KBListComponents */
868    CARD16	length;
869    CARD16	deviceSpec;
870    CARD16	maxNames;
871} xkbListComponentsReq;
872#define	sz_xkbListComponentsReq	8
873
874typedef struct _xkbListComponentsReply {
875    CARD8	type;		/* always X_Reply */
876    CARD8	deviceID;
877    CARD16	sequenceNumber;
878    CARD32	length;
879    CARD16	nKeymaps;
880    CARD16	nKeycodes;
881    CARD16	nTypes;
882    CARD16	nCompatMaps;
883    CARD16	nSymbols;
884    CARD16	nGeometries;
885    CARD16	extra;
886    CARD16	pad1;
887    CARD32	pad2;
888    CARD32	pad3;
889} xkbListComponentsReply;
890#define	sz_xkbListComponentsReply	32
891
892typedef struct _xkbGetKbdByName {
893    CARD8	reqType;
894    CARD8	xkbReqType;	/* always X_KBGetKbdByName */
895    CARD16	length;
896    CARD16	deviceSpec;
897    CARD16	need;		/* combination of XkbGBN_* */
898    CARD16	want;		/* combination of XkbGBN_* */
899    BOOL	load;
900    CARD8	pad;
901} xkbGetKbdByNameReq;
902#define	sz_xkbGetKbdByNameReq	12
903
904typedef struct _xkbGetKbdByNameReply {
905    CARD8	type;		/* always X_Reply */
906    CARD8	deviceID;
907    CARD16	sequenceNumber;
908    CARD32	length;
909    KeyCode	minKeyCode;
910    KeyCode	maxKeyCode;
911    BOOL	loaded;
912    BOOL	newKeyboard;
913    CARD16	found;		/* combination of XkbGBN_* */
914    CARD16	reported;	/* combination of XkbAllComponents */
915    CARD32	pad1;
916    CARD32	pad2;
917    CARD32	pad3;
918    CARD32	pad4;
919} xkbGetKbdByNameReply;
920#define	sz_xkbGetKbdByNameReply	32
921
922typedef	struct _xkbDeviceLedsWireDesc {
923    CARD16	ledClass;
924    CARD16	ledID;
925    CARD32	namesPresent;
926    CARD32	mapsPresent;
927    CARD32	physIndicators;
928    CARD32	state;
929} xkbDeviceLedsWireDesc;
930#define sz_xkbDeviceLedsWireDesc	20
931
932typedef struct _xkbGetDeviceInfo {
933    CARD8	reqType;
934    CARD8	xkbReqType;	/* always X_KBGetDeviceInfo */
935    CARD16	length;
936    CARD16	deviceSpec;
937    CARD16	wanted;
938    BOOL	allBtns;
939    CARD8	firstBtn;
940    CARD8	nBtns;
941    CARD8	pad;
942    CARD16	ledClass;
943    CARD16	ledID;
944} xkbGetDeviceInfoReq;
945#define	sz_xkbGetDeviceInfoReq	16
946
947typedef struct _xkbGetDeviceInfoReply {
948    CARD8	type;		/* always X_Reply */
949    CARD8	deviceID;
950    CARD16	sequenceNumber;
951    CARD32	length;
952    CARD16	present;
953    CARD16	supported;
954    CARD16	unsupported;
955    CARD16	nDeviceLedFBs;
956    CARD8	firstBtnWanted;
957    CARD8	nBtnsWanted;
958    CARD8	firstBtnRtrn;
959    CARD8	nBtnsRtrn;
960    CARD8	totalBtns;
961    BOOL	hasOwnState;
962    CARD16	dfltKbdFB;
963    CARD16	dfltLedFB;
964    CARD16	pad;
965    Atom	devType;
966} xkbGetDeviceInfoReply;
967#define	sz_xkbGetDeviceInfoReply	32
968
969typedef struct _xkbSetDeviceInfo {
970    CARD8	reqType;
971    CARD8	xkbReqType;	/* always X_KBSetDeviceInfo */
972    CARD16	length;
973    CARD16	deviceSpec;
974    CARD8	firstBtn;
975    CARD8	nBtns;
976    CARD16	change;
977    CARD16	nDeviceLedFBs;
978} xkbSetDeviceInfoReq;
979#define	sz_xkbSetDeviceInfoReq	12
980
981typedef struct _xkbSetDebuggingFlags {
982    CARD8	reqType;
983    CARD8	xkbReqType;	/* always X_KBSetDebuggingFlags */
984    CARD16	length;
985    CARD16	msgLength;
986    CARD16	pad;
987    CARD32	affectFlags;
988    CARD32	flags;
989    CARD32	affectCtrls;
990    CARD32	ctrls;
991} xkbSetDebuggingFlagsReq;
992#define	sz_xkbSetDebuggingFlagsReq	24
993
994typedef struct _xkbSetDebuggingFlagsReply {
995    BYTE	type;		/* X_Reply */
996    CARD8	pad0;
997    CARD16	sequenceNumber;
998    CARD32	length;
999    CARD32	currentFlags;
1000    CARD32	currentCtrls;
1001    CARD32	supportedFlags;
1002    CARD32	supportedCtrls;
1003    CARD32	pad1;
1004    CARD32	pad2;
1005} xkbSetDebuggingFlagsReply;
1006#define	sz_xkbSetDebuggingFlagsReply	32
1007
1008	/*
1009	 * X KEYBOARD EXTENSION EVENT STRUCTURES
1010	 */
1011
1012typedef struct _xkbAnyEvent {
1013    BYTE	type;
1014    BYTE	xkbType;
1015    CARD16	sequenceNumber;
1016    Time	time;
1017    CARD8	deviceID;
1018    CARD8	pad1;
1019    CARD16	pad2;
1020    CARD32	pad3;
1021    CARD32	pad4;
1022    CARD32	pad5;
1023    CARD32	pad6;
1024    CARD32	pad7;
1025} xkbAnyEvent;
1026#define	sz_xkbAnyEvent 32
1027
1028typedef	struct _xkbNewKeyboardNotify {
1029    BYTE	type;
1030    BYTE	xkbType;
1031    CARD16	sequenceNumber;
1032    Time	time;
1033    CARD8	deviceID;
1034    CARD8	oldDeviceID;
1035    KeyCode	minKeyCode;
1036    KeyCode	maxKeyCode;
1037    KeyCode	oldMinKeyCode;
1038    KeyCode	oldMaxKeyCode;
1039    CARD8	requestMajor;
1040    CARD8	requestMinor;
1041    CARD16	changed;
1042    CARD8	detail;
1043    CARD8	pad1;
1044    CARD32	pad2;
1045    CARD32	pad3;
1046    CARD32	pad4;
1047} xkbNewKeyboardNotify;
1048#define	sz_xkbNewKeyboardNotify	32
1049
1050typedef	struct _xkbMapNotify {
1051    BYTE	type;
1052    BYTE	xkbType;
1053    CARD16	sequenceNumber;
1054    Time	time;
1055    CARD8	deviceID;
1056    CARD8	ptrBtnActions;
1057    CARD16	changed;
1058    KeyCode	minKeyCode;
1059    KeyCode	maxKeyCode;
1060    CARD8	firstType;
1061    CARD8	nTypes;
1062    KeyCode	firstKeySym;
1063    CARD8	nKeySyms;
1064    KeyCode	firstKeyAct;
1065    CARD8	nKeyActs;
1066    KeyCode	firstKeyBehavior;
1067    CARD8	nKeyBehaviors;
1068    KeyCode	firstKeyExplicit;
1069    CARD8	nKeyExplicit;
1070    KeyCode	firstModMapKey;
1071    CARD8	nModMapKeys;
1072    KeyCode	firstVModMapKey;
1073    CARD8	nVModMapKeys;
1074    CARD16	virtualMods;
1075    CARD16	pad1;
1076} xkbMapNotify;
1077#define	sz_xkbMapNotify	32
1078
1079typedef	struct _xkbStateNotify {
1080    BYTE	type;
1081    BYTE	xkbType;
1082    CARD16	sequenceNumber;
1083    Time	time;
1084    CARD8	deviceID;
1085    CARD8	mods;
1086    CARD8	baseMods;
1087    CARD8	latchedMods;
1088    CARD8	lockedMods;
1089    CARD8	group;
1090    INT16	baseGroup;
1091    INT16	latchedGroup;
1092    CARD8	lockedGroup;
1093    CARD8	compatState;
1094    CARD8	grabMods;
1095    CARD8	compatGrabMods;
1096    CARD8	lookupMods;
1097    CARD8	compatLookupMods;
1098    CARD16	ptrBtnState;
1099    CARD16	changed;
1100    KeyCode	keycode;
1101    CARD8	eventType;
1102    CARD8	requestMajor;
1103    CARD8	requestMinor;
1104} xkbStateNotify;
1105#define	sz_xkbStateNotify	32
1106
1107typedef struct _xkbControlsNotify {
1108    BYTE	type;
1109    BYTE	xkbType;
1110    CARD16	sequenceNumber;
1111    Time	time;
1112    CARD8	deviceID;
1113    CARD8	numGroups;
1114    CARD16	pad1;
1115    CARD32	changedControls;
1116    CARD32	enabledControls;
1117    CARD32	enabledControlChanges;
1118    KeyCode	keycode;
1119    CARD8	eventType;
1120    CARD8	requestMajor;
1121    CARD8	requestMinor;
1122    CARD32	pad2;
1123} xkbControlsNotify;
1124#define	sz_xkbControlsNotify	32
1125
1126typedef struct _xkbIndicatorNotify {
1127    BYTE	type;
1128    BYTE	xkbType;
1129    CARD16	sequenceNumber;
1130    Time	time;
1131    CARD8	deviceID;
1132    CARD8	pad1;
1133    CARD16	pad2;
1134    CARD32	state;
1135    CARD32	changed;
1136    CARD32	pad3;
1137    CARD32	pad4;
1138    CARD32	pad5;
1139} xkbIndicatorNotify;
1140#define	sz_xkbIndicatorNotify	32
1141
1142typedef struct _xkbNamesNotify {
1143    BYTE	type;
1144    BYTE	xkbType;
1145    CARD16	sequenceNumber;
1146    Time	time;
1147    CARD8	deviceID;
1148    CARD8	pad1;
1149    CARD16	changed;
1150    CARD8	firstType;
1151    CARD8	nTypes;
1152    CARD8	firstLevelName;
1153    CARD8	nLevelNames;
1154    CARD8	pad2;
1155    CARD8	nRadioGroups;
1156    CARD8	nAliases;
1157    CARD8	changedGroupNames;
1158    CARD16	changedVirtualMods;
1159    CARD8	firstKey;
1160    CARD8	nKeys;
1161    CARD32	changedIndicators;
1162    CARD32	pad3;
1163} xkbNamesNotify;
1164#define	sz_xkbNamesNotify	32
1165
1166typedef struct _xkbCompatMapNotify {
1167    BYTE	type;
1168    BYTE	xkbType;
1169    CARD16	sequenceNumber;
1170    Time	time;
1171    CARD8	deviceID;
1172    CARD8	changedGroups;
1173    CARD16	firstSI;
1174    CARD16	nSI;
1175    CARD16	nTotalSI;
1176    CARD32	pad1;
1177    CARD32	pad2;
1178    CARD32	pad3;
1179    CARD32	pad4;
1180} xkbCompatMapNotify;
1181#define sz_xkbCompatMapNotify	32
1182
1183typedef struct _xkbBellNotify {
1184    BYTE	type;
1185    BYTE	xkbType;
1186    CARD16	sequenceNumber;
1187    Time	time;
1188    CARD8	deviceID;
1189    CARD8	bellClass;
1190    CARD8	bellID;
1191    CARD8	percent;
1192    CARD16	pitch;
1193    CARD16	duration;
1194    Atom	name;
1195    Window	window;
1196    BOOL	eventOnly;
1197    CARD8	pad1;
1198    CARD16	pad2;
1199    CARD32	pad3;
1200} xkbBellNotify;
1201#define	sz_xkbBellNotify	32
1202
1203typedef struct _xkbActionMessage {
1204    BYTE	type;
1205    BYTE	xkbType;
1206    CARD16	sequenceNumber;
1207    Time	time;
1208    CARD8	deviceID;
1209    KeyCode	keycode;
1210    BOOL	press;
1211    BOOL	keyEventFollows;
1212    CARD8	mods;
1213    CARD8	group;
1214    CARD8	message[8];
1215    CARD16	pad1;
1216    CARD32	pad2;
1217    CARD32	pad3;
1218} xkbActionMessage;
1219#define	sz_xkbActionMessage		32
1220
1221typedef struct _xkbAccessXNotify {
1222    BYTE	type;
1223    BYTE	xkbType;
1224    CARD16	sequenceNumber;
1225    Time	time;
1226    CARD8	deviceID;
1227    KeyCode	keycode;
1228    CARD16	detail;
1229    CARD16	slowKeysDelay;
1230    CARD16	debounceDelay;
1231    CARD32	pad1;
1232    CARD32	pad2;
1233    CARD32	pad3;
1234    CARD32	pad4;
1235} xkbAccessXNotify;
1236#define	sz_xkbAccessXNotify	32
1237
1238typedef struct _xkbExtensionDeviceNotify {
1239    BYTE	type;
1240    BYTE	xkbType;
1241    CARD16	sequenceNumber;
1242    Time	time;
1243    CARD8	deviceID;
1244    CARD8	pad1;
1245    CARD16	reason;
1246    CARD16	ledClass;
1247    CARD16	ledID;
1248    CARD32	ledsDefined;
1249    CARD32	ledState;
1250    CARD8	firstBtn;
1251    CARD8	nBtns;
1252    CARD16	supported;
1253    CARD16	unsupported;
1254    CARD16	pad3;
1255} xkbExtensionDeviceNotify;
1256#define	sz_xkbExtensionDeviceNotify		32
1257
1258typedef struct _xkbEvent {
1259    union {
1260	xkbAnyEvent		any;
1261	xkbNewKeyboardNotify	new_kbd;
1262	xkbMapNotify		map;
1263	xkbStateNotify		state;
1264	xkbControlsNotify	ctrls;
1265	xkbIndicatorNotify	indicators;
1266	xkbNamesNotify		names;
1267	xkbCompatMapNotify	compat;
1268	xkbBellNotify		bell;
1269	xkbActionMessage	message;
1270	xkbAccessXNotify	accessx;
1271	xkbExtensionDeviceNotify device;
1272    } u;
1273} xkbEvent;
1274#define sz_xkbEvent	32
1275
1276#undef Window
1277#undef Atom
1278#undef Time
1279#undef KeyCode
1280#undef KeySym
1281
1282#endif /* _XKBPROTO_H_ */
1283