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