github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xkbcommon/include/X11/extensions/XKBsrv.h (about)

     1  /************************************************************
     2  Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
     3  
     4  Permission to use, copy, modify, and distribute this
     5  software and its documentation for any purpose and without
     6  fee is hereby granted, provided that the above copyright
     7  notice appear in all copies and that both that copyright
     8  notice and this permission notice appear in supporting
     9  documentation, and that the name of Silicon Graphics not be
    10  used in advertising or publicity pertaining to distribution
    11  of the software without specific prior written permission.
    12  Silicon Graphics makes no representation about the suitability
    13  of this software for any purpose. It is provided "as is"
    14  without any express or implied warranty.
    15  
    16  SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
    17  SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    18  AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
    19  GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
    20  DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
    21  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
    22  OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
    23  THE USE OR PERFORMANCE OF THIS SOFTWARE.
    24  
    25  ********************************************************/
    26  
    27  #ifndef _XKBSRV_H_
    28  #define	_XKBSRV_H_
    29  
    30  #ifdef XKB_IN_SERVER
    31  #define XkbAllocClientMap		SrvXkbAllocClientMap
    32  #define XkbAllocServerMap		SrvXkbAllocServerMap
    33  #define XkbChangeTypesOfKey		SrvXkbChangeTypesOfKey
    34  #define	XkbAddKeyType			SrvXkbAddKeyType
    35  #define XkbCopyKeyType			SrvXkbCopyKeyType
    36  #define XkbCopyKeyTypes			SrvXkbCopyKeyTypes
    37  #define XkbFreeClientMap		SrvXkbFreeClientMap
    38  #define XkbFreeServerMap		SrvXkbFreeServerMap
    39  #define XkbInitCanonicalKeyTypes	SrvXkbInitCanonicalKeyTypes
    40  #define	XkbKeyTypesForCoreSymbols	SrvXkbKeyTypesForCoreSymbols
    41  #define	XkbApplyCompatMapToKey		SrvXkbApplyCompatMapToKey
    42  #define	XkbUpdateMapFromCore		SrvXkbUpdateMapFromCore
    43  #define XkbResizeKeyActions		SrvXkbResizeKeyActions
    44  #define XkbResizeKeySyms		SrvXkbResizeKeySyms
    45  #define XkbResizeKeyType		SrvXkbResizeKeyType
    46  #define XkbAllocCompatMap		SrvXkbAllocCompatMap
    47  #define XkbAllocControls		SrvXkbAllocControls
    48  #define XkbAllocIndicatorMaps		SrvXkbAllocIndicatorMaps
    49  #define XkbAllocKeyboard		SrvXkbAllocKeyboard
    50  #define XkbAllocNames			SrvXkbAllocNames
    51  #define XkbFreeCompatMap		SrvXkbFreeCompatMap
    52  #define XkbFreeControls			SrvXkbFreeControls
    53  #define XkbFreeIndicatorMaps		SrvXkbFreeIndicatorMaps
    54  #define XkbFreeKeyboard			SrvXkbFreeKeyboard
    55  #define XkbFreeNames			SrvXkbFreeNames
    56  #define	XkbAddDeviceLedInfo		SrvXkbAddDeviceLedInfo
    57  #define	XkbAllocDeviceInfo		SrvXkbAllocDeviceInfo
    58  #define	XkbFreeDeviceInfo		SrvXkbFreeDeviceInfo
    59  #define	XkbResizeDeviceButtonActions	SrvXkbResizeDeviceButtonActions
    60  #define XkbLatchModifiers		SrvXkbLatchModifiers
    61  #define XkbLatchGroup			SrvXkbLatchGroup
    62  #define XkbVirtualModsToReal		SrvXkbVirtualModsToReal
    63  #define	XkbChangeKeycodeRange		SrvXkbChangeKeycodeRange
    64  #define	XkbApplyVirtualModChanges	SrvXkbApplyVirtualModChanges
    65  #define	XkbUpdateActionVirtualMods	SrvXkbUpdateActionVirtualMods
    66  #define XkbUpdateKeyTypeVirtualMods	SrvXkbUpdateKeyTypeVirtualMods
    67  #endif
    68  
    69  #include <X11/extensions/XKBstr.h>
    70  #include <X11/extensions/XKBproto.h>
    71  #include "inputstr.h"
    72  
    73  typedef struct _XkbInterest {
    74  	DeviceIntPtr		dev;
    75  	ClientPtr		client;
    76  	XID			resource;
    77  	struct _XkbInterest *	next;
    78  	CARD16			extDevNotifyMask;
    79  	CARD16			stateNotifyMask;
    80  	CARD16			namesNotifyMask;
    81  	CARD32 			ctrlsNotifyMask;
    82  	CARD8			compatNotifyMask;
    83  	BOOL			bellNotifyMask;
    84  	BOOL			actionMessageMask;
    85  	CARD16			accessXNotifyMask;
    86  	CARD32			iStateNotifyMask;
    87  	CARD32			iMapNotifyMask;
    88  	CARD16			altSymsNotifyMask;
    89  	CARD32			autoCtrls;
    90  	CARD32			autoCtrlValues;
    91  } XkbInterestRec,*XkbInterestPtr;
    92  
    93  typedef struct _XkbRadioGroup {
    94  	CARD8		flags;
    95  	CARD8		nMembers;
    96  	CARD8		dfltDown;
    97  	CARD8		currentDown;
    98  	CARD8		members[XkbRGMaxMembers];
    99  } XkbRadioGroupRec, *XkbRadioGroupPtr;
   100  
   101  typedef struct	_XkbEventCause {
   102  	CARD8		kc;
   103  	CARD8		event;
   104  	CARD8		mjr;
   105  	CARD8		mnr;
   106  	ClientPtr	client;
   107  } XkbEventCauseRec,*XkbEventCausePtr;
   108  #define	XkbSetCauseKey(c,k,e)	{ (c)->kc= (k),(c)->event= (e),\
   109  				  (c)->mjr= (c)->mnr= 0; \
   110  				  (c)->client= NULL; }
   111  #define	XkbSetCauseReq(c,j,n,cl) { (c)->kc= (c)->event= 0,\
   112  				  (c)->mjr= (j),(c)->mnr= (n);\
   113  				  (c)->client= (cl); }
   114  #define	XkbSetCauseCoreReq(c,e,cl) XkbSetCauseReq(c,e,0,cl)
   115  #define	XkbSetCauseXkbReq(c,e,cl)  XkbSetCauseReq(c,XkbReqCode,e,cl)
   116  #define	XkbSetCauseUnknown(c)	   XkbSetCauseKey(c,0,0)
   117  
   118  #define	_OFF_TIMER		0
   119  #define	_KRG_WARN_TIMER		1
   120  #define	_KRG_TIMER		2
   121  #define	_SK_TIMEOUT_TIMER	3
   122  #define	_ALL_TIMEOUT_TIMER	4
   123  
   124  #define	_BEEP_NONE		0
   125  #define	_BEEP_FEATURE_ON	1
   126  #define	_BEEP_FEATURE_OFF	2
   127  #define	_BEEP_FEATURE_CHANGE	3
   128  #define	_BEEP_SLOW_WARN		4
   129  #define	_BEEP_SLOW_PRESS	5
   130  #define	_BEEP_SLOW_ACCEPT	6
   131  #define	_BEEP_SLOW_REJECT	7
   132  #define	_BEEP_SLOW_RELEASE	8
   133  #define	_BEEP_STICKY_LATCH	9
   134  #define	_BEEP_STICKY_LOCK	10
   135  #define	_BEEP_STICKY_UNLOCK	11
   136  #define	_BEEP_LED_ON		12
   137  #define	_BEEP_LED_OFF		13
   138  #define	_BEEP_LED_CHANGE	14
   139  #define	_BEEP_BOUNCE_REJECT	15
   140  
   141  typedef struct _XkbSrvInfo {
   142  	XkbStateRec	 prev_state;
   143  	XkbStateRec	 state;
   144  	XkbDescPtr	 desc;
   145  
   146  	DeviceIntPtr	 device;
   147  	KbdCtrlProcPtr	 kbdProc;
   148  
   149  	XkbRadioGroupPtr radioGroups;
   150  	CARD8		 nRadioGroups;
   151  	CARD8		 clearMods;
   152  	CARD8		 setMods;
   153  	INT16		 groupChange;
   154  
   155  	CARD16		 dfltPtrDelta;
   156  
   157  	double		 mouseKeysCurve;
   158  	double		 mouseKeysCurveFactor;
   159  	INT16		 mouseKeysDX;
   160  	INT16		 mouseKeysDY;
   161  	CARD8		 mouseKeysFlags;
   162  	Bool		 mouseKeysAccel;
   163  	CARD8		 mouseKeysCounter;
   164  
   165  	CARD8		 lockedPtrButtons;
   166  	CARD8		 shiftKeyCount;
   167  	KeyCode		 mouseKey;
   168  	KeyCode		 inactiveKey;
   169  	KeyCode		 slowKey;
   170  	KeyCode		 repeatKey;
   171  	CARD8		 krgTimerActive;
   172  	CARD8		 beepType;
   173  	CARD8		 beepCount;
   174  
   175  	CARD32		 flags;
   176  	CARD32		 lastPtrEventTime;
   177  	CARD32		 lastShiftEventTime;
   178  	OsTimerPtr	 beepTimer;
   179  	OsTimerPtr	 mouseKeyTimer;
   180  	OsTimerPtr	 slowKeysTimer;
   181  	OsTimerPtr	 bounceKeysTimer;
   182  	OsTimerPtr	 repeatKeyTimer;
   183  	OsTimerPtr	 krgTimer;
   184  } XkbSrvInfoRec, *XkbSrvInfoPtr;
   185  
   186  #define	XkbSLI_IsDefault	(1L<<0)
   187  #define	XkbSLI_HasOwnState	(1L<<1)
   188  
   189  typedef struct	_XkbSrvLedInfo {
   190  	CARD16			flags;
   191  	CARD16			class;
   192  	CARD16			id;
   193  	union {
   194  	    KbdFeedbackPtr	kf;
   195  	    LedFeedbackPtr	lf;
   196  	} 			fb;
   197  
   198  	CARD32			physIndicators;
   199  	CARD32			autoState;
   200  	CARD32			explicitState;
   201  	CARD32			effectiveState;
   202  
   203  	CARD32			mapsPresent;
   204  	CARD32			namesPresent;
   205  	XkbIndicatorMapPtr	maps;
   206  	Atom *			names;
   207  
   208  	CARD32			usesBase;
   209  	CARD32			usesLatched;
   210  	CARD32			usesLocked;
   211  	CARD32			usesEffective;
   212  	CARD32			usesCompat;
   213  	CARD32			usesControls;
   214  
   215  	CARD32			usedComponents;
   216  } XkbSrvLedInfoRec, *XkbSrvLedInfoPtr;
   217  
   218  /*
   219   * Settings for xkbClientFlags field (used by DIX)
   220   * These flags _must_ not overlap with XkbPCF_*
   221   */
   222  #define	_XkbClientInitialized		(1<<15)
   223  
   224  #define	_XkbWantsDetectableAutoRepeat(c)\
   225  	((c)->xkbClientFlags&XkbPCF_DetectableAutoRepeatMask)
   226  
   227  /*
   228   * Settings for flags field
   229   */
   230  #define	_XkbStateNotifyInProgress	(1<<0)
   231  
   232  typedef struct
   233  {
   234      ProcessInputProc processInputProc;
   235      ProcessInputProc realInputProc;
   236      DeviceUnwrapProc unwrapProc;
   237  } xkbDeviceInfoRec, *xkbDeviceInfoPtr;
   238  
   239  #define WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
   240  	device->public.processInputProc = proc; \
   241  	oldprocs->processInputProc = \
   242  	oldprocs->realInputProc = device->public.realInputProc; \
   243  	device->public.realInputProc = proc; \
   244  	oldprocs->unwrapProc = device->unwrapProc; \
   245  	device->unwrapProc = unwrapproc;
   246  
   247  #define COND_WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
   248  	if (device->public.processInputProc == device->public.realInputProc)\
   249  	    device->public.processInputProc = proc; \
   250  	oldprocs->processInputProc = \
   251  	oldprocs->realInputProc = device->public.realInputProc; \
   252  	device->public.realInputProc = proc; \
   253  	oldprocs->unwrapProc = device->unwrapProc; \
   254  	device->unwrapProc = unwrapproc;
   255  
   256  #define UNWRAP_PROCESS_INPUT_PROC(device, oldprocs) \
   257  	device->public.processInputProc = oldprocs->processInputProc; \
   258  	device->public.realInputProc = oldprocs->realInputProc; \
   259  	device->unwrapProc = oldprocs->unwrapProc;
   260  
   261  #define XKBDEVICEINFO(dev) ((xkbDeviceInfoPtr) (dev)->devPrivates[xkbDevicePrivateIndex].ptr)
   262  
   263  /***====================================================================***/
   264  
   265  
   266  /***====================================================================***/
   267  
   268  #define XkbAX_KRGMask	 (XkbSlowKeysMask|XkbBounceKeysMask)
   269  #define	XkbAllFilteredEventsMask \
   270  	(XkbAccessXKeysMask|XkbRepeatKeysMask|XkbMouseKeysAccelMask|XkbAX_KRGMask)
   271  
   272  /***====================================================================***/
   273  
   274  extern int	XkbReqCode;
   275  extern int	XkbEventBase;
   276  extern int	XkbKeyboardErrorCode;
   277  extern int	XkbDisableLockActions;
   278  extern char *	XkbBaseDirectory;
   279  extern char *	XkbBinDirectory;
   280  extern char *	XkbInitialMap;
   281  extern int	_XkbClientMajor;
   282  extern int	_XkbClientMinor;
   283  extern unsigned	int XkbXIUnsupported;
   284  
   285  extern char *	XkbModelUsed,*XkbLayoutUsed,*XkbVariantUsed,*XkbOptionsUsed;
   286  extern Bool	noXkbExtension;
   287  extern Bool	XkbWantRulesProp;
   288  
   289  extern pointer	XkbLastRepeatEvent;
   290  
   291  extern CARD32	xkbDebugFlags;
   292  extern CARD32	xkbDebugCtrls;
   293  
   294  #define	_XkbAlloc(s)		xalloc((s))
   295  #define	_XkbCalloc(n,s)		Xcalloc((n)*(s))
   296  #define	_XkbRealloc(o,s)	Xrealloc((o),(s))
   297  #define	_XkbTypedAlloc(t)	((t *)xalloc(sizeof(t)))
   298  #define	_XkbTypedCalloc(n,t)	((t *)Xcalloc((n)*sizeof(t)))
   299  #define	_XkbTypedRealloc(o,n,t) \
   300  	((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
   301  #define	_XkbClearElems(a,f,l,t)	bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
   302  #define	_XkbFree(p)		Xfree(p)
   303  
   304  #define	_XkbLibError(c,l,d) \
   305  	{ _XkbErrCode= (c); _XkbErrLocation= (l); _XkbErrData= (d); }
   306  #define	_XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff)))
   307  #define	_XkbErrCode3(a,b,c)	_XkbErrCode2(a,(((unsigned int)(b))<<16)|(c))
   308  #define	_XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d)))
   309  
   310  extern	int	DeviceKeyPress,DeviceKeyRelease;
   311  extern	int	DeviceButtonPress,DeviceButtonRelease;
   312  
   313  #ifdef XINPUT
   314  #define	_XkbIsPressEvent(t)	(((t)==KeyPress)||((t)==DeviceKeyPress))
   315  #define	_XkbIsReleaseEvent(t)	(((t)==KeyRelease)||((t)==DeviceKeyRelease))
   316  #else
   317  #define	_XkbIsPressEvent(t)	((t)==KeyPress)
   318  #define	_XkbIsReleaseEvent(t)	((t)==KeyRelease)
   319  #endif
   320  
   321  #define	_XkbCoreKeycodeInRange(c,k)	(((k)>=(c)->curKeySyms.minKeyCode)&&\
   322  					 ((k)<=(c)->curKeySyms.maxKeyCode))
   323  #define	_XkbCoreNumKeys(c)	((c)->curKeySyms.maxKeyCode-\
   324  				 (c)->curKeySyms.minKeyCode+1)
   325  
   326  #define	XConvertCase(s,l,u)	XkbConvertCase(s,l,u)
   327  #undef	IsKeypadKey
   328  #define	IsKeypadKey(s)		XkbKSIsKeypad(s)
   329  
   330  typedef int Status;
   331  typedef pointer XPointer;
   332  typedef struct _XDisplay Display;
   333  
   334  #ifndef True
   335  #define	True	1
   336  #define	False	0
   337  #endif
   338  
   339  #ifndef PATH_MAX
   340  #ifdef MAXPATHLEN
   341  #define	PATH_MAX MAXPATHLEN
   342  #else
   343  #define	PATH_MAX 1024
   344  #endif
   345  #endif
   346  
   347  _XFUNCPROTOBEGIN
   348  
   349  extern void XkbUseMsg(
   350      void
   351  );
   352  
   353  extern int XkbProcessArguments(
   354      int				/* argc */,
   355      char **			/* argv */,
   356      int				/* i */
   357  );
   358  
   359  extern	void	XkbSetExtension(DeviceIntPtr device, ProcessInputProc proc);
   360  
   361  extern	void	XkbFreeCompatMap(
   362      XkbDescPtr			/* xkb */,
   363      unsigned int		/* which */,
   364      Bool			/* freeMap */
   365  );
   366  
   367  extern	void XkbFreeNames(
   368  	XkbDescPtr		/* xkb */,
   369  	unsigned int		/* which */,
   370  	Bool			/* freeMap */
   371  );
   372  
   373  extern DeviceIntPtr _XkbLookupAnyDevice(
   374      int			/* id */,
   375      int *		/* why_rtrn */
   376  );
   377  
   378  extern DeviceIntPtr _XkbLookupKeyboard(
   379      int			/* id */,
   380      int *		/* why_rtrn */
   381  );
   382  
   383  extern DeviceIntPtr _XkbLookupBellDevice(
   384      int			/* id */,
   385      int *		/* why_rtrn */
   386  );
   387  
   388  extern DeviceIntPtr _XkbLookupLedDevice(
   389      int			/* id */,
   390      int *		/* why_rtrn */
   391  );
   392  
   393  extern DeviceIntPtr _XkbLookupButtonDevice(
   394      int			/* id */,
   395      int *		/* why_rtrn */
   396  );
   397  
   398  extern	XkbDescPtr XkbAllocKeyboard(
   399  	void
   400  );
   401  
   402  extern	Status XkbAllocClientMap(
   403  	XkbDescPtr		/* xkb */,
   404  	unsigned int		/* which */,
   405  	unsigned int		/* nTypes */
   406  );
   407  
   408  extern	Status XkbAllocServerMap(
   409  	XkbDescPtr		/* xkb */,
   410  	unsigned int		/* which */,
   411  	unsigned int		/* nNewActions */
   412  );
   413  
   414  extern	void	XkbFreeClientMap(
   415      XkbDescPtr			/* xkb */,
   416      unsigned int		/* what */,
   417      Bool			/* freeMap */
   418  );
   419  
   420  extern	void	XkbFreeServerMap(
   421      XkbDescPtr			/* xkb */,
   422      unsigned int		/* what */,
   423      Bool			/* freeMap */
   424  );
   425  
   426  extern	Status XkbAllocIndicatorMaps(
   427  	XkbDescPtr		/* xkb */
   428  );
   429  
   430  extern	Status	XkbAllocCompatMap(
   431      XkbDescPtr			/* xkb */,
   432      unsigned int		/* which */,
   433      unsigned int		/* nInterpret */
   434  );
   435  
   436  extern	Status XkbAllocNames(
   437  	XkbDescPtr		/* xkb */,
   438  	unsigned int		/* which */,
   439  	int			/* nTotalRG */,
   440  	int			/* nTotalAliases */
   441  );
   442  
   443  extern	Status	XkbAllocControls(
   444  	XkbDescPtr		/* xkb */,
   445  	unsigned int		/* which*/
   446  );
   447  
   448  extern	Status	XkbCopyKeyType(
   449      XkbKeyTypePtr		/* from */,
   450      XkbKeyTypePtr		/* into */
   451  );
   452  
   453  extern	Status	XkbCopyKeyTypes(
   454      XkbKeyTypePtr		/* from */,
   455      XkbKeyTypePtr		/* into */,
   456      int				/* num_types */
   457  );
   458  
   459  extern	Status	XkbResizeKeyType(
   460      XkbDescPtr		/* xkb */,
   461      int			/* type_ndx */,
   462      int			/* map_count */,
   463      Bool		/* want_preserve */,
   464      int			/* new_num_lvls */
   465  );
   466  
   467  extern	void	XkbFreeKeyboard(
   468  	XkbDescPtr		/* xkb */,
   469  	unsigned int		/* which */,
   470  	Bool			/* freeDesc */
   471  );
   472  
   473  extern  void XkbSetActionKeyMods(
   474  	XkbDescPtr		/* xkb */,
   475  	XkbAction *		/* act */,
   476  	unsigned int 		/* mods */
   477  );
   478  
   479  extern Bool XkbCheckActionVMods(
   480  	XkbDescPtr		/* xkb */,
   481  	XkbAction *		/* act */,
   482  	unsigned int 		/* changed */
   483  );
   484  
   485  extern Bool XkbApplyVModChanges(
   486      XkbSrvInfoPtr	/* xkbi */,
   487      unsigned int	/* changed */,
   488      XkbChangesPtr	/* pChanges */,
   489      unsigned int *	/* needChecksRtrn */,
   490      XkbEventCausePtr	/* cause */
   491  );
   492  
   493  extern void XkbApplyVModChangesToAllDevices(
   494      DeviceIntPtr	/* dev */,
   495      XkbDescPtr 		/* xkb */,
   496      unsigned int 	/* changed */,
   497      XkbEventCausePtr	/* cause */
   498  );
   499  
   500  extern	unsigned int XkbMaskForVMask(
   501      XkbDescPtr		/* xkb */,
   502      unsigned int	/* vmask */
   503  );
   504  
   505  extern Bool XkbVirtualModsToReal(
   506  	XkbDescPtr	/* xkb */,
   507  	unsigned int	/* virtua_mask */,
   508  	unsigned int *	/* mask_rtrn */
   509  );
   510  
   511  extern	unsigned int	XkbAdjustGroup(
   512      int			/* group */,
   513      XkbControlsPtr	/* ctrls */
   514  );
   515  
   516  extern KeySym *XkbResizeKeySyms(
   517      XkbDescPtr		/* xkb */,
   518      int 		/* key */,
   519      int 		/* needed */
   520  );
   521  
   522  extern XkbAction *XkbResizeKeyActions(
   523      XkbDescPtr		/* xkb */,
   524      int 		/* key */,
   525      int 		/* needed */
   526  );
   527  
   528  extern void XkbUpdateKeyTypesFromCore(
   529      DeviceIntPtr	/* pXDev */,
   530      KeyCode 		/* first */,
   531      CARD8 		/* num */,
   532      XkbChangesPtr	/* pChanges */
   533  );
   534  
   535  extern	void XkbUpdateDescActions(
   536      XkbDescPtr		/* xkb */,
   537      KeyCode		/* first */,
   538      CARD8		/* num */,
   539      XkbChangesPtr	/* changes */
   540  );
   541  
   542  extern void XkbUpdateActions(
   543      DeviceIntPtr	/* pXDev */,
   544      KeyCode 		/* first */,
   545      CARD8 		/* num */,
   546      XkbChangesPtr  	/* pChanges */,
   547      unsigned int *	/* needChecksRtrn */,
   548      XkbEventCausePtr	/* cause */
   549  );
   550  
   551  extern void XkbUpdateCoreDescription(
   552      DeviceIntPtr	/* keybd */,
   553      Bool		/* resize */
   554  );
   555  
   556  extern void XkbApplyMappingChange(
   557      DeviceIntPtr	/* pXDev */,
   558      CARD8 		/* request */,
   559      KeyCode 		/* firstKey */,
   560      CARD8 		/* num */,
   561      ClientPtr		/* client */
   562  );
   563  
   564  extern void XkbSetIndicators(
   565      DeviceIntPtr		/* pXDev */,
   566      CARD32			/* affect */,
   567      CARD32			/* values */,
   568      XkbEventCausePtr		/* cause */
   569  );
   570  
   571  extern void XkbUpdateIndicators(
   572      DeviceIntPtr		/* keybd */,
   573      CARD32		 	/* changed */,
   574      Bool			/* check_edevs */,
   575      XkbChangesPtr		/* pChanges */,
   576      XkbEventCausePtr		/* cause */
   577  );
   578  
   579  extern XkbSrvLedInfoPtr XkbAllocSrvLedInfo(
   580      DeviceIntPtr		/* dev */,
   581      KbdFeedbackPtr		/* kf */,
   582      LedFeedbackPtr		/* lf */,
   583      unsigned int		/* needed_parts */
   584  );
   585  
   586  extern XkbSrvLedInfoPtr XkbFindSrvLedInfo(
   587      DeviceIntPtr		/* dev */,
   588      unsigned int		/* class */,
   589      unsigned int		/* id */,
   590      unsigned int		/* needed_parts */
   591  );
   592  
   593  extern void XkbApplyLedNameChanges(
   594      DeviceIntPtr		/* dev */,
   595      XkbSrvLedInfoPtr		/* sli */,
   596      unsigned int		/* changed_names */,
   597      xkbExtensionDeviceNotify *	/* ed */,
   598      XkbChangesPtr		/* changes */,
   599      XkbEventCausePtr		/* cause */
   600  );
   601  
   602  extern void XkbApplyLedMapChanges(
   603      DeviceIntPtr		/* dev */,
   604      XkbSrvLedInfoPtr		/* sli */,
   605      unsigned int		/* changed_maps */,
   606      xkbExtensionDeviceNotify *	/* ed */,
   607      XkbChangesPtr		/* changes */,
   608      XkbEventCausePtr		/* cause */
   609  );
   610  
   611  extern void XkbApplyLedStateChanges(
   612      DeviceIntPtr		/* dev */,
   613      XkbSrvLedInfoPtr		/* sli */,
   614      unsigned int		/* changed_leds */,
   615      xkbExtensionDeviceNotify *	/* ed */,
   616      XkbChangesPtr		/* changes */,
   617      XkbEventCausePtr		/* cause */
   618  );
   619  
   620  extern void XkbUpdateLedAutoState(
   621      DeviceIntPtr		/* dev */,
   622      XkbSrvLedInfoPtr		/* sli */,
   623      unsigned int		/* maps_to_check */,
   624      xkbExtensionDeviceNotify *	/* ed */,
   625      XkbChangesPtr		/* changes */,
   626      XkbEventCausePtr		/* cause */
   627  );
   628  
   629  extern void XkbFlushLedEvents(
   630      DeviceIntPtr		/* dev */,
   631      DeviceIntPtr		/* kbd */,
   632      XkbSrvLedInfoPtr		/* sli */,
   633      xkbExtensionDeviceNotify *	/* ed */,
   634      XkbChangesPtr		/* changes */,
   635      XkbEventCausePtr		/* cause */
   636  );
   637  
   638  extern void XkbUpdateAllDeviceIndicators(
   639      XkbChangesPtr		/* changes */,
   640      XkbEventCausePtr		/* cause */
   641  );
   642  
   643  extern unsigned int XkbIndicatorsToUpdate(
   644      DeviceIntPtr		/* dev */,
   645      unsigned long		/* state_changes */,
   646      Bool			/* enabled_ctrl_changes */
   647  );
   648  
   649  extern void XkbComputeDerivedState(
   650      XkbSrvInfoPtr		/* xkbi */
   651  );
   652  
   653  extern void XkbCheckSecondaryEffects(
   654      XkbSrvInfoPtr		/* xkbi */,
   655      unsigned int		/* which */,
   656      XkbChangesPtr		/* changes */,
   657      XkbEventCausePtr		/* cause */
   658  );
   659  
   660  extern void XkbCheckIndicatorMaps(
   661      DeviceIntPtr		/* dev */,
   662      XkbSrvLedInfoPtr		/* sli */,
   663      unsigned int		/* which */
   664  );
   665  
   666  extern unsigned int XkbStateChangedFlags(
   667      XkbStatePtr			/* old */,
   668      XkbStatePtr			/* new */
   669  );
   670  
   671  extern	void XkbSendStateNotify(
   672         DeviceIntPtr	/* kbd */,
   673         xkbStateNotify *	/* pSN */
   674  );
   675  
   676  extern	void XkbSendMapNotify(
   677         DeviceIntPtr	/* kbd */,
   678         xkbMapNotify *	/* ev */
   679  );
   680  
   681  extern	int  XkbComputeControlsNotify(
   682  	DeviceIntPtr		/* kbd */,
   683  	XkbControlsPtr		/* old */,
   684  	XkbControlsPtr		/* new */,
   685  	xkbControlsNotify *	/* pCN */,
   686  	Bool			/* forceCtrlProc */
   687  );
   688  
   689  extern	void XkbSendControlsNotify(
   690         DeviceIntPtr		/* kbd */,
   691         xkbControlsNotify *	/* ev */
   692  );
   693  
   694  extern	void XkbSendCompatMapNotify(
   695  	DeviceIntPtr		/* kbd */,
   696  	xkbCompatMapNotify *	/* ev */
   697  );
   698  
   699  extern	void XkbSendIndicatorNotify(
   700         DeviceIntPtr		/* kbd */,
   701         int			/* xkbType */,
   702         xkbIndicatorNotify *	/* ev */
   703  );
   704  
   705  extern	void XkbHandleBell(
   706         BOOL		/* force */,
   707         BOOL		/* eventOnly */,
   708         DeviceIntPtr	/* kbd */,
   709         CARD8		/* percent */,
   710         pointer 		/* ctrl */,
   711         CARD8		/* class */,
   712         Atom		/* name */,
   713         WindowPtr	/* pWin */,
   714         ClientPtr	/* pClient */
   715  );
   716  
   717  extern	void XkbSendAccessXNotify(
   718         DeviceIntPtr		/* kbd */,
   719         xkbAccessXNotify *	/* pEv */
   720  );
   721  
   722  extern	void XkbSendNamesNotify(
   723         DeviceIntPtr	/* kbd */,
   724         xkbNamesNotify *	/* ev */
   725  );
   726  
   727  extern	void XkbSendCompatNotify(
   728         DeviceIntPtr		/* kbd */,
   729         xkbCompatMapNotify *	/* ev */
   730  );
   731  
   732  extern	void XkbSendActionMessage(
   733         DeviceIntPtr		/* kbd */,
   734         xkbActionMessage *	/* ev */
   735  );
   736  
   737  extern	void XkbSendExtensionDeviceNotify(
   738         DeviceIntPtr			/* kbd */,
   739         ClientPtr			/* client */,
   740         xkbExtensionDeviceNotify *	/* ev */
   741  );
   742  
   743  extern void XkbSendNotification(
   744      DeviceIntPtr		/* kbd */,
   745      XkbChangesPtr		/* pChanges */,
   746      XkbEventCausePtr		/* cause */
   747  );
   748  
   749  extern void XkbProcessKeyboardEvent(
   750      struct _xEvent * 		/* xE */,
   751      DeviceIntPtr		/* keybd */,
   752      int 			/* count */
   753  );
   754  
   755  extern void XkbProcessOtherEvent(
   756      struct _xEvent * 		/* xE */,
   757      DeviceIntPtr		/* keybd */,
   758      int 			/* count */
   759  );
   760  
   761  extern void XkbHandleActions(
   762      DeviceIntPtr		/* dev */,
   763      DeviceIntPtr		/* kbd */,
   764      struct _xEvent * 		/* xE */,
   765      int 			/* count */
   766  );
   767  
   768  extern Bool XkbEnableDisableControls(
   769      XkbSrvInfoPtr	/* xkbi */,
   770      unsigned long	/* change */,
   771      unsigned long	/* newValues */,
   772      XkbChangesPtr	/* changes */,
   773      XkbEventCausePtr	/* cause */
   774  );
   775  
   776  extern void AccessXInit(
   777      DeviceIntPtr        /* dev */
   778  );
   779  
   780  extern Bool AccessXFilterPressEvent(
   781      register struct _xEvent *	/* xE */,
   782      register DeviceIntPtr	/* keybd */,
   783      int				/* count */
   784  );
   785  
   786  extern Bool AccessXFilterReleaseEvent(
   787      register struct _xEvent *	/* xE */,
   788      register DeviceIntPtr	/* keybd */,
   789      int				/* count */
   790  );
   791  
   792  extern void AccessXCancelRepeatKey(
   793      XkbSrvInfoPtr	/* xkbi */,
   794      KeyCode		/* key */
   795  );
   796  
   797  extern void AccessXComputeCurveFactor(
   798      XkbSrvInfoPtr	/* xkbi */,
   799      XkbControlsPtr	/* ctrls */
   800  );
   801  
   802  extern	XkbDeviceLedInfoPtr	XkbAddDeviceLedInfo(
   803  	XkbDeviceInfoPtr	/* devi */,
   804  	unsigned int		/* ledClass */,
   805  	unsigned int		/* ledId */
   806  );
   807  
   808  extern	XkbDeviceInfoPtr	XkbAllocDeviceInfo(
   809  	unsigned int		/* deviceSpec */,
   810  	unsigned int		/* nButtons */,
   811  	unsigned int		/* szLeds */
   812  );
   813  
   814  extern	void XkbFreeDeviceInfo(
   815  	XkbDeviceInfoPtr	/* devi */,
   816  	unsigned int		/* which */,
   817  	Bool			/* freeDevI */
   818  );
   819  
   820  extern Status XkbResizeDeviceButtonActions(
   821  	XkbDeviceInfoPtr        /* devi */,
   822  	unsigned int            /* newTotal */
   823  );
   824  
   825  extern	XkbInterestPtr XkbFindClientResource(
   826         DevicePtr	/* inDev */,
   827         ClientPtr	/* client */
   828  );
   829  
   830  extern	XkbInterestPtr XkbAddClientResource(
   831         DevicePtr	/* inDev */,
   832         ClientPtr	/* client */,
   833         XID		/* id */
   834  );
   835  
   836  extern	int XkbRemoveClient(
   837         DevicePtr	/* inDev */,
   838         ClientPtr	/* client */
   839  );
   840  
   841  extern	int XkbRemoveResourceClient(
   842         DevicePtr	/* inDev */,
   843         XID		/* id */
   844  );
   845  
   846  extern int XkbDDXInitDevice(
   847      DeviceIntPtr        /* dev */
   848  );
   849  
   850  extern	int XkbDDXAccessXBeep(
   851      DeviceIntPtr        /* dev */,
   852      unsigned int	/* what */,
   853      unsigned int	/* which */
   854  );
   855  
   856  extern	void XkbDDXKeyClick(
   857      DeviceIntPtr	/* dev */,
   858      int			/* keycode */,
   859      int			/* synthetic */
   860  );
   861  
   862  extern 	int XkbDDXUsesSoftRepeat(
   863      DeviceIntPtr	/* dev */
   864  );
   865  
   866  extern	void XkbDDXKeybdCtrlProc(
   867  	DeviceIntPtr	/* dev */,
   868  	KeybdCtrl *	/* ctrl */
   869  );
   870  
   871  extern void XkbDDXChangeControls(
   872  	DeviceIntPtr	/* dev */,
   873  	XkbControlsPtr 	/* old */,
   874  	XkbControlsPtr 	/* new */
   875  );
   876  
   877  extern void XkbDDXUpdateIndicators(
   878  	DeviceIntPtr	/* keybd */,
   879  	CARD32		/* newState */
   880  );
   881  
   882  extern void XkbDDXUpdateDeviceIndicators(
   883  	DeviceIntPtr		/* dev */,
   884  	XkbSrvLedInfoPtr	/* sli */,
   885  	CARD32			/* newState */
   886  );
   887  
   888  extern void XkbDDXFakePointerButton(
   889  	int 		/* event */,
   890  	int		/* button */
   891  );
   892  
   893  extern void XkbDDXFakePointerMotion(
   894   	unsigned int	/* flags */,
   895  	int		/* x */,
   896  	int		/* y */
   897  );
   898  
   899  extern void XkbDDXFakeDeviceButton(
   900  	DeviceIntPtr	/* dev */,
   901  	Bool		/* press */,
   902  	int		/* button */
   903  );
   904  
   905  extern int XkbDDXTerminateServer(
   906  	DeviceIntPtr	/* dev */,
   907  	KeyCode		/* key */,
   908  	XkbAction *	/* act */
   909  );
   910  
   911  extern int XkbDDXSwitchScreen(
   912  	DeviceIntPtr	/* dev */,
   913  	KeyCode		/* key */,
   914  	XkbAction *	/* act */
   915  );
   916  
   917  extern int XkbDDXPrivate(
   918  	DeviceIntPtr	/* dev */,
   919  	KeyCode		/* key */,
   920  	XkbAction *	/* act */
   921  );
   922  
   923  extern void XkbDisableComputedAutoRepeats(
   924  	DeviceIntPtr 	/* pXDev */,
   925  	unsigned int	/* key */
   926  );
   927  
   928  extern void XkbSetRepeatKeys(
   929  	DeviceIntPtr 	/* pXDev */,
   930  	int		/* key */,
   931  	int	 	/* onoff */
   932  );
   933  
   934  extern	int XkbLatchModifiers(
   935  	DeviceIntPtr 	/* pXDev */,
   936  	CARD8 		/* mask */,
   937  	CARD8 		/* latches */
   938  );
   939  
   940  extern	int XkbLatchGroup(
   941  	DeviceIntPtr  	/* pXDev */,
   942  	int	  	/* group */
   943  );
   944  
   945  extern	void XkbClearAllLatchesAndLocks(
   946  	DeviceIntPtr		/* dev */,
   947  	XkbSrvInfoPtr		/* xkbi */,
   948  	Bool			/* genEv */,
   949  	XkbEventCausePtr	/* cause */
   950  );
   951  
   952  extern	void	XkbSetRulesDflts(
   953  	char *			/* rulesFile */,
   954  	char *			/* model */,
   955  	char *			/* layout */,
   956  	char *			/* variant */,
   957  	char *			/* options */
   958  );
   959  
   960  extern	void	XkbInitDevice(
   961  	DeviceIntPtr 	/* pXDev */
   962  );
   963  
   964  extern	Bool	XkbInitKeyboardDeviceStruct(
   965  	DeviceIntPtr 		/* pXDev */,
   966  	XkbComponentNamesPtr	/* pNames */,
   967  	KeySymsPtr		/* pSyms */,
   968  	CARD8 			/* pMods */[],
   969  	BellProcPtr		/* bellProc */,
   970  	KbdCtrlProcPtr		/* ctrlProc */
   971  );
   972  
   973  extern	int SProcXkbDispatch(
   974  	ClientPtr		/* client */
   975  );
   976  
   977  extern XkbGeometryPtr XkbLookupNamedGeometry(
   978  	DeviceIntPtr		/* dev */,
   979  	Atom			/* name */,
   980  	Bool *			/* shouldFree */
   981  );
   982  
   983  extern char *	_XkbDupString(
   984  	char *			/* str */
   985  );
   986  
   987  extern void	XkbConvertCase(
   988  	KeySym 			/* sym */,
   989  	KeySym *		/* lower */,
   990  	KeySym *		/* upper */
   991  );
   992  
   993  extern	Status	 XkbChangeKeycodeRange(
   994  	XkbDescPtr		/* xkb */,
   995  	int 			/* minKC */,
   996  	int 			/* maxKC */,
   997  	XkbChangesPtr		/* changes */
   998  );
   999  
  1000  extern int XkbFinishDeviceInit(
  1001  	DeviceIntPtr		/* pXDev */
  1002  );
  1003  
  1004  extern void XkbFreeSrvLedInfo(
  1005  	XkbSrvLedInfoPtr	/* sli */
  1006  );
  1007  
  1008  extern void XkbFreeInfo(
  1009  	XkbSrvInfoPtr		/* xkbi */
  1010  );
  1011  
  1012  extern Status XkbChangeTypesOfKey(
  1013  	XkbDescPtr		/* xkb */,
  1014  	int			/* key */,
  1015  	int			/* nGroups */,
  1016  	unsigned int		/* groups */,
  1017  	int *			/* newTypesIn */,
  1018  	XkbMapChangesPtr	/* changes */
  1019  );
  1020  
  1021  extern XkbKeyTypePtr XkbAddKeyType(
  1022  	XkbDescPtr		/* xkb */,
  1023  	Atom			/* name */,
  1024  	int			/* map_count */,
  1025  	Bool			/* want_preserve */,
  1026  	int			/* num_lvls */
  1027  );
  1028  
  1029  extern Status XkbInitCanonicalKeyTypes(
  1030  	XkbDescPtr		/* xkb */,
  1031  	unsigned int		/* which */,
  1032  	int			/* keypadVMod */
  1033  );
  1034  
  1035  extern int XkbKeyTypesForCoreSymbols(
  1036  	XkbDescPtr		/* xkb */,
  1037  	int			/* map_width */,
  1038  	KeySym *		/* core_syms */,
  1039  	unsigned int		/* protected */,
  1040  	int *			/* types_inout */,
  1041  	KeySym *		/* xkb_syms_rtrn */
  1042  );
  1043  
  1044  extern Bool XkbApplyCompatMapToKey(
  1045  	XkbDescPtr		/* xkb */,
  1046  	KeyCode			/* key */,
  1047  	XkbChangesPtr		/* changes */
  1048  );
  1049  
  1050  extern Bool XkbUpdateMapFromCore(
  1051  	XkbDescPtr		/* xkb */,
  1052  	KeyCode			/* first_key */,
  1053  	int			/* num_keys */,
  1054  	int			/* map_width */,
  1055  	KeySym *		/* core_keysyms */,
  1056  	XkbChangesPtr		/* changes */
  1057  );
  1058  
  1059  extern void XkbFreeControls(
  1060  	XkbDescPtr		/* xkb */,
  1061  	unsigned int		/* which */,
  1062  	Bool			/* freeMap */
  1063  );
  1064  
  1065  extern void XkbFreeIndicatorMaps(
  1066  	XkbDescPtr		/* xkb */
  1067  );
  1068  
  1069  extern Bool XkbApplyVirtualModChanges(
  1070  	XkbDescPtr		/* xkb */,
  1071  	unsigned int		/* changed */,
  1072  	XkbChangesPtr		/* changes */
  1073  );
  1074  
  1075  extern Bool XkbUpdateActionVirtualMods(
  1076  	XkbDescPtr		/* xkb */,
  1077  	XkbAction *		/* act */,
  1078  	unsigned int		/* changed */
  1079  );
  1080  
  1081  extern void XkbUpdateKeyTypeVirtualMods(
  1082  	XkbDescPtr		/* xkb */,
  1083  	XkbKeyTypePtr		/* type */,
  1084  	unsigned int		/* changed */,
  1085  	XkbChangesPtr		/* changes */
  1086  );
  1087  
  1088  extern void XkbSendNewKeyboardNotify(
  1089  	DeviceIntPtr		/* kbd */,
  1090  	xkbNewKeyboardNotify *	/* pNKN */
  1091  );
  1092  
  1093  #ifdef XKBSRV_NEED_FILE_FUNCS
  1094  
  1095  #include <X11/extensions/XKMformat.h>
  1096  #include <X11/extensions/XKBfile.h>
  1097  #include <X11/extensions/XKBrules.h>
  1098  
  1099  #define	_XkbListKeymaps		0
  1100  #define	_XkbListKeycodes	1
  1101  #define	_XkbListTypes		2
  1102  #define	_XkbListCompat		3
  1103  #define	_XkbListSymbols		4
  1104  #define	_XkbListGeometry	5
  1105  #define	_XkbListNumComponents	6
  1106  
  1107  typedef struct _XkbSrvListInfo {
  1108  	int		szPool;
  1109  	int		nPool;
  1110  	char *		pool;
  1111  
  1112  	int		maxRtrn;
  1113  	int		nTotal;
  1114  
  1115  	char *		pattern[_XkbListNumComponents];
  1116  	int		nFound[_XkbListNumComponents];
  1117  } XkbSrvListInfoRec,*XkbSrvListInfoPtr;
  1118  
  1119  char *
  1120  XkbGetRulesDflts(
  1121  	XkbRF_VarDefsPtr	/* defs */
  1122  );
  1123  
  1124  extern void	XkbSetRulesUsed(
  1125  	XkbRF_VarDefsPtr	/* defs */
  1126  );
  1127  
  1128  
  1129  extern	Status	XkbDDXList(
  1130  	DeviceIntPtr		/* dev */,
  1131  	XkbSrvListInfoPtr	/* listing */,
  1132  	ClientPtr		/* client */
  1133  );
  1134  
  1135  extern	unsigned int XkbDDXLoadKeymapByNames(
  1136  	DeviceIntPtr		/* keybd */,
  1137  	XkbComponentNamesPtr	/* names */,
  1138  	unsigned int		/* want */,
  1139  	unsigned int		/* need */,
  1140  	XkbFileInfoPtr		/* finfoRtrn */,
  1141  	char *			/* keymapNameRtrn */,
  1142  	int 			/* keymapNameRtrnLen */
  1143  );
  1144  
  1145  extern	Bool XkbDDXNamesFromRules(
  1146  	DeviceIntPtr		/* keybd */,
  1147  	char *			/* rules */,
  1148  	XkbRF_VarDefsPtr	/* defs */,
  1149  	XkbComponentNamesPtr	/* names */
  1150  );
  1151  
  1152  extern	FILE *XkbDDXOpenConfigFile(
  1153  	char *	/* mapName */,
  1154  	char *	/* fileNameRtrn */,
  1155  	int	/* fileNameRtrnLen */
  1156  );
  1157  
  1158  extern	Bool XkbDDXApplyConfig(
  1159  	XPointer	/* cfg_in */,
  1160  	XkbSrvInfoPtr	/* xkbi */
  1161  );
  1162  
  1163  extern XPointer XkbDDXPreloadConfig(
  1164  	char **			/* rulesFileRtrn */,
  1165  	XkbRF_VarDefsPtr	/* defs */,
  1166  	XkbComponentNamesPtr	/* names */,
  1167  	DeviceIntPtr		/* dev */
  1168  );
  1169  
  1170  extern	int _XkbStrCaseCmp(
  1171  	char *			/* str1 */,
  1172  	char *			/* str2 */
  1173  );
  1174  
  1175  #endif /* XKBSRV_NEED_FILE_FUNCS */
  1176  
  1177  
  1178  _XFUNCPROTOEND
  1179  
  1180  #define	XkbAtomGetString(d,s)	NameForAtom(s)
  1181  
  1182  #endif /* _XKBSRV_H_ */
  1183  
  1184