]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/lib/X11/XKBlib.h
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / lib / X11 / XKBlib.h
diff --git a/Xserver/lib/X11/XKBlib.h b/Xserver/lib/X11/XKBlib.h
new file mode 100644 (file)
index 0000000..ac354d1
--- /dev/null
@@ -0,0 +1,1335 @@
+/* $XConsortium: XKBlib.h /main/17 1996/03/01 14:30:14 kaleb $ */
+/************************************************************
+Copyright (c) 1993 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 _XKBLIB_H_
+#define _XKBLIB_H_
+
+#include <X11/extensions/XKBstr.h>
+
+typedef struct _XkbAnyEvent {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* # of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XKB event minor code */
+       unsigned int    device;         /* device ID */
+} XkbAnyEvent;
+
+typedef struct _XkbNewKeyboardNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbNewKeyboardNotify */
+       int             device;         /* device ID */
+       int             old_device;     /* device ID of previous keyboard */
+       int             min_key_code;   /* minimum key code */
+       int             max_key_code;   /* maximum key code */
+       int             old_min_key_code;/* min key code of previous kbd */
+       int             old_max_key_code;/* max key code of previous kbd */
+       unsigned int    changed;        /* changed aspects of the keyboard */
+       char            req_major;      /* major and minor opcode of req */
+       char            req_minor;      /* that caused change, if applicable */
+} XkbNewKeyboardNotifyEvent;
+
+typedef struct _XkbMapNotifyEvent {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbMapNotify */
+       int             device;         /* device ID */
+       unsigned int    changed;        /* fields which have been changed */
+       unsigned int    flags;          /* reserved */
+       int             first_type;     /* first changed key type */
+       int             num_types;      /* number of changed key types */
+       KeyCode         min_key_code;
+       KeyCode         max_key_code;
+       KeyCode         first_key_sym;
+       KeyCode         first_key_act;
+       KeyCode         first_key_behavior;
+       KeyCode         first_key_explicit;
+       KeyCode         first_modmap_key;  
+       KeyCode         first_vmodmap_key;
+       int             num_key_syms;
+       int             num_key_acts;
+       int             num_key_behaviors;
+       int             num_key_explicit;
+       int             num_modmap_keys;
+       int             num_vmodmap_keys;
+       unsigned int    vmods;          /* mask of changed virtual mods */
+} XkbMapNotifyEvent;
+
+typedef struct _XkbStateNotifyEvent {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* # of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbStateNotify */
+       int             device;         /* device ID */
+       unsigned int    changed;        /* mask of changed state components */
+       int             group;          /* keyboard group */
+       int             base_group;     /* base keyboard group */
+       int             latched_group;  /* latched keyboard group */
+       int             locked_group;   /* locked keyboard group */
+       unsigned int    mods;           /* modifier state */
+       unsigned int    base_mods;      /* base modifier state */
+       unsigned int    latched_mods;   /* latched modifiers */
+       unsigned int    locked_mods;    /* locked modifiers */
+       int             compat_state;   /* compatibility state */
+       unsigned char   grab_mods;      /* mods used for grabs */
+       unsigned char   compat_grab_mods;/* grab mods for non-XKB clients */
+       unsigned char   lookup_mods;    /* mods sent to clients */
+       unsigned char   compat_lookup_mods; /* mods sent to non-XKB clients */
+       int             ptr_buttons;    /* pointer button state */
+       KeyCode         keycode;        /* keycode that caused the change */
+       char            event_type;     /* KeyPress or KeyRelease */
+       char            req_major;      /* Major opcode of request */
+       char            req_minor;      /* Minor opcode of request */
+} XkbStateNotifyEvent;
+
+typedef struct _XkbControlsNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbControlsNotify */
+       int             device;         /* device ID */
+       unsigned int    changed_ctrls;  /* controls with changed sub-values */
+       unsigned int    enabled_ctrls;  /* controls currently enabled */
+       unsigned int    enabled_ctrl_changes;/* controls just {en,dis}abled */
+       int             num_groups;     /* total groups on keyboard */
+       KeyCode         keycode;        /* key that caused change or 0 */
+       char            event_type;     /* type of event that caused change */
+       char            req_major;      /* if keycode==0, major and minor */
+       char            req_minor;      /* opcode of req that caused change */
+} XkbControlsNotifyEvent;
+
+typedef struct _XkbIndicatorNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbIndicatorNotify */
+       int             device;         /* device ID */
+       unsigned int    changed;        /* indicators with new state or map */
+       unsigned int    state;          /* current state of all indicators */
+} XkbIndicatorNotifyEvent;
+
+typedef struct _XkbNamesNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbNamesNotify */
+       int             device;         /* device ID */
+       unsigned int    changed;        /* names that have changed */
+       int             first_type;     /* first key type with new name */
+       int             num_types;      /* number of key types with new names */
+       int             first_lvl;      /* first key type new new level names */
+       int             num_lvls;       /* # of key types w/new level names */
+       int             num_aliases;    /* total number of key aliases*/
+       int             num_radio_groups;/* total number of radio groups */
+       unsigned int    changed_vmods;  /* virtual modifiers with new names */
+       unsigned int    changed_groups; /* groups with new names */
+       unsigned int    changed_indicators;/* indicators with new names */
+       int             first_key;      /* first key with new name */
+       int             num_keys;       /* number of keys with new names */
+} XkbNamesNotifyEvent;
+
+typedef struct _XkbCompatMapNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbCompatMapNotify */
+       int             device;         /* device ID */
+       unsigned int    changed_groups; /* groups with new compat maps */
+       int             first_si;       /* first new symbol interp */
+       int             num_si;         /* number of new symbol interps */
+       int             num_total_si;   /* total # of symbol interps */
+} XkbCompatMapNotifyEvent;
+
+typedef struct _XkbBellNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbBellNotify */
+       int             device;         /* device ID */
+       int             percent;        /* requested volume as a % of maximum */
+       int             pitch;          /* requested pitch in Hz */
+       int             duration;       /* requested duration in useconds */
+       int             bell_class;     /* (input extension) feedback class */
+       int             bell_id;        /* (input extension) ID of feedback */
+       Atom            name;           /* "name" of requested bell */
+       Window          window;         /* window associated with event */
+       Bool            event_only;     /* "event only" requested */
+} XkbBellNotifyEvent;
+
+typedef struct _XkbActionMessage {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbActionMessage */
+       int             device;         /* device ID */
+       KeyCode         keycode;        /* key that generated the event */
+       Bool            press;          /* true if act caused by key press */
+       Bool            key_event_follows;/* true if key event also generated */
+       int             group;          /* effective group */
+       unsigned int    mods;           /* effective mods */
+       char            message[XkbActionMessageLength+1]; 
+                                       /* message -- leave space for NUL */
+} XkbActionMessageEvent;
+
+typedef struct _XkbAccessXNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbAccessXNotify */
+       int             device;         /* device ID */
+       int             detail;         /* XkbAXN_* */
+       int             keycode;        /* key of event */
+       int             sk_delay;       /* current slow keys delay */
+       int             debounce_delay; /* current debounce delay */
+} XkbAccessXNotifyEvent;
+
+typedef struct _XkbExtensionDeviceNotify {
+       int             type;           /* XkbAnyEvent */
+       unsigned long   serial;         /* of last req processed by server */
+       Bool            send_event;     /* is this from a SendEvent request? */
+       Display *       display;        /* Display the event was read from */
+       Time            time;           /* milliseconds */
+       int             xkb_type;       /* XkbExtensionDeviceNotify */
+       int             device;         /* device ID */
+       unsigned int    reason;         /* reason for the event */      
+       unsigned int    supported;      /* mask of supported features */        
+       unsigned int    unsupported;    /* mask of unsupported features */
+                                       /* that some app tried to use */
+       int             first_btn;      /* first button that changed */
+       int             num_btns;       /* range of buttons changed */
+       unsigned int    leds_defined;   /* indicators with names or maps */
+       unsigned int    led_state;      /* current state of the indicators */
+       int             led_class;      /* feedback class for led changes */
+       int             led_id;         /* feedback id for led changes */
+} XkbExtensionDeviceNotifyEvent;
+
+typedef union _XkbEvent {
+       int                             type;
+       XkbAnyEvent                     any;
+       XkbNewKeyboardNotifyEvent       new_kbd;
+       XkbMapNotifyEvent               map;
+       XkbStateNotifyEvent             state;
+       XkbControlsNotifyEvent          ctrls;
+       XkbIndicatorNotifyEvent         indicators;
+       XkbNamesNotifyEvent             names;
+       XkbCompatMapNotifyEvent         compat;
+       XkbBellNotifyEvent              bell;
+       XkbActionMessageEvent           message;
+       XkbAccessXNotifyEvent           accessx;
+       XkbExtensionDeviceNotifyEvent   device;
+       XEvent                          core;
+} XkbEvent;
+
+typedef struct _XkbKbdDpyState XkbKbdDpyStateRec,*XkbKbdDpyStatePtr;
+
+       /* XkbOpenDisplay error codes */
+#define        XkbOD_Success           0
+#define        XkbOD_BadLibraryVersion 1
+#define        XkbOD_ConnectionRefused 2
+#define        XkbOD_NonXkbServer      3
+#define        XkbOD_BadServerVersion  4
+
+       /* Values for XlibFlags */
+#define        XkbLC_ForceLatin1Lookup         (1<<0)
+#define        XkbLC_ConsumeLookupMods         (1<<1)
+#define        XkbLC_AlwaysConsumeShiftAndLock (1<<2)
+#define        XkbLC_IgnoreNewKeyboards        (1<<3)
+#define        XkbLC_ControlFallback           (1<<4)
+#define        XkbLC_ConsumeKeysOnComposeFail  (1<<29)
+#define        XkbLC_ComposeLED                (1<<30)
+#define        XkbLC_BeepOnComposeFail         (1<<31)
+
+#define        XkbLC_AllComposeControls        (0xc0000000)
+#define        XkbLC_AllControls               (0xc000001f)
+
+_XFUNCPROTOBEGIN
+
+extern Bool    XkbIgnoreExtension(
+#if NeedFunctionPrototypes
+       Bool                    /* ignore */
+#endif
+);
+
+extern Display *XkbOpenDisplay(
+#if NeedFunctionPrototypes
+       char *                  /* name */,
+       int *                   /* ev_rtrn */,
+       int *                   /* err_rtrn */,
+       int *                   /* major_rtrn */,
+       int *                   /* minor_rtrn */,
+       int *                   /* reason */
+#endif
+);
+
+extern Bool    XkbQueryExtension(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       int *                   /* opcodeReturn */,
+       int *                   /* eventBaseReturn */,
+       int *                   /* errorBaseReturn */,
+       int *                   /* majorRtrn */,
+       int *                   /* minorRtrn */
+#endif
+);
+
+extern Bool    XkbUseExtension(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       int *                   /* major_rtrn */,
+       int *                   /* minor_rtrn */
+#endif
+);
+
+extern Bool    XkbLibraryVersion(
+#if NeedFunctionPrototypes
+       int *                   /* libMajorRtrn */,
+       int *                   /* libMinorRtrn */
+#endif
+);
+
+extern unsigned int    XkbSetXlibControls(
+#if NeedFunctionPrototypes
+       Display*                /* dpy */,
+       unsigned int            /* affect */,
+       unsigned int            /* values */
+#endif
+);
+
+extern unsigned int    XkbGetXlibControls(
+#if NeedFunctionPrototypes
+       Display*                /* dpy */
+#endif
+);
+
+typedef        Atom    (*XkbInternAtomFunc)(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       _Xconst char *          /* name */,
+       Bool                    /* only_if_exists */
+#endif
+);
+
+typedef char * (*XkbGetAtomNameFunc)(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Atom                    /* atom */
+#endif
+);
+
+extern void            XkbSetAtomFuncs(
+#if NeedFunctionPrototypes
+       XkbInternAtomFunc       /* getAtom */,
+       XkbGetAtomNameFunc      /* getName */
+#endif
+);
+
+extern KeySym XkbKeycodeToKeysym(
+#if NeedFunctionPrototypes
+               Display *       /* dpy */,
+#if NeedWidePrototypes
+                unsigned int   /* kc */,
+#else
+                KeyCode        /* kc */,
+#endif
+                int            /* group */,
+                int            /* level */
+#endif
+);
+
+extern unsigned int    XkbKeysymToModifiers(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    KeySym                     /* ks */
+#endif
+);
+
+extern Bool            XkbLookupKeySym(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    KeyCode                    /* keycode */,
+    unsigned int               /* modifiers */,
+    unsigned int *             /* modifiers_return */,
+    KeySym *                   /* keysym_return */
+#endif
+);
+
+extern int             XkbLookupKeyBinding(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    KeySym                     /* sym_rtrn */,
+    unsigned int               /* mods */,
+    char *                     /* buffer */,
+    int                        /* nbytes */,
+    int *                      /* extra_rtrn */
+#endif
+);
+
+extern Bool            XkbTranslateKeyCode(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    KeyCode                    /* keycode */,
+    unsigned int               /* modifiers */,
+    unsigned int *             /* modifiers_return */,
+    KeySym *                   /* keysym_return */
+#endif
+);
+
+extern int             XkbTranslateKeySym(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    register KeySym *          /* sym_return */,
+    unsigned int               /* modifiers */,
+    char *                     /* buffer */,
+    int                        /* nbytes */,
+    int *                      /* extra_rtrn */
+#endif
+);
+
+extern Bool    XkbSetAutoRepeatRate(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* delay */,
+       unsigned int            /* interval */
+#endif
+);
+
+extern Bool    XkbGetAutoRepeatRate(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int *          /* delayRtrn */,
+       unsigned int *          /* intervalRtrn */
+#endif
+);
+
+extern Bool    XkbChangeEnabledControls(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* affect */,
+       unsigned int            /* values */
+#endif
+);
+
+extern Bool    XkbDeviceBell(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Window                  /* win */,
+       int                     /* deviceSpec */,
+       int                     /* bellClass */,
+       int                     /* bellID */,
+       int                     /* percent */,
+       Atom                    /* name */
+#endif
+);
+
+extern Bool    XkbForceDeviceBell(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       int                     /* deviceSpec */,
+       int                     /* bellClass */,
+       int                     /* bellID */,
+       int                     /* percent */
+#endif
+);
+
+extern Bool    XkbDeviceBellEvent(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Window                  /* win */,
+       int                     /* deviceSpec */,
+       int                     /* bellClass */,
+       int                     /* bellID */,
+       int                     /* percent */,
+       Atom                    /* name */
+#endif
+);
+
+extern Bool    XkbBell(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Window                  /* win */,
+       int                     /* percent */,
+       Atom                    /* name */
+#endif
+);
+
+extern Bool    XkbForceBell(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       int                     /* percent */
+#endif
+);
+
+extern Bool    XkbBellEvent(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Window                  /* win */,
+       int                     /* percent */,
+       Atom                    /* name */
+#endif
+);
+
+extern Bool    XkbSelectEvents(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceID */,
+       unsigned int            /* affect */,
+       unsigned int            /* values */
+#endif
+);
+
+extern Bool    XkbSelectEventDetails(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceID */,
+       unsigned int            /* eventType */,
+       unsigned long           /* affect */,
+       unsigned long           /* details */
+#endif
+);
+
+extern void    XkbNoteMapChanges(
+#if NeedFunctionPrototypes
+    XkbMapChangesPtr           /* old */,
+    XkbMapNotifyEvent  *       /* new */,
+    unsigned int               /* wanted */
+#endif
+);
+
+extern void    XkbNoteNameChanges(
+#if NeedFunctionPrototypes
+    XkbNameChangesPtr          /* old */,
+    XkbNamesNotifyEvent        *       /* new */,
+    unsigned int               /* wanted */
+#endif
+);
+
+extern Status  XkbGetIndicatorState(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int *          /* pStateRtrn */
+#endif
+);
+
+extern Status  XkbGetDeviceIndicatorState(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* ledClass */,
+       unsigned int            /* ledID */,
+       unsigned int *          /* pStateRtrn */
+#endif
+);
+
+extern Status   XkbGetIndicatorMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned long           /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Bool     XkbSetIndicatorMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned long           /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+#define        XkbNoteIndicatorMapChanges(o,n,w) \
+                               ((o)->map_changes|=((n)->map_changes&(w)))
+#define        XkbNoteIndicatorStateChanges(o,n,w)\
+                               ((o)->state_changes|=((n)->state_changes&(w)))
+#define        XkbGetIndicatorMapChanges(d,x,c) \
+                               (XkbGetIndicatorMap((d),(c)->map_changes,x)
+#define        XkbChangeIndicatorMaps(d,x,c) \
+                               (XkbSetIndicatorMap((d),(c)->map_changes,x))
+
+extern Bool    XkbGetNamedIndicator(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Atom                    /* name */,
+       int *                   /* pNdxRtrn */,
+       Bool *                  /* pStateRtrn */,
+       XkbIndicatorMapPtr      /* pMapRtrn */,
+       Bool *                  /* pRealRtrn */
+#endif
+);
+
+extern Bool    XkbGetNamedDeviceIndicator(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* ledClass */,
+       unsigned int            /* ledID */,
+       Atom                    /* name */,
+       int *                   /* pNdxRtrn */,
+       Bool *                  /* pStateRtrn */,
+       XkbIndicatorMapPtr      /* pMapRtrn */,
+       Bool *                  /* pRealRtrn */
+#endif
+);
+
+extern Bool    XkbSetNamedIndicator(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Atom                    /* name */,
+       Bool                    /* changeState */,
+       Bool                    /* state */,
+       Bool                    /* createNewMap */,
+       XkbIndicatorMapPtr      /* pMap */
+#endif
+);
+
+extern Bool    XkbSetNamedDeviceIndicator(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* ledClass */,
+       unsigned int            /* ledID */,
+       Atom                    /* name */,
+       Bool                    /* changeState */,
+       Bool                    /* state */,
+       Bool                    /* createNewMap */,
+       XkbIndicatorMapPtr      /* pMap */
+#endif
+);
+
+extern Bool    XkbLockModifiers(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* affect */,
+       unsigned int            /* values */
+#endif
+);
+
+extern Bool    XkbLatchModifiers(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* affect */,
+       unsigned int            /* values */
+#endif
+);
+
+extern Bool    XkbLockGroup(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* group */
+#endif
+);
+
+extern Bool    XkbLatchGroup(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* group */
+#endif
+);
+
+extern Bool    XkbSetServerInternalMods(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* affectReal */,
+       unsigned int            /* realValues */,
+       unsigned int            /* affectVirtual */,
+       unsigned int            /* virtualValues */
+#endif
+);
+
+extern Bool    XkbSetIgnoreLockMods(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* affectReal */,
+       unsigned int            /* realValues */,
+       unsigned int            /* affectVirtual */,
+       unsigned int            /* virtualValues */
+#endif
+);
+
+
+extern Bool    XkbVirtualModsToReal(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* virtual_mask */,
+       unsigned int *          /* mask_rtrn */
+#endif
+);
+
+extern Bool    XkbComputeEffectiveMap(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       XkbKeyTypePtr           /* type */,
+       unsigned char *         /* map_rtrn */
+#endif
+);
+
+extern Status XkbInitCanonicalKeyTypes(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    unsigned int               /* which */,
+    int                                /* keypadVMod */
+#endif
+);
+
+extern XkbDescPtr XkbAllocKeyboard(
+#if NeedFunctionPrototypes
+       void
+#endif
+);
+
+extern void    XkbFreeKeyboard(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       Bool                    /* freeDesc */
+#endif
+);
+
+extern Status XkbAllocClientMap(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       unsigned int            /* nTypes */
+#endif
+);
+
+extern Status XkbAllocServerMap(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       unsigned int            /* nActions */
+#endif
+);
+
+extern void    XkbFreeClientMap(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    unsigned int               /* what */,
+    Bool                       /* freeMap */
+#endif
+);
+
+extern void    XkbFreeServerMap(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    unsigned int               /* what */,
+    Bool                       /* freeMap */
+#endif
+);
+
+extern XkbKeyTypePtr   XkbAddKeyType(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    Atom                       /* name */,
+    int                                /* map_count */,
+    Bool                       /* want_preserve */,
+    int                                /* num_lvls */
+#endif
+);
+
+extern Status XkbAllocIndicatorMaps(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */
+#endif
+);
+
+extern void XkbFreeIndicatorMaps(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */
+#endif
+);
+
+extern XkbDescPtr XkbGetMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       unsigned int            /* deviceSpec */
+#endif
+);
+
+extern Status  XkbGetUpdatedMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Status  XkbGetMapChanges(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    XkbDescPtr                 /* xkb */,
+    XkbMapChangesPtr           /* changes */
+#endif
+);
+
+
+extern Status  XkbRefreshKeyboardMapping(
+#if NeedFunctionPrototypes
+    XkbMapNotifyEvent *                /* event */
+#endif
+);
+
+extern Status  XkbGetKeyTypes(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    unsigned int               /* first */,
+    unsigned int               /* num */,
+    XkbDescPtr                 /* xkb */
+#endif
+);
+
+extern Status  XkbGetKeySyms(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    unsigned int               /* first */,
+    unsigned int               /* num */,
+    XkbDescPtr                 /* xkb */
+#endif
+);
+
+extern Status  XkbGetKeyActions(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    unsigned int               /* first */,
+    unsigned int               /* num */,
+    XkbDescPtr                 /* xkb */
+#endif
+);
+
+extern Status  XkbGetKeyBehaviors(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* firstKey */,
+       unsigned int            /* nKeys */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Status  XkbGetVirtualMods(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Status  XkbGetKeyExplicitComponents(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* firstKey */,
+       unsigned int            /* nKeys */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Status  XkbGetKeyModifierMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* firstKey */,
+       unsigned int            /* nKeys */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Status  XkbAllocControls(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which*/
+#endif
+);
+
+extern void    XkbFreeControls(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       Bool                    /* freeMap */
+#endif
+);
+
+extern Status  XkbGetControls(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned long           /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Bool    XkbSetControls(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned long           /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern void    XkbNoteControlsChanges(
+#if NeedFunctionPrototypes
+    XkbControlsChangesPtr      /* old */,
+    XkbControlsNotifyEvent *   /* new */,
+    unsigned int               /* wanted */
+#endif
+);
+
+#define        XkbGetControlsChanges(d,x,c)    XkbGetControls(d,(c)->changed_ctrls,x)
+#define        XkbChangeControls(d,x,c)        XkbSetControls(d,(c)->changed_ctrls,x)
+
+extern Status  XkbAllocCompatMap(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    unsigned int               /* which */,
+    unsigned int               /* nInterpret */
+#endif
+);
+
+extern void    XkbFreeCompatMap(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    unsigned int               /* which */,
+    Bool                       /* freeMap */
+#endif
+);
+
+extern Status XkbGetCompatMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       XkbDescPtr              /* xkb */
+#endif
+);
+
+extern Bool XkbSetCompatMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       XkbDescPtr              /* xkb */,
+       Bool                    /* updateActions */
+#endif
+);
+
+extern XkbSymInterpretPtr XkbAddSymInterpret(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       XkbSymInterpretPtr      /* si */,
+       Bool                    /* updateMap */,
+       XkbChangesPtr           /* changes */
+#endif
+);
+
+extern Status XkbAllocNames(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       int                     /* nTotalRG */,
+       int                     /* nTotalAliases */
+#endif
+);
+
+extern Status  XkbGetNames(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Bool    XkbSetNames(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       unsigned int            /* firstType */,
+       unsigned int            /* nTypes */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Bool    XkbChangeNames(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       XkbDescPtr              /* xkb */,
+       XkbNameChangesPtr       /* changes */
+#endif
+);
+
+extern void XkbFreeNames(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       Bool                    /* freeMap */
+#endif
+);
+
+
+extern Status  XkbGetState(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       XkbStatePtr             /* rtrnState */
+#endif
+);
+
+extern Bool    XkbSetMap(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       XkbDescPtr              /* desc */
+#endif
+);
+
+extern Bool    XkbChangeMap(
+#if NeedFunctionPrototypes
+       Display*                /* dpy */,
+       XkbDescPtr              /* desc */,
+       XkbMapChangesPtr        /* changes */
+#endif
+);
+
+extern Bool    XkbSetDetectableAutoRepeat(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Bool                    /* detectable */,
+       Bool *                  /* supported */
+#endif
+);
+
+extern Bool    XkbGetDetectableAutoRepeat(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       Bool *                  /* supported */
+#endif
+);
+
+extern Bool    XkbSetAutoResetControls(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    unsigned int               /* changes */,
+    unsigned int *             /* auto_ctrls */,
+    unsigned int *             /* auto_values */
+#endif
+);
+
+extern Bool    XkbGetAutoResetControls(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    unsigned int *             /* auto_ctrls */,
+    unsigned int *             /* auto_ctrl_values */
+#endif
+);
+
+extern Status XkbCopyKeyType(
+#if NeedFunctionPrototypes
+    XkbKeyTypePtr      /* from */,
+    XkbKeyTypePtr      /* into */
+#endif
+);
+
+extern Status XkbCopyKeyTypes(
+#if NeedFunctionPrototypes
+    XkbKeyTypePtr      /* from */,
+    XkbKeyTypePtr      /* into */,
+    int                        /* num_types */
+#endif
+);
+
+extern Status  XkbResizeKeyType(
+#if NeedFunctionPrototypes
+    XkbDescPtr         /* xkb */,
+    int                        /* type_ndx */,
+    int                        /* map_count */,
+    Bool               /* want_preserve */,
+    int                        /* new_num_lvls */
+#endif
+);
+
+extern KeySym *XkbResizeKeySyms(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* desc */,
+       int                     /* forKey */,
+       int                     /* symsNeeded */
+#endif
+);
+
+extern XkbAction *XkbResizeKeyActions(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* desc */,
+       int                     /* forKey */,
+       int                     /* actsNeeded */
+#endif
+);
+
+extern Status XkbChangeTypesOfKey(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       int                     /* key */,
+       int                     /* num_groups */,
+       unsigned int            /* groups */,
+       int *                   /* newTypes */,
+       XkbMapChangesPtr        /* pChanges */
+#endif
+);
+
+/***====================================================================***/
+
+extern XkbComponentListPtr     XkbListComponents(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* deviceSpec */,
+       XkbComponentNamesPtr    /* ptrns */,
+       int *                   /* max_inout */
+#endif
+);
+
+extern void XkbFreeComponentList(
+#if NeedFunctionPrototypes
+       XkbComponentListPtr     /* list */
+#endif
+);
+
+extern XkbDescPtr XkbGetKeyboard(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       unsigned int            /* deviceSpec */
+#endif
+);
+
+extern XkbDescPtr XkbGetKeyboardByName(
+#if NeedFunctionPrototypes
+    Display *                  /* dpy */,
+    unsigned int               /* deviceSpec */,
+    XkbComponentNamesPtr       /* names */,
+    unsigned int               /* want */,
+    unsigned int               /* need */,
+    Bool                       /* load */
+#endif
+);
+
+/***====================================================================***/
+
+extern int     XkbKeyTypesForCoreSymbols(      /* returns # of groups */
+#if NeedFunctionPrototypes
+    XkbDescPtr /* xkb */,                      /* keyboard device */
+    int                /* map_width */,                /* width of core KeySym array */
+    KeySym *   /* core_syms */,                /* always mapWidth symbols */
+    unsigned int       /* protected */,        /* explicit key types */
+    int *      /* types_inout */,              /* always four type indices */
+    KeySym *   /* xkb_syms_rtrn */             /* must have enough space */
+#endif
+);
+
+extern Bool    XkbApplyCompatMapToKey( /* False only on error */
+#if NeedFunctionPrototypes
+    XkbDescPtr         /* xkb */,              /* keymap to be edited */
+    KeyCode            /* key */,              /* key to be updated */
+    XkbChangesPtr      /* changes */           /* resulting changes to map */
+#endif
+);
+
+extern Bool    XkbUpdateMapFromCore( /* False only on error */
+#if NeedFunctionPrototypes
+    XkbDescPtr         /* xkb */,              /* XKB keyboard to be edited */
+    KeyCode            /* first_key */,        /* first changed key */
+    int                        /* num_keys */,         /* number of changed keys */
+    int                        /* map_width */,        /* width of core keymap */
+    KeySym *           /* core_keysyms */,     /* symbols from core keymap */
+    XkbChangesPtr      /* changes */           /* resulting changes */
+#endif
+);
+
+/***====================================================================***/
+
+extern XkbDeviceLedInfoPtr     XkbAddDeviceLedInfo(
+#if NeedFunctionPrototypes
+       XkbDeviceInfoPtr        /* devi */,
+       unsigned int            /* ledClass */,
+       unsigned int            /* ledId */
+#endif
+);
+
+extern Status                  XkbResizeDeviceButtonActions(
+#if NeedFunctionPrototypes
+       XkbDeviceInfoPtr        /* devi */,
+       unsigned int            /* newTotal */
+#endif
+);
+
+extern XkbDeviceInfoPtr        XkbAllocDeviceInfo(
+#if NeedFunctionPrototypes
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* nButtons */,
+       unsigned int            /* szLeds */
+#endif
+);
+
+extern void XkbFreeDeviceInfo(
+#if NeedFunctionPrototypes
+       XkbDeviceInfoPtr        /* devi */,
+       unsigned int            /* which */,
+       Bool                    /* freeDevI */
+#endif
+);
+
+extern void    XkbNoteDeviceChanges(
+#if NeedFunctionPrototypes
+    XkbDeviceChangesPtr                        /* old */,
+    XkbExtensionDeviceNotifyEvent *    /* new */,
+    unsigned int                       /* wanted */
+#endif
+);
+
+extern XkbDeviceInfoPtr XkbGetDeviceInfo(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       unsigned int            /* deviceSpec */,
+       unsigned int            /* ledClass */,
+       unsigned int            /* ledID */
+#endif
+);
+
+extern Status  XkbGetDeviceInfoChanges(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       XkbDeviceInfoPtr        /* devi */,
+       XkbDeviceChangesPtr     /* changes */
+#endif
+);
+
+extern Status  XkbGetDeviceButtonActions(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       XkbDeviceInfoPtr        /* devi */,
+       Bool                    /* all */,
+       unsigned int            /* first */,
+       unsigned int            /* nBtns */
+#endif
+);
+
+extern Status  XkbGetDeviceLedInfo(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       XkbDeviceInfoPtr        /* devi */,
+       unsigned int            /* ledClass (class, XIDflt, XIAll) */,
+       unsigned int            /* ledId (id, XIDflt, XIAll) */,
+       unsigned int            /* which (XkbXI_Indicator{Names,Map}Mask */
+#endif
+);
+
+extern Bool    XkbSetDeviceInfo(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       unsigned int            /* which */,
+       XkbDeviceInfoPtr        /* devi */
+#endif
+);
+
+extern Bool    XkbChangeDeviceInfo(
+#if NeedFunctionPrototypes
+       Display*                /* dpy */,
+       XkbDeviceInfoPtr        /* desc */,
+       XkbDeviceChangesPtr     /* changes */
+#endif
+);
+
+extern  Bool XkbSetDeviceLedInfo(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       XkbDeviceInfoPtr        /* devi */,
+       unsigned int            /* ledClass */,
+       unsigned int            /* ledID */,
+       unsigned int            /* which */
+#endif
+);
+
+extern Bool XkbSetDeviceButtonActions(
+#if NeedFunctionPrototypes
+       Display *               /* dpy */,
+       XkbDeviceInfoPtr        /* devi */,
+       unsigned int            /* first */,
+       unsigned int            /* nBtns */
+#endif
+);
+
+/***====================================================================***/
+
+extern char    XkbToControl(
+#if NeedFunctionPrototypes
+       char            /* c */
+#endif
+);
+
+/***====================================================================***/
+
+extern Bool XkbSetDebuggingFlags(
+#if NeedFunctionPrototypes
+    Display *          /* dpy */,
+    unsigned int       /* mask */,
+    unsigned int       /* flags */,
+    char *             /* msg */,
+    unsigned int       /* ctrls_mask */,
+    unsigned int       /* ctrls */,
+    unsigned int *     /* rtrn_flags */,
+    unsigned int *     /* rtrn_ctrls */
+#endif
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XKBLIB_H_ */