1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
|
/* $XConsortium: XKMformat.h /main/2 1995/12/07 21:18:30 kaleb $ */
/************************************************************
Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
Permission to use, copy, modify, and distribute this
software and its documentation for any purpose and without
fee is hereby granted, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
documentation, and that the name of Silicon Graphics not be
used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
#ifndef _XKMFORMAT_H_
#define _XKMFORMAT_H_ 1
#include <X11/extensions/XKB.h>
#include <X11/extensions/XKBproto.h>
#include "XKM.h"
typedef struct _xkmFileInfo {
CARD8 type;
CARD8 min_kc;
CARD8 max_kc;
CARD8 num_toc;
CARD16 present B16;
CARD16 pad B16;
} xkmFileInfo;
#define sz_xkmFileInfo 8
typedef struct _xkmSectionInfo {
CARD16 type B16;
CARD16 format B16;
CARD16 size B16;
CARD16 offset B16;
} xkmSectionInfo;
#define sz_xkmSectionInfo 8
typedef struct _xkmKeyTypeDesc {
CARD8 realMods;
CARD8 numLevels;
CARD16 virtualMods B16;
CARD8 nMapEntries;
CARD8 nLevelNames;
CARD8 preserve;
CARD8 pad;
} xkmKeyTypeDesc;
#define sz_xkmKeyTypeDesc 8
typedef struct _xkmKTMapEntryDesc {
CARD8 level;
CARD8 realMods;
CARD16 virtualMods B16;
} xkmKTMapEntryDesc;
#define sz_xkmKTMapEntryDesc 4
typedef struct _xkmModsDesc {
CARD8 realMods;
CARD8 pad;
CARD16 virtualMods B16;
} xkmModsDesc;
#define sz_xkmModsDesc 4
typedef struct _xkmVModMapDesc {
CARD8 key;
CARD8 pad;
CARD16 vmods B16;
} xkmVModMapDesc;
#define sz_xkmVModMapDesc 4
typedef struct _xkmSymInterpretDesc {
CARD32 sym B32;
CARD8 mods;
CARD8 match;
CARD8 virtualMod;
CARD8 flags;
CARD8 actionType;
CARD8 actionData[7];
} xkmSymInterpretDesc;
#define sz_xkmSymInterpretDesc 16
typedef struct _xkmBehaviorDesc {
CARD8 type;
CARD8 data;
CARD16 pad B16;
} xkmBehaviorDesc;
#define sz_xkmBehaviorDesc 4
typedef struct _xkmActionDesc {
CARD8 type;
CARD8 data[7];
} xkmActionDesc;
#define sz_xkmActionDesc 8
#define XkmKeyHasTypes (0x0f)
#define XkmKeyHasGroup1Type (1<<0)
#define XkmKeyHasGroup2Type (1<<1)
#define XkmKeyHasGroup3Type (1<<2)
#define XkmKeyHasGroup4Type (1<<3)
#define XkmKeyHasActions (1<<4)
#define XkmKeyHasBehavior (1<<5)
#define XkmRepeatingKey (1<<6)
#define XkmNonRepeatingKey (1<<7)
typedef struct _xkmKeySymMapDesc {
CARD8 width;
CARD8 num_groups;
CARD8 modifier_map;
CARD8 flags;
} xkmKeySymMapDesc;
#define sz_xkmKeySymMapDesc 4
typedef struct _xkmIndicatorMapDesc {
CARD8 indicator;
CARD8 flags;
CARD8 which_mods;
CARD8 real_mods;
CARD16 vmods B16;
CARD8 which_groups;
CARD8 groups;
CARD32 ctrls B32;
} xkmIndicatorMapDesc;
#define sz_xkmIndicatorMapDesc 12
typedef struct _xkmGeometryDesc {
CARD16 width_mm B16;
CARD16 height_mm B16;
CARD8 base_color_ndx;
CARD8 label_color_ndx;
CARD16 num_properties B16;
CARD16 num_colors B16;
CARD16 num_shapes B16;
CARD16 num_sections B16;
CARD16 num_doodads B16;
CARD16 num_key_aliases B16;
CARD16 pad1 B16;
} xkmGeometryDesc;
#define sz_xkmGeometryDesc 20
typedef struct _xkmPointDesc {
INT16 x B16;
INT16 y B16;
} xkmPointDesc;
#define sz_xkmPointDesc 4
typedef struct _xkmOutlineDesc {
CARD8 num_points;
CARD8 corner_radius;
CARD16 pad B16;
} xkmOutlineDesc;
#define sz_xkmOutlineDesc 4
typedef struct _xkmShapeDesc {
CARD8 num_outlines;
CARD8 primary_ndx;
CARD8 approx_ndx;
CARD8 pad;
} xkmShapeDesc;
#define sz_xkmShapeDesc 4
typedef struct _xkmSectionDesc {
INT16 top B16;
INT16 left B16;
CARD16 width B16;
CARD16 height B16;
INT16 angle B16;
CARD8 priority;
CARD8 num_rows;
CARD8 num_doodads;
CARD8 num_overlays;
CARD16 pad2 B16;
} xkmSectionDesc;
#define sz_xkmSectionDesc 16
typedef struct _xkmRowDesc {
INT16 top B16;
INT16 left B16;
CARD8 num_keys;
BOOL vertical;
CARD16 pad B16;
} xkmRowDesc;
#define sz_xkmRowDesc 8
typedef struct _xkmKeyDesc {
CARD8 name[XkbKeyNameLength];
INT16 gap B16;
CARD8 shape_ndx;
CARD8 color_ndx;
} xkmKeyDesc;
#define sz_xkmKeyDesc 8
typedef struct _xkmOverlayDesc {
CARD8 num_rows;
CARD8 pad1;
CARD16 pad2 B16;
} xkmOverlayDesc;
#define sz_xkmOverlayDesc 4
typedef struct _xkmOverlayRowDesc {
CARD8 row_under;
CARD8 num_keys;
CARD16 pad B16;
} xkmOverlayRowDesc;
#define sz_xkmOverlayRowDesc 4
typedef struct _xkmOverlayKeyDesc {
char over[XkbKeyNameLength];
char under[XkbKeyNameLength];
} xkmOverlayKeyDesc;
#define sz_xkmOverlayKeyDesc 8
typedef struct _xkmShapeDoodadDesc {
CARD8 type;
CARD8 priority;
INT16 top B16;
INT16 left B16;
INT16 angle B16;
CARD8 color_ndx;
CARD8 shape_ndx;
CARD16 pad B16;
CARD32 pad1 B32;
} xkmShapeDoodadDesc;
#define sz_xkmShapeDoodadDesc 16
typedef struct _xkmTextDoodadDesc {
CARD8 type;
CARD8 priority;
INT16 top B16;
INT16 left B16;
INT16 angle B16;
CARD16 width B16;
CARD16 height B16;
CARD8 color_ndx;
CARD8 pad1;
CARD16 pad2 B16;
} xkmTextDoodadDesc;
#define sz_xkmTextDoodadDesc 16
typedef struct _xkmIndicatorDoodadDesc {
CARD8 type;
CARD8 priority;
INT16 top B16;
INT16 left B16;
CARD8 shape_ndx;
CARD8 on_color_ndx;
CARD8 off_color_ndx;
CARD8 pad1;
CARD16 pad2 B16;
CARD32 pad3 B32;
} xkmIndicatorDoodadDesc;
#define sz_xkmIndicatorDoodadDesc 16
typedef struct _xkmLogoDoodadDesc {
CARD8 type;
CARD8 priority;
INT16 top B16;
INT16 left B16;
INT16 angle B16;
CARD8 color_ndx;
CARD8 shape_ndx;
CARD16 pad B16;
CARD32 pad1 B32;
} xkmLogoDoodadDesc;
#define sz_xkmLogoDoodadDesc 16
typedef struct _xkmAnyDoodadDesc {
CARD8 type;
CARD8 priority;
INT16 top B16;
INT16 left B16;
CARD16 pad1 B16;
CARD32 pad2 B32;
CARD32 pad3 B32;
} xkmAnyDoodadDesc;
#define sz_xkmAnyDoodadDesc 16
typedef union _xkmDoodadDesc {
xkmAnyDoodadDesc any;
xkmShapeDoodadDesc shape;
xkmTextDoodadDesc text;
xkmIndicatorDoodadDesc indicator;
xkmLogoDoodadDesc logo;
} xkmDoodadDesc;
#define sz_xkmDoodadDesc 16
#endif /* _XKMFORMAT_H_ */
|