]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/include/extensions/XKBsrv.h
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / include / extensions / XKBsrv.h
diff --git a/Xserver/include/extensions/XKBsrv.h b/Xserver/include/extensions/XKBsrv.h
new file mode 100644 (file)
index 0000000..5eb3f92
--- /dev/null
@@ -0,0 +1,1285 @@
+/* $XConsortium: XKBsrv.h /main/25 1996/09/28 16:32:19 rws $ */
+/************************************************************
+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 _XKBSRV_H_
+#define        _XKBSRV_H_
+
+#ifdef XKB_IN_SERVER
+#define XkbAllocClientMap              SrvXkbAllocClientMap
+#define XkbAllocServerMap              SrvXkbAllocServerMap
+#define XkbChangeTypesOfKey            SrvXkbChangeTypesOfKey
+#define        XkbAddKeyType                   SrvXkbAddKeyType
+#define XkbCopyKeyType                 SrvXkbCopyKeyType
+#define XkbCopyKeyTypes                        SrvXkbCopyKeyTypes
+#define XkbFreeClientMap               SrvXkbFreeClientMap
+#define XkbFreeServerMap               SrvXkbFreeServerMap
+#define XkbInitCanonicalKeyTypes       SrvXkbInitCanonicalKeyTypes
+#define        XkbKeyTypesForCoreSymbols       SrvXkbKeyTypesForCoreSymbols
+#define        XkbApplyCompatMapToKey          SrvXkbApplyCompatMapToKey
+#define        XkbUpdateMapFromCore            SrvXkbUpdateMapFromCore
+#define XkbResizeKeyActions            SrvXkbResizeKeyActions
+#define XkbResizeKeySyms               SrvXkbResizeKeySyms
+#define XkbResizeKeyType               SrvXkbResizeKeyType
+#define XkbAllocCompatMap              SrvXkbAllocCompatMap
+#define XkbAllocControls               SrvXkbAllocControls
+#define XkbAllocIndicatorMaps          SrvXkbAllocIndicatorMaps
+#define XkbAllocKeyboard               SrvXkbAllocKeyboard
+#define XkbAllocNames                  SrvXkbAllocNames
+#define XkbFreeCompatMap               SrvXkbFreeCompatMap
+#define XkbFreeControls                        SrvXkbFreeControls
+#define XkbFreeIndicatorMaps           SrvXkbFreeIndicatorMaps
+#define XkbFreeKeyboard                        SrvXkbFreeKeyboard
+#define XkbFreeNames                   SrvXkbFreeNames
+#define        XkbAddDeviceLedInfo             SrvXkbAddDeviceLedInfo
+#define        XkbAllocDeviceInfo              SrvXkbAllocDeviceInfo
+#define        XkbFreeDeviceInfo               SrvXkbFreeDeviceInfo
+#define        XkbResizeDeviceButtonActions    SrvXkbResizeDeviceButtonActions
+#define XkbLatchModifiers              SrvXkbLatchModifiers
+#define XkbLatchGroup                  SrvXkbLatchGroup
+#define XkbVirtualModsToReal           SrvXkbVirtualModsToReal
+#define        XkbChangeKeycodeRange           SrvXkbChangeKeycodeRange
+#define        XkbApplyVirtualModChanges       SrvXkbApplyVirtualModChanges
+#define        XkbUpdateActionVirtualMods      SrvXkbUpdateActionVirtualMods
+#define XkbUpdateKeyTypeVirtualMods    SrvXkbUpdateKeyTypeVirtualMods
+#endif
+
+#include <X11/extensions/XKBstr.h>
+#include <X11/extensions/XKBproto.h>
+
+typedef struct _XkbInterest {
+       DeviceIntPtr            dev;
+       ClientPtr               client;
+       XID                     resource;
+       struct _XkbInterest *   next;
+       CARD16                  extDevNotifyMask;
+       CARD16                  stateNotifyMask;
+       CARD16                  namesNotifyMask;
+       CARD32                  ctrlsNotifyMask;
+       CARD8                   compatNotifyMask;
+       BOOL                    bellNotifyMask;
+       BOOL                    actionMessageMask;
+       CARD16                  accessXNotifyMask;
+       CARD32                  iStateNotifyMask;
+       CARD32                  iMapNotifyMask;
+       CARD16                  altSymsNotifyMask;
+       CARD32                  autoCtrls;
+       CARD32                  autoCtrlValues;
+} XkbInterestRec,*XkbInterestPtr;
+
+typedef struct _XkbRadioGroup {
+       CARD8           flags;
+       CARD8           nMembers;
+       CARD8           dfltDown;
+       CARD8           currentDown;
+       CARD8           members[XkbRGMaxMembers];
+} XkbRadioGroupRec, *XkbRadioGroupPtr;
+
+typedef struct _XkbEventCause {
+       CARD8           kc;
+       CARD8           event;
+       CARD8           mjr;
+       CARD8           mnr;
+       ClientPtr       client;
+} XkbEventCauseRec,*XkbEventCausePtr;
+#define        XkbSetCauseKey(c,k,e)   { (c)->kc= (k),(c)->event= (e),\
+                                 (c)->mjr= (c)->mnr= 0; \
+                                 (c)->client= NULL; }
+#define        XkbSetCauseReq(c,j,n,cl) { (c)->kc= (c)->event= 0,\
+                                 (c)->mjr= (j),(c)->mnr= (n);\
+                                 (c)->client= (cl); }
+#define        XkbSetCauseCoreReq(c,e,cl) XkbSetCauseReq(c,e,0,cl)
+#define        XkbSetCauseXkbReq(c,e,cl)  XkbSetCauseReq(c,XkbReqCode,e,cl)
+#define        XkbSetCauseUnknown(c)      XkbSetCauseKey(c,0,0)
+
+#define        _OFF_TIMER              0
+#define        _KRG_WARN_TIMER         1
+#define        _KRG_TIMER              2
+#define        _SK_TIMEOUT_TIMER       3
+#define        _ALL_TIMEOUT_TIMER      4
+
+#define        _BEEP_NONE              0
+#define        _BEEP_FEATURE_ON        1
+#define        _BEEP_FEATURE_OFF       2
+#define        _BEEP_FEATURE_CHANGE    3
+#define        _BEEP_SLOW_WARN         4
+#define        _BEEP_SLOW_PRESS        5
+#define        _BEEP_SLOW_ACCEPT       6
+#define        _BEEP_SLOW_REJECT       7
+#define        _BEEP_SLOW_RELEASE      8
+#define        _BEEP_STICKY_LATCH      9
+#define        _BEEP_STICKY_LOCK       10
+#define        _BEEP_STICKY_UNLOCK     11
+#define        _BEEP_LED_ON            12
+#define        _BEEP_LED_OFF           13
+#define        _BEEP_LED_CHANGE        14
+#define        _BEEP_BOUNCE_REJECT     15
+
+typedef struct _XkbSrvInfo {
+       XkbStateRec      prev_state;
+       XkbStateRec      state;
+       XkbDescPtr       desc;
+
+       DeviceIntPtr     device;
+       KbdCtrlProcPtr   kbdProc;
+
+       XkbRadioGroupPtr radioGroups;
+       CARD8            nRadioGroups;
+       CARD8            clearMods;
+       CARD8            setMods;
+       INT16            groupChange;
+
+       CARD16           dfltPtrDelta;
+
+       double           mouseKeysCurve;
+       double           mouseKeysCurveFactor;
+       INT16            mouseKeysDX;
+       INT16            mouseKeysDY;
+       CARD8            mouseKeysFlags;
+       Bool             mouseKeysAccel;
+       CARD8            mouseKeysCounter;
+
+       CARD8            lockedPtrButtons;
+       CARD8            shiftKeyCount;
+       KeyCode          mouseKey;
+       KeyCode          inactiveKey;
+       KeyCode          slowKey;
+       KeyCode          repeatKey;
+       CARD8            krgTimerActive;
+       CARD8            beepType;
+       CARD8            beepCount;
+
+       CARD32           flags;
+       CARD32           lastPtrEventTime;
+       CARD32           lastShiftEventTime;
+       OsTimerPtr       beepTimer;
+       OsTimerPtr       mouseKeyTimer;
+       OsTimerPtr       slowKeysTimer;
+       OsTimerPtr       bounceKeysTimer;
+       OsTimerPtr       repeatKeyTimer;
+       OsTimerPtr       krgTimer;
+} XkbSrvInfoRec, *XkbSrvInfoPtr;
+
+#define        XkbSLI_IsDefault        (1L<<0)
+#define        XkbSLI_HasOwnState      (1L<<1)
+
+typedef struct _XkbSrvLedInfo {
+       CARD16                  flags;
+       CARD16                  class;
+       CARD16                  id;
+       union {
+           KbdFeedbackPtr      kf;
+           LedFeedbackPtr      lf;
+       }                       fb;
+
+       CARD32                  physIndicators;
+       CARD32                  autoState;
+       CARD32                  explicitState;
+       CARD32                  effectiveState;
+
+       CARD32                  mapsPresent;
+       CARD32                  namesPresent;
+       XkbIndicatorMapPtr      maps;
+       Atom *                  names;
+
+       CARD32                  usesBase;
+       CARD32                  usesLatched;
+       CARD32                  usesLocked;
+       CARD32                  usesEffective;
+       CARD32                  usesCompat;
+       CARD32                  usesControls;
+
+       CARD32                  usedComponents;
+} XkbSrvLedInfoRec, *XkbSrvLedInfoPtr;
+
+/*
+ * Settings for xkbClientFlags field (used by DIX)
+ * These flags _must_ not overlap with XkbPCF_*
+ */
+#define        _XkbClientInitialized           (1<<15)
+
+#define        _XkbWantsDetectableAutoRepeat(c)\
+       ((c)->xkbClientFlags&XkbPCF_DetectableAutoRepeatMask)
+
+/*
+ * Settings for flags field
+ */
+#define        _XkbStateNotifyInProgress       (1<<0)
+
+/***====================================================================***/
+
+#define XkbAX_KRGMask   (XkbSlowKeysMask|XkbBounceKeysMask)
+#define        XkbAllFilteredEventsMask \
+                       (XkbAccessXKeysMask|XkbRepeatKeysMask|XkbAX_KRGMask)
+
+/***====================================================================***/
+
+extern int     XkbReqCode;
+extern int     XkbEventBase;
+extern int     XkbKeyboardErrorCode;
+extern int     XkbDisableLockActions;
+extern char *  XkbBaseDirectory;
+extern char *  XkbInitialMap;
+extern int     _XkbClientMajor;
+extern int     _XkbClientMinor;
+extern unsigned        int XkbXIUnsupported;
+
+extern char *  XkbModelUsed,*XkbLayoutUsed,*XkbVariantUsed,*XkbOptionsUsed;
+extern Bool    noXkbExtension;
+extern Bool    XkbWantRulesProp;
+
+extern pointer XkbLastRepeatEvent;
+
+extern CARD32  xkbDebugFlags;
+extern CARD32  xkbDebugCtrls;
+
+#define        _XkbAlloc(s)            xalloc((s))
+#define        _XkbCalloc(n,s)         Xcalloc((n)*(s))
+#define        _XkbRealloc(o,s)        Xrealloc((o),(s))
+#define        _XkbTypedAlloc(t)       ((t *)xalloc(sizeof(t)))
+#define        _XkbTypedCalloc(n,t)    ((t *)Xcalloc((n)*sizeof(t)))
+#define        _XkbTypedRealloc(o,n,t) \
+       ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
+#define        _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
+#define        _XkbFree(p)             Xfree(p)
+
+#define        _XkbLibError(c,l,d) \
+       { _XkbErrCode= (c); _XkbErrLocation= (l); _XkbErrData= (d); }
+#define        _XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff)))
+#define        _XkbErrCode3(a,b,c)     _XkbErrCode2(a,(((unsigned int)(b))<<16)|(c))
+#define        _XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d)))
+
+extern int     DeviceKeyPress,DeviceKeyRelease;
+extern int     DeviceButtonPress,DeviceButtonRelease;
+
+#ifdef XINPUT
+#define        _XkbIsPressEvent(t)     (((t)==KeyPress)||((t)==DeviceKeyPress))
+#define        _XkbIsReleaseEvent(t)   (((t)==KeyRelease)||((t)==DeviceKeyRelease))
+#else
+#define        _XkbIsPressEvent(t)     ((t)==KeyPress)
+#define        _XkbIsReleaseEvent(t)   ((t)==KeyRelease)
+#endif
+
+#define        _XkbCoreKeycodeInRange(c,k)     (((k)>=(c)->curKeySyms.minKeyCode)&&\
+                                        ((k)<=(c)->curKeySyms.maxKeyCode))
+#define        _XkbCoreNumKeys(c)      ((c)->curKeySyms.maxKeyCode-\
+                                (c)->curKeySyms.minKeyCode+1)
+
+#define        XConvertCase(s,l,u)     XkbConvertCase(s,l,u)
+#define        IsKeypadKey(s)          XkbKSIsKeypad(s)
+
+#define        Status          int
+#define        XPointer        pointer
+#define        Display         struct _XDisplay
+
+#ifndef True
+#define        True    1
+#define        False   0
+#endif
+
+#ifndef PATH_MAX
+#ifdef MAXPATHLEN
+#define        PATH_MAX MAXPATHLEN
+#else
+#define        PATH_MAX 1024
+#endif
+#endif
+
+_XFUNCPROTOBEGIN
+
+extern void    XkbFreeCompatMap(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    unsigned int               /* which */,
+    Bool                       /* freeMap */
+#endif
+);
+
+extern void XkbFreeNames(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       Bool                    /* freeMap */
+#endif
+);
+
+extern DeviceIntPtr _XkbLookupAnyDevice(
+#if NeedFunctionPrototypes
+    int                        /* id */,
+    int *              /* why_rtrn */
+#endif
+);
+
+extern DeviceIntPtr _XkbLookupKeyboard(
+#if NeedFunctionPrototypes
+    int                        /* id */,
+    int *              /* why_rtrn */
+#endif
+);
+
+extern DeviceIntPtr _XkbLookupBellDevice(
+#if NeedFunctionPrototypes
+    int                        /* id */,
+    int *              /* why_rtrn */
+#endif
+);
+
+extern DeviceIntPtr _XkbLookupLedDevice(
+#if NeedFunctionPrototypes
+    int                        /* id */,
+    int *              /* why_rtrn */
+#endif
+);
+
+extern DeviceIntPtr _XkbLookupButtonDevice(
+#if NeedFunctionPrototypes
+    int                        /* id */,
+    int *              /* why_rtrn */
+#endif
+);
+
+extern XkbDescPtr XkbAllocKeyboard(
+#if NeedFunctionPrototypes
+       void
+#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            /* nNewActions */
+#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 Status XkbAllocIndicatorMaps(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */
+#endif
+);
+
+extern Status  XkbAllocCompatMap(
+#if NeedFunctionPrototypes
+    XkbDescPtr                 /* xkb */,
+    unsigned int               /* which */,
+    unsigned int               /* nInterpret */
+#endif
+);
+
+extern Status XkbAllocNames(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       int                     /* nTotalRG */,
+       int                     /* nTotalAliases */
+#endif
+);
+
+extern Status  XkbAllocControls(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which*/
+#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 void    XkbFreeKeyboard(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       unsigned int            /* which */,
+       Bool                    /* freeDesc */
+#endif
+);
+
+extern  void XkbSetActionKeyMods(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       XkbAction *             /* act */,
+       unsigned int            /* mods */
+#endif
+);
+
+extern Bool XkbCheckActionVMods(
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       XkbAction *             /* act */,
+       unsigned int            /* changed */
+#endif
+);
+
+extern Bool XkbApplyVModChanges(
+#if NeedFunctionPrototypes
+    XkbSrvInfoPtr      /* xkbi */,
+    unsigned int       /* changed */,
+    XkbChangesPtr      /* pChanges */,
+    unsigned int *     /* needChecksRtrn */,
+    XkbEventCausePtr   /* cause */
+#endif
+);
+
+extern void XkbApplyVModChangesToAllDevices(
+#if NeedFunctionPrototypes
+    DeviceIntPtr       /* dev */,
+    XkbDescPtr                 /* xkb */,
+    unsigned int       /* changed */,
+    XkbEventCausePtr   /* cause */
+#endif
+);
+
+extern unsigned int XkbMaskForVMask(
+#if NeedFunctionPrototypes
+    XkbDescPtr         /* xkb */,
+    unsigned int       /* vmask */
+#endif
+);
+
+extern Bool XkbVirtualModsToReal(
+#if NeedFunctionPrototypes
+       XkbDescPtr      /* xkb */,
+       unsigned int    /* virtua_mask */,
+       unsigned int *  /* mask_rtrn */
+#endif
+);
+
+extern unsigned int    XkbAdjustGroup(
+#if NeedFunctionPrototypes
+    int                        /* group */,
+    XkbControlsPtr     /* ctrls */
+#endif
+);
+
+extern KeySym *XkbResizeKeySyms(
+#if NeedFunctionPrototypes
+    XkbDescPtr         /* xkb */,
+    int                /* key */,
+    int                /* needed */
+#endif
+);
+
+extern XkbAction *XkbResizeKeyActions(
+#if NeedFunctionPrototypes
+    XkbDescPtr         /* xkb */,
+    int                /* key */,
+    int                /* needed */
+#endif
+);
+
+extern void XkbUpdateKeyTypesFromCore(
+#if NeedFunctionPrototypes
+    DeviceIntPtr       /* pXDev */,
+    KeyCode            /* first */,
+    CARD8              /* num */,
+    XkbChangesPtr      /* pChanges */
+#endif
+);
+
+extern void XkbUpdateDescActions(      
+#if NeedFunctionPrototypes
+    XkbDescPtr         /* xkb */,
+    KeyCode            /* first */,
+    CARD8              /* num */,
+    XkbChangesPtr      /* changes */
+#endif
+);
+
+extern void XkbUpdateActions(
+#if NeedFunctionPrototypes
+    DeviceIntPtr       /* pXDev */,
+    KeyCode            /* first */,
+    CARD8              /* num */,
+    XkbChangesPtr      /* pChanges */,
+    unsigned int *     /* needChecksRtrn */,
+    XkbEventCausePtr   /* cause */
+#endif
+);
+
+extern void XkbUpdateCoreDescription(
+#if NeedFunctionPrototypes
+    DeviceIntPtr       /* keybd */,
+    Bool               /* resize */
+#endif
+);
+
+extern void XkbApplyMappingChange(
+#if NeedFunctionPrototypes
+    DeviceIntPtr       /* pXDev */,
+    CARD8              /* request */,
+    KeyCode            /* firstKey */,
+    CARD8              /* num */,
+    ClientPtr          /* client */
+#endif
+);
+
+extern void XkbSetIndicators(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* pXDev */,
+    CARD32                     /* affect */,
+    CARD32                     /* values */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbUpdateIndicators(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* keybd */,
+    CARD32                     /* changed */,
+    Bool                       /* check_edevs */,
+    XkbChangesPtr              /* pChanges */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern XkbSrvLedInfoPtr XkbAllocSrvLedInfo(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    KbdFeedbackPtr             /* kf */,
+    LedFeedbackPtr             /* lf */,
+    unsigned int               /* needed_parts */
+#endif
+);
+
+extern XkbSrvLedInfoPtr XkbFindSrvLedInfo(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    unsigned int               /* class */,
+    unsigned int               /* id */,
+    unsigned int               /* needed_parts */
+#endif
+);
+
+extern void XkbApplyLedNameChanges(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    XkbSrvLedInfoPtr           /* sli */,
+    unsigned int               /* changed_names */,
+    xkbExtensionDeviceNotify * /* ed */,
+    XkbChangesPtr              /* changes */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbApplyLedMapChanges(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    XkbSrvLedInfoPtr           /* sli */,
+    unsigned int               /* changed_maps */,
+    xkbExtensionDeviceNotify * /* ed */,
+    XkbChangesPtr              /* changes */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbApplyLedStateChanges(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    XkbSrvLedInfoPtr           /* sli */,
+    unsigned int               /* changed_leds */,
+    xkbExtensionDeviceNotify * /* ed */,
+    XkbChangesPtr              /* changes */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbUpdateLedAutoState(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    XkbSrvLedInfoPtr           /* sli */,
+    unsigned int               /* maps_to_check */,
+    xkbExtensionDeviceNotify * /* ed */,
+    XkbChangesPtr              /* changes */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbFlushLedEvents( 
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    DeviceIntPtr               /* kbd */,
+    XkbSrvLedInfoPtr           /* sli */,
+    xkbExtensionDeviceNotify * /* ed */,
+    XkbChangesPtr              /* changes */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbUpdateAllDeviceIndicators(
+#if NeedFunctionPrototypes
+    XkbChangesPtr              /* changes */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern unsigned int XkbIndicatorsToUpdate(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    unsigned long              /* state_changes */,
+    Bool                       /* enabled_ctrl_changes */
+#endif
+);
+
+extern void XkbComputeDerivedState(
+#if NeedFunctionPrototypes
+    XkbSrvInfoPtr              /* xkbi */
+#endif
+);
+
+extern void XkbCheckSecondaryEffects(
+#if NeedFunctionPrototypes
+    XkbSrvInfoPtr              /* xkbi */,
+    unsigned int               /* which */,
+    XkbChangesPtr              /* changes */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbCheckIndicatorMaps(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    XkbSrvLedInfoPtr           /* sli */,
+    unsigned int               /* which */
+#endif
+);
+
+extern unsigned int XkbStateChangedFlags(
+#if NeedFunctionPrototypes
+    XkbStatePtr                        /* old */,
+    XkbStatePtr                        /* new */
+#endif
+);
+
+extern void XkbSendStateNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* kbd */,
+       xkbStateNotify *        /* pSN */
+#endif
+);
+
+extern void XkbSendMapNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* kbd */,
+       xkbMapNotify *  /* ev */
+#endif
+);
+
+extern int  XkbComputeControlsNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* kbd */,
+       XkbControlsPtr          /* old */,
+       XkbControlsPtr          /* new */,
+       xkbControlsNotify *     /* pCN */,
+        Bool                   /* forceCtrlProc */
+#endif
+);
+
+extern void XkbSendControlsNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* kbd */,
+       xkbControlsNotify *     /* ev */
+#endif
+);
+
+extern void XkbSendCompatMapNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* kbd */,
+       xkbCompatMapNotify *    /* ev */
+#endif
+);
+
+extern void XkbSendIndicatorNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* kbd */,
+       int                     /* xkbType */,
+       xkbIndicatorNotify *    /* ev */
+#endif
+);
+
+extern void XkbHandleBell(
+#if NeedFunctionPrototypes
+       BOOL            /* force */,
+       BOOL            /* eventOnly */,
+       DeviceIntPtr    /* kbd */,
+       CARD8           /* percent */,
+       pointer                 /* ctrl */,
+       CARD8           /* class */,
+       Atom            /* name */,
+       WindowPtr       /* pWin */,
+       ClientPtr       /* pClient */
+#endif
+);
+
+extern void XkbSendAccessXNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* kbd */,
+       xkbAccessXNotify *      /* pEv */
+#endif
+);
+
+extern void XkbSendNamesNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* kbd */,
+       xkbNamesNotify *        /* ev */
+#endif
+);
+
+extern void XkbSendCompatNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* kbd */,
+       xkbCompatMapNotify *    /* ev */
+#endif
+);
+
+extern void XkbSendActionMessage(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* kbd */,
+       xkbActionMessage *      /* ev */
+#endif
+);
+
+extern void XkbSendExtensionDeviceNotify(
+#if NeedFunctionPrototypes
+       DeviceIntPtr                    /* kbd */,
+       ClientPtr                       /* client */,
+       xkbExtensionDeviceNotify *      /* ev */
+#endif
+);
+
+extern void XkbSendNotification(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* kbd */,
+    XkbChangesPtr              /* pChanges */,
+    XkbEventCausePtr           /* cause */
+#endif
+);
+
+extern void XkbProcessKeyboardEvent(
+#if NeedFunctionPrototypes
+    struct _xEvent *           /* xE */,
+    DeviceIntPtr               /* keybd */,
+    int                        /* count */
+#endif
+);
+
+extern void XkbProcessOtherEvent(
+#if NeedFunctionPrototypes
+    struct _xEvent *           /* xE */,
+    DeviceIntPtr               /* keybd */,
+    int                        /* count */
+#endif
+);
+
+extern void XkbHandleActions(
+#if NeedFunctionPrototypes
+    DeviceIntPtr               /* dev */,
+    DeviceIntPtr               /* kbd */,
+    struct _xEvent *           /* xE */,
+    int                        /* count */
+#endif
+);
+
+extern Bool XkbEnableDisableControls(
+#if NeedFunctionPrototypes
+    XkbSrvInfoPtr      /* xkbi */,
+    unsigned long      /* change */,
+    unsigned long      /* newValues */,
+    XkbChangesPtr      /* changes */,
+    XkbEventCausePtr   /* cause */
+#endif
+);
+
+extern void AccessXInit(
+#if NeedFunctionPrototypes
+    DeviceIntPtr        /* dev */
+#endif
+);
+
+extern Bool AccessXFilterPressEvent(
+#if NeedFunctionPrototypes
+    register struct _xEvent *  /* xE */,
+    register DeviceIntPtr      /* keybd */,
+    int                                /* count */
+#endif
+);
+
+extern Bool AccessXFilterReleaseEvent(
+#if NeedFunctionPrototypes
+    register struct _xEvent *  /* xE */,
+    register DeviceIntPtr      /* keybd */,
+    int                                /* count */
+#endif
+);
+
+extern void AccessXCancelRepeatKey(
+#if NeedFunctionPrototypes
+    XkbSrvInfoPtr      /* xkbi */,
+    KeyCode            /* key */
+#endif
+);
+
+extern void AccessXComputeCurveFactor(
+#if NeedFunctionPrototypes
+    XkbSrvInfoPtr      /* xkbi */,
+    XkbControlsPtr     /* ctrls */
+#endif
+);
+
+extern XkbDeviceLedInfoPtr     XkbAddDeviceLedInfo(
+#if NeedFunctionPrototypes
+       XkbDeviceInfoPtr        /* devi */,
+       unsigned int            /* ledClass */,
+       unsigned int            /* ledId */
+#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 Status XkbResizeDeviceButtonActions(
+#if NeedFunctionPrototypes
+        XkbDeviceInfoPtr        /* devi */,
+        unsigned int            /* newTotal */
+#endif
+);
+
+extern XkbInterestPtr XkbFindClientResource(
+#if NeedFunctionPrototypes
+       DevicePtr       /* inDev */,
+       ClientPtr       /* client */
+#endif
+);
+
+extern XkbInterestPtr XkbAddClientResource(
+#if NeedFunctionPrototypes
+       DevicePtr       /* inDev */,
+       ClientPtr       /* client */,
+       XID             /* id */
+#endif
+);
+
+extern int XkbRemoveClient(
+#if NeedFunctionPrototypes
+       DevicePtr       /* inDev */,
+       ClientPtr       /* client */
+#endif
+);
+
+extern int XkbRemoveResourceClient(
+#if NeedFunctionPrototypes
+       DevicePtr       /* inDev */,
+       XID             /* id */
+#endif
+);
+
+extern int XkbDDXInitDevice(
+#if NeedFunctionPrototypes
+    DeviceIntPtr        /* dev */
+#endif
+);
+
+extern int XkbDDXAccessXBeep(
+#if NeedFunctionPrototypes
+    DeviceIntPtr        /* dev */,
+    unsigned int       /* what */,
+    unsigned int       /* which */
+#endif
+);
+
+extern void XkbDDXKeyClick(
+#if NeedFunctionPrototypes
+    DeviceIntPtr       /* dev */,
+    int                        /* keycode */,
+    int                        /* synthetic */
+#endif
+);
+
+extern         int XkbDDXUsesSoftRepeat(
+#if NeedFunctionPrototypes
+    DeviceIntPtr       /* dev */
+#endif
+);
+
+extern void XkbDDXKeybdCtrlProc(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* dev */,
+       KeybdCtrl *     /* ctrl */
+#endif
+);
+
+extern void XkbDDXChangeControls(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* dev */,
+       XkbControlsPtr  /* old */,
+       XkbControlsPtr  /* new */
+#endif
+);
+
+extern void XkbDDXUpdateIndicators(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* keybd */,
+       CARD32          /* newState */
+#endif
+);
+
+extern void XkbDDXUpdateDeviceIndicators(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* dev */,
+       XkbSrvLedInfoPtr        /* sli */,
+       CARD32                  /* newState */
+#endif
+);
+
+extern void XkbDDXFakePointerButton(
+#if NeedFunctionPrototypes
+       int             /* event */,
+       int             /* button */
+#endif
+);
+
+extern void XkbDDXFakePointerMotion(
+#if NeedFunctionPrototypes
+       unsigned int    /* flags */,
+       int             /* x */,
+       int             /* y */
+#endif
+);
+
+extern void XkbDDXFakeDeviceButton(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* dev */,
+       Bool            /* press */,
+       int             /* button */
+#endif
+);
+
+extern int XkbDDXTerminateServer(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* dev */,
+       KeyCode         /* key */,
+       XkbAction *     /* act */
+#endif
+);
+
+extern int XkbDDXSwitchScreen(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* dev */,
+       KeyCode         /* key */,
+       XkbAction *     /* act */
+#endif
+);
+
+extern void XkbDisableComputedAutoRepeats(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* pXDev */,
+       unsigned int    /* key */
+#endif
+);
+
+extern void XkbSetRepeatKeys(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* pXDev */,
+       int             /* key */,
+       int             /* onoff */
+#endif
+);
+
+extern int XkbLatchModifiers(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* pXDev */,
+       CARD8           /* mask */,
+       CARD8           /* latches */
+#endif
+);
+
+extern int XkbLatchGroup(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* pXDev */,
+       int             /* group */
+#endif
+);
+
+extern void XkbClearAllLatchesAndLocks(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* dev */,
+       XkbSrvInfoPtr           /* xkbi */,
+       Bool                    /* genEv */,
+       XkbEventCausePtr        /* cause */
+#endif
+);
+
+extern void    XkbSetRulesDflts(
+#if NeedFunctionPrototypes
+       char *                  /* rulesFile */,
+       char *                  /* model */,
+       char *                  /* layout */,
+       char *                  /* variant */,
+       char *                  /* options */
+#endif
+);
+
+extern void    XkbInitDevice(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* pXDev */
+#endif
+);
+
+extern Bool    XkbInitKeyboardDeviceStruct(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* pXDev */,
+       XkbComponentNamesPtr    /* pNames */,
+       KeySymsPtr              /* pSyms */,
+       CARD8                   /* pMods */[],
+       BellProcPtr             /* bellProc */,
+       KbdCtrlProcPtr          /* ctrlProc */
+#endif
+);
+
+extern void    XkbInitDevice(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* pXDev */
+#endif
+);
+
+extern int SProcXkbDispatch(
+#if NeedFunctionPrototypes
+       ClientPtr               /* client */
+#endif
+);
+
+extern XkbGeometryPtr XkbLookupNamedGeometry(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* dev */,
+       Atom                    /* name */,
+       Bool *                  /* shouldFree */
+#endif
+);
+
+extern char *  _XkbDupString(
+#if NeedFunctionPrototypes
+       char *                  /* str */
+#endif
+);
+
+extern void    XkbConvertCase(
+#if NeedFunctionPrototypes
+       KeySym                  /* sym */,
+       KeySym *                /* lower */,
+       KeySym *                /* upper */
+#endif
+);
+
+extern Status   XkbChangeKeycodeRange( 
+#if NeedFunctionPrototypes
+       XkbDescPtr              /* xkb */,
+       int                     /* minKC */,
+       int                     /* maxKC */,
+       XkbChangesPtr           /* changes */
+#endif
+);
+
+#ifdef XKBSRV_NEED_FILE_FUNCS
+
+#include "extensions/XKMformat.h"
+#include "extensions/XKBfile.h"
+#include "extensions/XKBrules.h"
+
+#define        _XkbListKeymaps         0
+#define        _XkbListKeycodes        1
+#define        _XkbListTypes           2
+#define        _XkbListCompat          3
+#define        _XkbListSymbols         4
+#define        _XkbListGeometry        5
+#define        _XkbListNumComponents   6
+
+typedef struct _XkbSrvListInfo {
+       int             szPool;
+       int             nPool;
+       char *          pool;
+
+       int             maxRtrn;
+       int             nTotal;
+
+       char *          pattern[_XkbListNumComponents];
+       int             nFound[_XkbListNumComponents];
+} XkbSrvListInfoRec,*XkbSrvListInfoPtr;
+
+char *
+XkbGetRulesDflts(
+#if NeedFunctionPrototypes
+       XkbRF_VarDefsPtr        /* defs */
+#endif
+);
+
+extern void    XkbSetRulesUsed(
+#if NeedFunctionPrototypes
+       XkbRF_VarDefsPtr        /* defs */
+#endif
+);
+
+
+extern Status  XkbDDXList(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* dev */,
+       XkbSrvListInfoPtr       /* listing */,
+       ClientPtr               /* client */
+#endif
+);
+
+extern unsigned int XkbDDXLoadKeymapByNames(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* keybd */,
+       XkbComponentNamesPtr    /* names */,
+       unsigned int            /* want */,
+       unsigned int            /* need */,
+       XkbFileInfoPtr          /* finfoRtrn */,
+       char *                  /* keymapNameRtrn */,
+       int                     /* keymapNameRtrnLen */
+#endif
+);
+
+extern Bool XkbDDXNamesFromRules(
+#if NeedFunctionPrototypes
+       DeviceIntPtr            /* keybd */,
+       char *                  /* rules */,
+       XkbRF_VarDefsPtr        /* defs */,
+       XkbComponentNamesPtr    /* names */
+#endif
+);
+
+extern FILE *XkbDDXOpenConfigFile(
+#if NeedFunctionPrototypes
+       char *  /* mapName */,
+       char *  /* fileNameRtrn */,
+       int     /* fileNameRtrnLen */
+#endif
+);
+
+extern Bool XkbDDXApplyConfig(
+#if NeedFunctionPrototypes
+       XPointer        /* cfg_in */,
+       XkbSrvInfoPtr   /* xkbi */
+#endif
+);
+
+extern XPointer XkbDDXPreloadConfig(
+#if NeedFunctionPrototypes
+       char **                 /* rulesFileRtrn */,
+       XkbRF_VarDefsPtr        /* defs */,
+       XkbComponentNamesPtr    /* names */,
+       DeviceIntPtr            /* dev */
+#endif
+);
+
+extern int XkbDDXUsesSoftRepeat(
+#if NeedFunctionPrototypes
+       DeviceIntPtr    /* pXDev */
+#endif
+);
+
+extern void XkbDDXFakePointerMotion(
+#if NeedFunctionPrototypes
+       unsigned int            /* flags */,
+       int                     /* x */,
+       int                     /* y */
+#endif
+);
+
+extern int _XkbStrCaseCmp(
+#if NeedFunctionPrototypes
+       char *                  /* str1 */,
+       char *                  /* str2 */
+#endif
+);
+
+#endif /* XKBSRV_NEED_FILE_FUNCS */
+
+
+_XFUNCPROTOEND
+
+#define        XkbAtomGetString(d,s)   NameForAtom(s)
+
+#endif /* _XKBSRV_H_ */
+
+