1 /* $Xorg: XKBlib.h,v 1.6 2000/08/17 19:45:03 cpqbld Exp $ */
2 /************************************************************
3 Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
5 Permission to use, copy, modify, and distribute this
6 software and its documentation for any purpose and without
7 fee is hereby granted, provided that the above copyright
8 notice appear in all copies and that both that copyright
9 notice and this permission notice appear in supporting
10 documentation, and that the name of Silicon Graphics not be
11 used in advertising or publicity pertaining to distribution
12 of the software without specific prior written permission.
13 Silicon Graphics makes no representation about the suitability
14 of this software for any purpose. It is provided "as is"
15 without any express or implied warranty.
17 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
18 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
19 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
20 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
21 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
22 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
23 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
24 THE USE OR PERFORMANCE OF THIS SOFTWARE.
26 ********************************************************/
27 /* $XFree86: xc/lib/X11/XKBlib.h,v 3.5 2003/04/17 02:06:31 dawes Exp $ */
33 #include <X11/extensions/XKBstr.h>
35 typedef struct _XkbAnyEvent {
36 int type; /* XkbAnyEvent */
37 unsigned long serial; /* # of last req processed by server */
38 Bool send_event; /* is this from a SendEvent request? */
39 Display * display; /* Display the event was read from */
40 Time time; /* milliseconds */
41 int xkb_type; /* XKB event minor code */
42 unsigned int device; /* device ID */
45 typedef struct _XkbNewKeyboardNotify {
46 int type; /* XkbAnyEvent */
47 unsigned long serial; /* of last req processed by server */
48 Bool send_event; /* is this from a SendEvent request? */
49 Display * display; /* Display the event was read from */
50 Time time; /* milliseconds */
51 int xkb_type; /* XkbNewKeyboardNotify */
52 int device; /* device ID */
53 int old_device; /* device ID of previous keyboard */
54 int min_key_code; /* minimum key code */
55 int max_key_code; /* maximum key code */
56 int old_min_key_code;/* min key code of previous kbd */
57 int old_max_key_code;/* max key code of previous kbd */
58 unsigned int changed; /* changed aspects of the keyboard */
59 char req_major; /* major and minor opcode of req */
60 char req_minor; /* that caused change, if applicable */
61 } XkbNewKeyboardNotifyEvent;
63 typedef struct _XkbMapNotifyEvent {
64 int type; /* XkbAnyEvent */
65 unsigned long serial; /* of last req processed by server */
66 Bool send_event; /* is this from a SendEvent request */
67 Display * display; /* Display the event was read from */
68 Time time; /* milliseconds */
69 int xkb_type; /* XkbMapNotify */
70 int device; /* device ID */
71 unsigned int changed; /* fields which have been changed */
72 unsigned int flags; /* reserved */
73 int first_type; /* first changed key type */
74 int num_types; /* number of changed key types */
77 KeyCode first_key_sym;
78 KeyCode first_key_act;
79 KeyCode first_key_behavior;
80 KeyCode first_key_explicit;
81 KeyCode first_modmap_key;
82 KeyCode first_vmodmap_key;
85 int num_key_behaviors;
89 unsigned int vmods; /* mask of changed virtual mods */
92 typedef struct _XkbStateNotifyEvent {
93 int type; /* XkbAnyEvent */
94 unsigned long serial; /* # of last req processed by server */
95 Bool send_event; /* is this from a SendEvent request? */
96 Display * display; /* Display the event was read from */
97 Time time; /* milliseconds */
98 int xkb_type; /* XkbStateNotify */
99 int device; /* device ID */
100 unsigned int changed; /* mask of changed state components */
101 int group; /* keyboard group */
102 int base_group; /* base keyboard group */
103 int latched_group; /* latched keyboard group */
104 int locked_group; /* locked keyboard group */
105 unsigned int mods; /* modifier state */
106 unsigned int base_mods; /* base modifier state */
107 unsigned int latched_mods; /* latched modifiers */
108 unsigned int locked_mods; /* locked modifiers */
109 int compat_state; /* compatibility state */
110 unsigned char grab_mods; /* mods used for grabs */
111 unsigned char compat_grab_mods;/* grab mods for non-XKB clients */
112 unsigned char lookup_mods; /* mods sent to clients */
113 unsigned char compat_lookup_mods; /* mods sent to non-XKB clients */
114 int ptr_buttons; /* pointer button state */
115 KeyCode keycode; /* keycode that caused the change */
116 char event_type; /* KeyPress or KeyRelease */
117 char req_major; /* Major opcode of request */
118 char req_minor; /* Minor opcode of request */
119 } XkbStateNotifyEvent;
121 typedef struct _XkbControlsNotify {
122 int type; /* XkbAnyEvent */
123 unsigned long serial; /* of last req processed by server */
124 Bool send_event; /* is this from a SendEvent request? */
125 Display * display; /* Display the event was read from */
126 Time time; /* milliseconds */
127 int xkb_type; /* XkbControlsNotify */
128 int device; /* device ID */
129 unsigned int changed_ctrls; /* controls with changed sub-values */
130 unsigned int enabled_ctrls; /* controls currently enabled */
131 unsigned int enabled_ctrl_changes;/* controls just {en,dis}abled */
132 int num_groups; /* total groups on keyboard */
133 KeyCode keycode; /* key that caused change or 0 */
134 char event_type; /* type of event that caused change */
135 char req_major; /* if keycode==0, major and minor */
136 char req_minor; /* opcode of req that caused change */
137 } XkbControlsNotifyEvent;
139 typedef struct _XkbIndicatorNotify {
140 int type; /* XkbAnyEvent */
141 unsigned long serial; /* of last req processed by server */
142 Bool send_event; /* is this from a SendEvent request? */
143 Display * display; /* Display the event was read from */
144 Time time; /* milliseconds */
145 int xkb_type; /* XkbIndicatorNotify */
146 int device; /* device ID */
147 unsigned int changed; /* indicators with new state or map */
148 unsigned int state; /* current state of all indicators */
149 } XkbIndicatorNotifyEvent;
151 typedef struct _XkbNamesNotify {
152 int type; /* XkbAnyEvent */
153 unsigned long serial; /* of last req processed by server */
154 Bool send_event; /* is this from a SendEvent request? */
155 Display * display; /* Display the event was read from */
156 Time time; /* milliseconds */
157 int xkb_type; /* XkbNamesNotify */
158 int device; /* device ID */
159 unsigned int changed; /* names that have changed */
160 int first_type; /* first key type with new name */
161 int num_types; /* number of key types with new names */
162 int first_lvl; /* first key type new new level names */
163 int num_lvls; /* # of key types w/new level names */
164 int num_aliases; /* total number of key aliases*/
165 int num_radio_groups;/* total number of radio groups */
166 unsigned int changed_vmods; /* virtual modifiers with new names */
167 unsigned int changed_groups; /* groups with new names */
168 unsigned int changed_indicators;/* indicators with new names */
169 int first_key; /* first key with new name */
170 int num_keys; /* number of keys with new names */
171 } XkbNamesNotifyEvent;
173 typedef struct _XkbCompatMapNotify {
174 int type; /* XkbAnyEvent */
175 unsigned long serial; /* of last req processed by server */
176 Bool send_event; /* is this from a SendEvent request? */
177 Display * display; /* Display the event was read from */
178 Time time; /* milliseconds */
179 int xkb_type; /* XkbCompatMapNotify */
180 int device; /* device ID */
181 unsigned int changed_groups; /* groups with new compat maps */
182 int first_si; /* first new symbol interp */
183 int num_si; /* number of new symbol interps */
184 int num_total_si; /* total # of symbol interps */
185 } XkbCompatMapNotifyEvent;
187 typedef struct _XkbBellNotify {
188 int type; /* XkbAnyEvent */
189 unsigned long serial; /* of last req processed by server */
190 Bool send_event; /* is this from a SendEvent request? */
191 Display * display; /* Display the event was read from */
192 Time time; /* milliseconds */
193 int xkb_type; /* XkbBellNotify */
194 int device; /* device ID */
195 int percent; /* requested volume as a % of maximum */
196 int pitch; /* requested pitch in Hz */
197 int duration; /* requested duration in useconds */
198 int bell_class; /* (input extension) feedback class */
199 int bell_id; /* (input extension) ID of feedback */
200 Atom name; /* "name" of requested bell */
201 Window window; /* window associated with event */
202 Bool event_only; /* "event only" requested */
203 } XkbBellNotifyEvent;
205 typedef struct _XkbActionMessage {
206 int type; /* XkbAnyEvent */
207 unsigned long serial; /* of last req processed by server */
208 Bool send_event; /* is this from a SendEvent request? */
209 Display * display; /* Display the event was read from */
210 Time time; /* milliseconds */
211 int xkb_type; /* XkbActionMessage */
212 int device; /* device ID */
213 KeyCode keycode; /* key that generated the event */
214 Bool press; /* true if act caused by key press */
215 Bool key_event_follows;/* true if key event also generated */
216 int group; /* effective group */
217 unsigned int mods; /* effective mods */
218 char message[XkbActionMessageLength+1];
219 /* message -- leave space for NUL */
220 } XkbActionMessageEvent;
222 typedef struct _XkbAccessXNotify {
223 int type; /* XkbAnyEvent */
224 unsigned long serial; /* of last req processed by server */
225 Bool send_event; /* is this from a SendEvent request? */
226 Display * display; /* Display the event was read from */
227 Time time; /* milliseconds */
228 int xkb_type; /* XkbAccessXNotify */
229 int device; /* device ID */
230 int detail; /* XkbAXN_* */
231 int keycode; /* key of event */
232 int sk_delay; /* current slow keys delay */
233 int debounce_delay; /* current debounce delay */
234 } XkbAccessXNotifyEvent;
236 typedef struct _XkbExtensionDeviceNotify {
237 int type; /* XkbAnyEvent */
238 unsigned long serial; /* of last req processed by server */
239 Bool send_event; /* is this from a SendEvent request? */
240 Display * display; /* Display the event was read from */
241 Time time; /* milliseconds */
242 int xkb_type; /* XkbExtensionDeviceNotify */
243 int device; /* device ID */
244 unsigned int reason; /* reason for the event */
245 unsigned int supported; /* mask of supported features */
246 unsigned int unsupported; /* mask of unsupported features */
247 /* that some app tried to use */
248 int first_btn; /* first button that changed */
249 int num_btns; /* range of buttons changed */
250 unsigned int leds_defined; /* indicators with names or maps */
251 unsigned int led_state; /* current state of the indicators */
252 int led_class; /* feedback class for led changes */
253 int led_id; /* feedback id for led changes */
254 } XkbExtensionDeviceNotifyEvent;
256 typedef union _XkbEvent {
259 XkbNewKeyboardNotifyEvent new_kbd;
260 XkbMapNotifyEvent map;
261 XkbStateNotifyEvent state;
262 XkbControlsNotifyEvent ctrls;
263 XkbIndicatorNotifyEvent indicators;
264 XkbNamesNotifyEvent names;
265 XkbCompatMapNotifyEvent compat;
266 XkbBellNotifyEvent bell;
267 XkbActionMessageEvent message;
268 XkbAccessXNotifyEvent accessx;
269 XkbExtensionDeviceNotifyEvent device;
273 typedef struct _XkbKbdDpyState XkbKbdDpyStateRec,*XkbKbdDpyStatePtr;
275 /* XkbOpenDisplay error codes */
276 #define XkbOD_Success 0
277 #define XkbOD_BadLibraryVersion 1
278 #define XkbOD_ConnectionRefused 2
279 #define XkbOD_NonXkbServer 3
280 #define XkbOD_BadServerVersion 4
282 /* Values for XlibFlags */
283 #define XkbLC_ForceLatin1Lookup (1<<0)
284 #define XkbLC_ConsumeLookupMods (1<<1)
285 #define XkbLC_AlwaysConsumeShiftAndLock (1<<2)
286 #define XkbLC_IgnoreNewKeyboards (1<<3)
287 #define XkbLC_ControlFallback (1<<4)
288 #define XkbLC_ConsumeKeysOnComposeFail (1<<29)
289 #define XkbLC_ComposeLED (1<<30)
290 #define XkbLC_BeepOnComposeFail (1<<31)
292 #define XkbLC_AllComposeControls (0xc0000000)
293 #define XkbLC_AllControls (0xc000001f)
297 extern Bool XkbIgnoreExtension(
301 extern Display *XkbOpenDisplay(
304 int * /* err_rtrn */,
305 int * /* major_rtrn */,
306 int * /* minor_rtrn */,
310 extern Bool XkbQueryExtension(
312 int * /* opcodeReturn */,
313 int * /* eventBaseReturn */,
314 int * /* errorBaseReturn */,
315 int * /* majorRtrn */,
316 int * /* minorRtrn */
319 extern Bool XkbUseExtension(
321 int * /* major_rtrn */,
322 int * /* minor_rtrn */
325 extern Bool XkbLibraryVersion(
326 int * /* libMajorRtrn */,
327 int * /* libMinorRtrn */
330 extern unsigned int XkbSetXlibControls(
332 unsigned int /* affect */,
333 unsigned int /* values */
336 extern unsigned int XkbGetXlibControls(
340 extern unsigned int XkbXlibControlsImplemented(void);
342 typedef Atom (*XkbInternAtomFunc)(
344 _Xconst char * /* name */,
345 Bool /* only_if_exists */
348 typedef char * (*XkbGetAtomNameFunc)(
353 extern void XkbSetAtomFuncs(
354 XkbInternAtomFunc /* getAtom */,
355 XkbGetAtomNameFunc /* getName */
358 extern KeySym XkbKeycodeToKeysym(
360 #if NeedWidePrototypes
361 unsigned int /* kc */,
369 extern unsigned int XkbKeysymToModifiers(
374 extern Bool XkbLookupKeySym(
376 KeyCode /* keycode */,
377 unsigned int /* modifiers */,
378 unsigned int * /* modifiers_return */,
379 KeySym * /* keysym_return */
382 extern int XkbLookupKeyBinding(
384 KeySym /* sym_rtrn */,
385 unsigned int /* mods */,
388 int * /* extra_rtrn */
391 extern Bool XkbTranslateKeyCode(
392 XkbDescPtr /* xkb */,
393 KeyCode /* keycode */,
394 unsigned int /* modifiers */,
395 unsigned int * /* modifiers_return */,
396 KeySym * /* keysym_return */
399 extern int XkbTranslateKeySym(
401 register KeySym * /* sym_return */,
402 unsigned int /* modifiers */,
405 int * /* extra_rtrn */
408 extern Bool XkbSetAutoRepeatRate(
410 unsigned int /* deviceSpec */,
411 unsigned int /* delay */,
412 unsigned int /* interval */
415 extern Bool XkbGetAutoRepeatRate(
417 unsigned int /* deviceSpec */,
418 unsigned int * /* delayRtrn */,
419 unsigned int * /* intervalRtrn */
422 extern Bool XkbChangeEnabledControls(
424 unsigned int /* deviceSpec */,
425 unsigned int /* affect */,
426 unsigned int /* values */
429 extern Bool XkbDeviceBell(
432 int /* deviceSpec */,
439 extern Bool XkbForceDeviceBell(
441 int /* deviceSpec */,
447 extern Bool XkbDeviceBellEvent(
450 int /* deviceSpec */,
464 extern Bool XkbForceBell(
469 extern Bool XkbBellEvent(
476 extern Bool XkbSelectEvents(
478 unsigned int /* deviceID */,
479 unsigned int /* affect */,
480 unsigned int /* values */
483 extern Bool XkbSelectEventDetails(
485 unsigned int /* deviceID */,
486 unsigned int /* eventType */,
487 unsigned long /* affect */,
488 unsigned long /* details */
491 extern void XkbNoteMapChanges(
492 XkbMapChangesPtr /* old */,
493 XkbMapNotifyEvent * /* new */,
494 unsigned int /* wanted */
497 extern void XkbNoteNameChanges(
498 XkbNameChangesPtr /* old */,
499 XkbNamesNotifyEvent * /* new */,
500 unsigned int /* wanted */
503 extern Status XkbGetIndicatorState(
505 unsigned int /* deviceSpec */,
506 unsigned int * /* pStateRtrn */
509 extern Status XkbGetDeviceIndicatorState(
511 unsigned int /* deviceSpec */,
512 unsigned int /* ledClass */,
513 unsigned int /* ledID */,
514 unsigned int * /* pStateRtrn */
517 extern Status XkbGetIndicatorMap(
519 unsigned long /* which */,
520 XkbDescPtr /* desc */
523 extern Bool XkbSetIndicatorMap(
525 unsigned long /* which */,
526 XkbDescPtr /* desc */
529 #define XkbNoteIndicatorMapChanges(o,n,w) \
530 ((o)->map_changes|=((n)->map_changes&(w)))
531 #define XkbNoteIndicatorStateChanges(o,n,w)\
532 ((o)->state_changes|=((n)->state_changes&(w)))
533 #define XkbGetIndicatorMapChanges(d,x,c) \
534 (XkbGetIndicatorMap((d),(c)->map_changes,x)
535 #define XkbChangeIndicatorMaps(d,x,c) \
536 (XkbSetIndicatorMap((d),(c)->map_changes,x))
538 extern Bool XkbGetNamedIndicator(
541 int * /* pNdxRtrn */,
542 Bool * /* pStateRtrn */,
543 XkbIndicatorMapPtr /* pMapRtrn */,
544 Bool * /* pRealRtrn */
547 extern Bool XkbGetNamedDeviceIndicator(
549 unsigned int /* deviceSpec */,
550 unsigned int /* ledClass */,
551 unsigned int /* ledID */,
553 int * /* pNdxRtrn */,
554 Bool * /* pStateRtrn */,
555 XkbIndicatorMapPtr /* pMapRtrn */,
556 Bool * /* pRealRtrn */
559 extern Bool XkbSetNamedIndicator(
562 Bool /* changeState */,
564 Bool /* createNewMap */,
565 XkbIndicatorMapPtr /* pMap */
568 extern Bool XkbSetNamedDeviceIndicator(
570 unsigned int /* deviceSpec */,
571 unsigned int /* ledClass */,
572 unsigned int /* ledID */,
574 Bool /* changeState */,
576 Bool /* createNewMap */,
577 XkbIndicatorMapPtr /* pMap */
580 extern Bool XkbLockModifiers(
582 unsigned int /* deviceSpec */,
583 unsigned int /* affect */,
584 unsigned int /* values */
587 extern Bool XkbLatchModifiers(
589 unsigned int /* deviceSpec */,
590 unsigned int /* affect */,
591 unsigned int /* values */
594 extern Bool XkbLockGroup(
596 unsigned int /* deviceSpec */,
597 unsigned int /* group */
600 extern Bool XkbLatchGroup(
602 unsigned int /* deviceSpec */,
603 unsigned int /* group */
606 extern Bool XkbSetServerInternalMods(
608 unsigned int /* deviceSpec */,
609 unsigned int /* affectReal */,
610 unsigned int /* realValues */,
611 unsigned int /* affectVirtual */,
612 unsigned int /* virtualValues */
615 extern Bool XkbSetIgnoreLockMods(
617 unsigned int /* deviceSpec */,
618 unsigned int /* affectReal */,
619 unsigned int /* realValues */,
620 unsigned int /* affectVirtual */,
621 unsigned int /* virtualValues */
625 extern Bool XkbVirtualModsToReal(
626 XkbDescPtr /* xkb */,
627 unsigned int /* virtual_mask */,
628 unsigned int * /* mask_rtrn */
631 extern Bool XkbComputeEffectiveMap(
632 XkbDescPtr /* xkb */,
633 XkbKeyTypePtr /* type */,
634 unsigned char * /* map_rtrn */
637 extern Status XkbInitCanonicalKeyTypes(
638 XkbDescPtr /* xkb */,
639 unsigned int /* which */,
643 extern XkbDescPtr XkbAllocKeyboard(
647 extern void XkbFreeKeyboard(
648 XkbDescPtr /* xkb */,
649 unsigned int /* which */,
653 extern Status XkbAllocClientMap(
654 XkbDescPtr /* xkb */,
655 unsigned int /* which */,
656 unsigned int /* nTypes */
659 extern Status XkbAllocServerMap(
660 XkbDescPtr /* xkb */,
661 unsigned int /* which */,
662 unsigned int /* nActions */
665 extern void XkbFreeClientMap(
666 XkbDescPtr /* xkb */,
667 unsigned int /* what */,
671 extern void XkbFreeServerMap(
672 XkbDescPtr /* xkb */,
673 unsigned int /* what */,
677 extern XkbKeyTypePtr XkbAddKeyType(
678 XkbDescPtr /* xkb */,
681 Bool /* want_preserve */,
685 extern Status XkbAllocIndicatorMaps(
689 extern void XkbFreeIndicatorMaps(
693 extern XkbDescPtr XkbGetMap(
695 unsigned int /* which */,
696 unsigned int /* deviceSpec */
699 extern Status XkbGetUpdatedMap(
701 unsigned int /* which */,
702 XkbDescPtr /* desc */
705 extern Status XkbGetMapChanges(
707 XkbDescPtr /* xkb */,
708 XkbMapChangesPtr /* changes */
712 extern Status XkbRefreshKeyboardMapping(
713 XkbMapNotifyEvent * /* event */
716 extern Status XkbGetKeyTypes(
718 unsigned int /* first */,
719 unsigned int /* num */,
723 extern Status XkbGetKeySyms(
725 unsigned int /* first */,
726 unsigned int /* num */,
730 extern Status XkbGetKeyActions(
732 unsigned int /* first */,
733 unsigned int /* num */,
737 extern Status XkbGetKeyBehaviors(
739 unsigned int /* firstKey */,
740 unsigned int /* nKeys */,
741 XkbDescPtr /* desc */
744 extern Status XkbGetVirtualMods(
746 unsigned int /* which */,
747 XkbDescPtr /* desc */
750 extern Status XkbGetKeyExplicitComponents(
752 unsigned int /* firstKey */,
753 unsigned int /* nKeys */,
754 XkbDescPtr /* desc */
757 extern Status XkbGetKeyModifierMap(
759 unsigned int /* firstKey */,
760 unsigned int /* nKeys */,
761 XkbDescPtr /* desc */
764 extern Status XkbGetKeyVirtualModMap(
766 unsigned int /* first */,
767 unsigned int /* num */,
771 extern Status XkbAllocControls(
772 XkbDescPtr /* xkb */,
773 unsigned int /* which*/
776 extern void XkbFreeControls(
777 XkbDescPtr /* xkb */,
778 unsigned int /* which */,
782 extern Status XkbGetControls(
784 unsigned long /* which */,
785 XkbDescPtr /* desc */
788 extern Bool XkbSetControls(
790 unsigned long /* which */,
791 XkbDescPtr /* desc */
794 extern void XkbNoteControlsChanges(
795 XkbControlsChangesPtr /* old */,
796 XkbControlsNotifyEvent * /* new */,
797 unsigned int /* wanted */
800 #define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)
801 #define XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x)
803 extern Status XkbAllocCompatMap(
804 XkbDescPtr /* xkb */,
805 unsigned int /* which */,
806 unsigned int /* nInterpret */
809 extern void XkbFreeCompatMap(
810 XkbDescPtr /* xkb */,
811 unsigned int /* which */,
815 extern Status XkbGetCompatMap(
817 unsigned int /* which */,
821 extern Bool XkbSetCompatMap(
823 unsigned int /* which */,
824 XkbDescPtr /* xkb */,
825 Bool /* updateActions */
828 extern XkbSymInterpretPtr XkbAddSymInterpret(
829 XkbDescPtr /* xkb */,
830 XkbSymInterpretPtr /* si */,
831 Bool /* updateMap */,
832 XkbChangesPtr /* changes */
835 extern Status XkbAllocNames(
836 XkbDescPtr /* xkb */,
837 unsigned int /* which */,
839 int /* nTotalAliases */
842 extern Status XkbGetNames(
844 unsigned int /* which */,
845 XkbDescPtr /* desc */
848 extern Bool XkbSetNames(
850 unsigned int /* which */,
851 unsigned int /* firstType */,
852 unsigned int /* nTypes */,
853 XkbDescPtr /* desc */
856 extern Bool XkbChangeNames(
858 XkbDescPtr /* xkb */,
859 XkbNameChangesPtr /* changes */
862 extern void XkbFreeNames(
863 XkbDescPtr /* xkb */,
864 unsigned int /* which */,
869 extern Status XkbGetState(
871 unsigned int /* deviceSpec */,
872 XkbStatePtr /* rtrnState */
875 extern Bool XkbSetMap(
877 unsigned int /* which */,
878 XkbDescPtr /* desc */
881 extern Bool XkbChangeMap(
883 XkbDescPtr /* desc */,
884 XkbMapChangesPtr /* changes */
887 extern Bool XkbSetDetectableAutoRepeat(
889 Bool /* detectable */,
890 Bool * /* supported */
893 extern Bool XkbGetDetectableAutoRepeat(
895 Bool * /* supported */
898 extern Bool XkbSetAutoResetControls(
900 unsigned int /* changes */,
901 unsigned int * /* auto_ctrls */,
902 unsigned int * /* auto_values */
905 extern Bool XkbGetAutoResetControls(
907 unsigned int * /* auto_ctrls */,
908 unsigned int * /* auto_ctrl_values */
911 extern Bool XkbSetPerClientControls(
913 unsigned int /* change */,
914 unsigned int * /* values */
917 extern Bool XkbGetPerClientControls(
919 unsigned int * /* ctrls */
922 extern Status XkbCopyKeyType(
923 XkbKeyTypePtr /* from */,
924 XkbKeyTypePtr /* into */
927 extern Status XkbCopyKeyTypes(
928 XkbKeyTypePtr /* from */,
929 XkbKeyTypePtr /* into */,
933 extern Status XkbResizeKeyType(
934 XkbDescPtr /* xkb */,
937 Bool /* want_preserve */,
938 int /* new_num_lvls */
941 extern KeySym *XkbResizeKeySyms(
942 XkbDescPtr /* desc */,
947 extern XkbAction *XkbResizeKeyActions(
948 XkbDescPtr /* desc */,
953 extern Status XkbChangeTypesOfKey(
954 XkbDescPtr /* xkb */,
956 int /* num_groups */,
957 unsigned int /* groups */,
958 int * /* newTypes */,
959 XkbMapChangesPtr /* pChanges */
962 extern Status XkbChangeKeycodeRange(
963 XkbDescPtr /* xkb */,
966 XkbChangesPtr /* changes */
969 /***====================================================================***/
971 extern XkbComponentListPtr XkbListComponents(
973 unsigned int /* deviceSpec */,
974 XkbComponentNamesPtr /* ptrns */,
975 int * /* max_inout */
978 extern void XkbFreeComponentList(
979 XkbComponentListPtr /* list */
982 extern XkbDescPtr XkbGetKeyboard(
984 unsigned int /* which */,
985 unsigned int /* deviceSpec */
988 extern XkbDescPtr XkbGetKeyboardByName(
990 unsigned int /* deviceSpec */,
991 XkbComponentNamesPtr /* names */,
992 unsigned int /* want */,
993 unsigned int /* need */,
997 /***====================================================================***/
999 extern int XkbKeyTypesForCoreSymbols( /* returns # of groups */
1000 XkbDescPtr /* xkb */, /* keyboard device */
1001 int /* map_width */, /* width of core KeySym array */
1002 KeySym * /* core_syms */, /* always mapWidth symbols */
1003 unsigned int /* protected */, /* explicit key types */
1004 int * /* types_inout */, /* always four type indices */
1005 KeySym * /* xkb_syms_rtrn */ /* must have enough space */
1008 extern Bool XkbApplyCompatMapToKey( /* False only on error */
1009 XkbDescPtr /* xkb */, /* keymap to be edited */
1010 KeyCode /* key */, /* key to be updated */
1011 XkbChangesPtr /* changes */ /* resulting changes to map */
1014 extern Bool XkbUpdateMapFromCore( /* False only on error */
1015 XkbDescPtr /* xkb */, /* XKB keyboard to be edited */
1016 KeyCode /* first_key */, /* first changed key */
1017 int /* num_keys */, /* number of changed keys */
1018 int /* map_width */, /* width of core keymap */
1019 KeySym * /* core_keysyms */, /* symbols from core keymap */
1020 XkbChangesPtr /* changes */ /* resulting changes */
1023 /***====================================================================***/
1025 extern XkbDeviceLedInfoPtr XkbAddDeviceLedInfo(
1026 XkbDeviceInfoPtr /* devi */,
1027 unsigned int /* ledClass */,
1028 unsigned int /* ledId */
1031 extern Status XkbResizeDeviceButtonActions(
1032 XkbDeviceInfoPtr /* devi */,
1033 unsigned int /* newTotal */
1036 extern XkbDeviceInfoPtr XkbAllocDeviceInfo(
1037 unsigned int /* deviceSpec */,
1038 unsigned int /* nButtons */,
1039 unsigned int /* szLeds */
1042 extern void XkbFreeDeviceInfo(
1043 XkbDeviceInfoPtr /* devi */,
1044 unsigned int /* which */,
1048 extern void XkbNoteDeviceChanges(
1049 XkbDeviceChangesPtr /* old */,
1050 XkbExtensionDeviceNotifyEvent * /* new */,
1051 unsigned int /* wanted */
1054 extern XkbDeviceInfoPtr XkbGetDeviceInfo(
1055 Display * /* dpy */,
1056 unsigned int /* which */,
1057 unsigned int /* deviceSpec */,
1058 unsigned int /* ledClass */,
1059 unsigned int /* ledID */
1062 extern Status XkbGetDeviceInfoChanges(
1063 Display * /* dpy */,
1064 XkbDeviceInfoPtr /* devi */,
1065 XkbDeviceChangesPtr /* changes */
1068 extern Status XkbGetDeviceButtonActions(
1069 Display * /* dpy */,
1070 XkbDeviceInfoPtr /* devi */,
1072 unsigned int /* first */,
1073 unsigned int /* nBtns */
1076 extern Status XkbGetDeviceLedInfo(
1077 Display * /* dpy */,
1078 XkbDeviceInfoPtr /* devi */,
1079 unsigned int /* ledClass (class, XIDflt, XIAll) */,
1080 unsigned int /* ledId (id, XIDflt, XIAll) */,
1081 unsigned int /* which (XkbXI_Indicator{Names,Map}Mask */
1084 extern Bool XkbSetDeviceInfo(
1085 Display * /* dpy */,
1086 unsigned int /* which */,
1087 XkbDeviceInfoPtr /* devi */
1090 extern Bool XkbChangeDeviceInfo(
1092 XkbDeviceInfoPtr /* desc */,
1093 XkbDeviceChangesPtr /* changes */
1096 extern Bool XkbSetDeviceLedInfo(
1097 Display * /* dpy */,
1098 XkbDeviceInfoPtr /* devi */,
1099 unsigned int /* ledClass */,
1100 unsigned int /* ledID */,
1101 unsigned int /* which */
1104 extern Bool XkbSetDeviceButtonActions(
1105 Display * /* dpy */,
1106 XkbDeviceInfoPtr /* devi */,
1107 unsigned int /* first */,
1108 unsigned int /* nBtns */
1111 /***====================================================================***/
1113 extern char XkbToControl(
1117 /***====================================================================***/
1119 extern Bool XkbSetDebuggingFlags(
1120 Display * /* dpy */,
1121 unsigned int /* mask */,
1122 unsigned int /* flags */,
1124 unsigned int /* ctrls_mask */,
1125 unsigned int /* ctrls */,
1126 unsigned int * /* rtrn_flags */,
1127 unsigned int * /* rtrn_ctrls */
1130 extern Bool XkbApplyVirtualModChanges(
1131 XkbDescPtr /* xkb */,
1132 unsigned int /* changed */,
1133 XkbChangesPtr /* changes */
1136 extern Bool XkbUpdateActionVirtualMods(
1137 XkbDescPtr /* xkb */,
1138 XkbAction * /* act */,
1139 unsigned int /* changed */
1142 extern void XkbUpdateKeyTypeVirtualMods(
1143 XkbDescPtr /* xkb */,
1144 XkbKeyTypePtr /* type */,
1145 unsigned int /* changed */,
1146 XkbChangesPtr /* changes */
1151 #endif /* _XKBLIB_H_ */