1using X;
2
3[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "X11/XKBlib.h")]
4namespace Xkb {
5
6    [CCode (cname = "XkbGetKeyboard")]
7    public Desc get_keyboard (X.Display dpy, uint which, uint device_spec);
8
9    [CCode (cname = "XkbGetControls")]
10    public X.Status get_controls (X.Display dpy, uint which, Desc xkb);
11
12    [CCode (cname = "XkbSetControls")]
13    public void set_controls (X.Display dpy, uint which, Desc xkb);
14
15    [CCode (cname = "XkbGetMap")]
16    public Desc get_map (X.Display dpy, uint which, uint device_spec);
17
18    [CCode (cname = "XkbSetMap")]
19    public void set_map (X.Display dpy, uint which, Desc xkb);
20
21    [CCode (cname = "XkbChangeMap")]
22    public bool change_map (X.Display dpy, Desc xkb, MapChanges changes);
23
24    [CCode (cname = "XkbFreeKeyboard")]
25    public void free_keyboard (Desc xkb, uint which, bool free_all);
26
27    [CCode (cname = "XkbGetState")]
28    public void get_state (X.Display dpy, uint device_spec, out State state);
29
30    [CCode (cname = "XkbSelectEvents")]
31    public void select_events (X.Display dpy, uint device_spec, ulong bits_to_change,
32        ulong values_for_bits);
33
34    [CCode (cname = "XkbLatchModifiers")]
35    public void latch_modifiers (X.Display dpy, uint device_spec, uint affect,
36                                 uint values);
37
38    [CCode (cname = "XkbLockModifiers")]
39    public void lock_modifiers (X.Display dpy, uint device_spec, uint affect,
40                                uint values);
41
42
43    [Compact]
44    [CCode (cname = "XkbAnyEvent", free_function = "")]
45    public struct AnyEvent {
46        int xkb_type;
47    }
48
49    [Compact]
50    [CCode (cname = "XkbStateNotifyEvent", free_function = "")]
51    public struct StateNotifyEvent {
52        uint changed;
53        int locked_group;
54        uint mods;
55    }
56
57    [Compact]
58    [CCode (cname = "XkbEvent", free_function = "")]
59    public struct Event {
60        int type;
61        AnyEvent any;
62        StateNotifyEvent state;
63    }
64
65    [Compact]
66    [CCode (cname = "XkbStateRec", free_function = "")]
67    public struct State {
68        uchar   group;
69        uchar   locked_group;
70        ushort  base_group;
71        ushort  latched_group;
72        uchar   mods;
73        uchar   base_mods;
74        uchar   latched_mods;
75        uchar   locked_mods;
76        uchar   compat_state;
77        uchar   grab_mods;
78        uchar   compat_grab_mods;
79        uchar   lookup_mods;
80        uchar   compat_lookup_mods;
81        ushort  ptr_buttons;
82    }
83
84    [Compact]
85    [CCode (cname = "XkbDescRec", free_function = "")]
86    public class Desc {
87        public X.Display dpy;
88        public ushort flags;
89        public ushort device_spec;
90        public uchar min_key_code;
91        public uchar max_key_code;
92        public Controls          ctrls;
93        public ServerMap         server;
94        public ClientMap         map;
95        public Indicator         indicators;
96        public Names             names;
97        public CompatMap         compat;
98        public Geometry          geom;
99    }
100
101    [Compact]
102    [CCode (cname = "XkbControlsRec", free_function = "")]
103    public class Controls {
104        public uint		enabled_ctrls;
105    }
106
107    [Compact]
108    [CCode (cname = "XkbServerMapRec", free_function = "")]
109    public class ServerMap {
110    }
111
112    [Compact]
113    [CCode (cname = "XkbKeyTypeRec", free_function = "")]
114    public struct KeyType {
115    }
116
117    [CCode (cname = "XkbSymMapRec", free_function = "")]
118    public struct SymMap {
119        uchar    kt_index[4];
120        uchar    group_info;
121        uchar    width;
122        ushort   offset;
123    }
124
125    [CCode (cname = "XkbMapChangesRec", free_function = "")]
126	public struct MapChanges {
127        ushort changed;
128        char min_key_code;
129        char max_key_code;
130        uchar first_type;
131        uchar num_types;
132        char first_key_sym;
133        uchar num_key_syms;
134        char first_key_act;
135        uchar num_key_acts;
136        char first_key_behavior;
137        uchar num_key_behaviors;
138        char first_key_explicit;
139        uchar num_key_explicit;
140        char first_modmap_key;
141        uchar num_modmap_keys;
142        char first_vmodmap_key;
143        uchar num_vmodmap_keys;
144        uchar pad;
145        ushort vmods;
146	}
147
148    [Compact]
149    [CCode (cname = "XkbClientMapRec", free_function = "")]
150    public class ClientMap {
151        public uchar            size_types;
152        public uchar            num_types;
153        public KeyType[]        types;
154
155        public ushort           size_syms;
156        public ushort           num_syms;
157        [CCode (array_length = false, array_null_terminated = true)]
158        public ulong[]          syms;
159        [CCode (array_length = false, array_null_terminated = true)]
160        public SymMap[]         key_sym_map;
161
162        [CCode (array_length = false, array_null_terminated = true)]
163        public uchar[]          modmap;
164    }
165
166    [Compact]
167    [CCode (cname = "XkbIndicatorRec", free_function = "")]
168    public class Indicator {
169    }
170
171    [Compact]
172    [CCode (cname = "XkbNamesRec", free_function = "")]
173    public class Names {
174    }
175
176    [Compact]
177    [CCode (cname = "XkbCompatMapRec", free_function = "")]
178    public class CompatMap {
179    }
180
181    [Compact]
182    [CCode (cname = "XkbGeometryRec", free_function = "")]
183    public class Geometry {
184    }
185
186    [CCode (cname = "XkbUseCoreKbd")]
187    public int UseCoreKbd;
188    [CCode (cname = "XkbUseCorePtr")]
189    public int UseCorePtr;
190    [CCode (cname = "XkbDfltXIClass")]
191    public int DfltXIClass;
192    [CCode (cname = "XkbDfltXIId")]
193    public int DfltXIId;
194    [CCode (cname = "XkbAllXIClasses")]
195    public int AllXIClasses;
196    [CCode (cname = "XkbAllXIIds")]
197    public int AllXIIds;
198    [CCode (cname = "XkbXINone")]
199    public int XINone;
200
201    [CCode (cname = "XkbGBN_TypesMask")]
202    public int GBN_TypesMask;
203    [CCode (cname = "XkbGBN_CompatMapMask")]
204    public int GBN_CompatMapMask;
205    [CCode (cname = "XkbGBN_ClientSymbolsMask")]
206    public int GBN_ClientSymbolsMask;
207    [CCode (cname = "XkbGBN_ServerSymbolsMask")]
208    public int GBN_ServerSymbolsMask;
209    [CCode (cname = "XkbGBN_SymbolsMask")]
210    public int GBN_SymbolsMask;
211    [CCode (cname = "XkbGBN_IndicatorMapMask")]
212    public int GBN_IndicatorMapMask;
213    [CCode (cname = "XkbGBN_KeyNamesMask")]
214    public int GBN_KeyNamesMask;
215    [CCode (cname = "XkbGBN_GeometryMask")]
216    public int GBN_GeometryMask;
217    [CCode (cname = "XkbGBN_OtherNamesMask")]
218    public int GBN_OtherNamesMask;
219    [CCode (cname = "XkbGBN_AllComponentsMask")]
220    public int GBN_AllComponentsMask;
221
222    [CCode (cname = "XkbOneLevelIndex")]
223    public int OneLevelIndex;
224
225    [CCode (cname = "XkbNewKeyboardNotifyMask")]
226    public int NewKeyboardNotifyMask;
227    [CCode (cname = "XkbMapNotifyMask")]
228    public int MapNotifyMask;
229    [CCode (cname = "XkbStateNotifyMask")]
230    public int StateNotifyMask;
231    [CCode (cname = "XkbControlsNotifyMask")]
232    public int ControlsNotifyMask;
233    [CCode (cname = "XkbIndicatorStateNotifyMask")]
234    public int IndicatorStateNotifyMask;
235    [CCode (cname = "XkbIndicatorMapNotifyMask")]
236    public int IndicatorMapNotifyMask;
237    [CCode (cname = "XkbNamesNotifyMask")]
238    public int NamesNotifyMask;
239    [CCode (cname = "XkbCompatMapNotifyMask")]
240    public int CompatMapNotifyMask;
241    [CCode (cname = "XkbBellNotifyMask")]
242    public int BellNotifyMask;
243    [CCode (cname = "XkbActionMessageMask")]
244    public int ActionMessageMask;
245    [CCode (cname = "XkbAccessXNotifyMask")]
246    public int AccessXNotifyMask;
247    [CCode (cname = "XkbExtensionDeviceNotifyMask")]
248    public int ExtensionDeviceNotifyMask;
249    [CCode (cname = "XkbAllEventsMask")]
250    public int AllEventsMask;
251    [CCode (cname = "XkbAllControlsMask")]
252    public int AllControlsMask;
253
254    [CCode (cname = "XkbStateNotify")]
255    public int StateNotify;
256
257    [CCode (cname = "XkbGroupStateMask")]
258    public int GroupStateMask;
259
260    [CCode (cname = "XkbModifierStateMask")]
261    public int ModifierStateMask;
262
263    [CCode (cname = "XkbAllMapComponentsMask")]
264    public int AllMapComponentsMask;
265
266    [CCode (cname = "XkbKeySymsMask")]
267    public int KeySymsMask;
268
269    [CCode (cname = "XkbKeyTypesMask")]
270    public int KeyTypesMask;
271
272    [CCode (cname = "XkbSlowKeysMask")]
273    public int SlowKeysMask;
274
275    [CCode (cname = "XkbControlsEnabledMask")]
276    public int ControlsEnabledMask;
277}
278