xkbsrv.h revision 6747b715
105b261ecSmrg/************************************************************
205b261ecSmrgCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
305b261ecSmrg
405b261ecSmrgPermission to use, copy, modify, and distribute this
505b261ecSmrgsoftware and its documentation for any purpose and without
605b261ecSmrgfee is hereby granted, provided that the above copyright
705b261ecSmrgnotice appear in all copies and that both that copyright
805b261ecSmrgnotice and this permission notice appear in supporting
905b261ecSmrgdocumentation, and that the name of Silicon Graphics not be
1005b261ecSmrgused in advertising or publicity pertaining to distribution
1105b261ecSmrgof the software without specific prior written permission.
1205b261ecSmrgSilicon Graphics makes no representation about the suitability
1305b261ecSmrgof this software for any purpose. It is provided "as is"
1405b261ecSmrgwithout any express or implied warranty.
1505b261ecSmrg
1605b261ecSmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
1705b261ecSmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1805b261ecSmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
1905b261ecSmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
2005b261ecSmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
2105b261ecSmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
2205b261ecSmrgOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
2305b261ecSmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE.
2405b261ecSmrg
2505b261ecSmrg********************************************************/
2605b261ecSmrg
2705b261ecSmrg#ifndef _XKBSRV_H_
2805b261ecSmrg#define	_XKBSRV_H_
2905b261ecSmrg
3005b261ecSmrg#define XkbAllocClientMap		SrvXkbAllocClientMap
3105b261ecSmrg#define XkbAllocServerMap		SrvXkbAllocServerMap
3205b261ecSmrg#define XkbChangeTypesOfKey		SrvXkbChangeTypesOfKey
3305b261ecSmrg#define XkbCopyKeyTypes			SrvXkbCopyKeyTypes
3405b261ecSmrg#define XkbFreeClientMap		SrvXkbFreeClientMap
3505b261ecSmrg#define XkbFreeServerMap		SrvXkbFreeServerMap
3605b261ecSmrg#define	XkbKeyTypesForCoreSymbols	SrvXkbKeyTypesForCoreSymbols
3705b261ecSmrg#define	XkbApplyCompatMapToKey		SrvXkbApplyCompatMapToKey
3805b261ecSmrg#define XkbResizeKeyActions		SrvXkbResizeKeyActions
3905b261ecSmrg#define XkbResizeKeySyms		SrvXkbResizeKeySyms
4005b261ecSmrg#define XkbResizeKeyType		SrvXkbResizeKeyType
4105b261ecSmrg#define XkbAllocCompatMap		SrvXkbAllocCompatMap
4205b261ecSmrg#define XkbAllocControls		SrvXkbAllocControls
4305b261ecSmrg#define XkbAllocIndicatorMaps		SrvXkbAllocIndicatorMaps
4405b261ecSmrg#define XkbAllocKeyboard		SrvXkbAllocKeyboard
4505b261ecSmrg#define XkbAllocNames			SrvXkbAllocNames
4605b261ecSmrg#define XkbFreeCompatMap		SrvXkbFreeCompatMap
4705b261ecSmrg#define XkbFreeKeyboard			SrvXkbFreeKeyboard
4805b261ecSmrg#define XkbFreeNames			SrvXkbFreeNames
4905b261ecSmrg#define XkbLatchModifiers		SrvXkbLatchModifiers
5005b261ecSmrg#define XkbLatchGroup			SrvXkbLatchGroup
5105b261ecSmrg#define XkbVirtualModsToReal		SrvXkbVirtualModsToReal
5205b261ecSmrg#define	XkbChangeKeycodeRange		SrvXkbChangeKeycodeRange
5305b261ecSmrg#define	XkbApplyVirtualModChanges	SrvXkbApplyVirtualModChanges
5405b261ecSmrg
5505b261ecSmrg#include <X11/extensions/XKBproto.h>
564642e01fSmrg#include "xkbstr.h"
576747b715Smrg#include "xkbrules.h"
5805b261ecSmrg#include "inputstr.h"
596747b715Smrg#include "events.h"
6005b261ecSmrg
6105b261ecSmrgtypedef struct _XkbInterest {
6205b261ecSmrg	DeviceIntPtr		dev;
6305b261ecSmrg	ClientPtr		client;
6405b261ecSmrg	XID			resource;
6505b261ecSmrg	struct _XkbInterest *	next;
6605b261ecSmrg	CARD16			extDevNotifyMask;
6705b261ecSmrg	CARD16			stateNotifyMask;
6805b261ecSmrg	CARD16			namesNotifyMask;
6905b261ecSmrg	CARD32 			ctrlsNotifyMask;
7005b261ecSmrg	CARD8			compatNotifyMask;
7105b261ecSmrg	BOOL			bellNotifyMask;
7205b261ecSmrg	BOOL			actionMessageMask;
7305b261ecSmrg	CARD16			accessXNotifyMask;
7405b261ecSmrg	CARD32			iStateNotifyMask;
7505b261ecSmrg	CARD32			iMapNotifyMask;
7605b261ecSmrg	CARD16			altSymsNotifyMask;
7705b261ecSmrg	CARD32			autoCtrls;
7805b261ecSmrg	CARD32			autoCtrlValues;
7905b261ecSmrg} XkbInterestRec,*XkbInterestPtr;
8005b261ecSmrg
8105b261ecSmrgtypedef struct _XkbRadioGroup {
8205b261ecSmrg	CARD8		flags;
8305b261ecSmrg	CARD8		nMembers;
8405b261ecSmrg	CARD8		dfltDown;
8505b261ecSmrg	CARD8		currentDown;
8605b261ecSmrg	CARD8		members[XkbRGMaxMembers];
8705b261ecSmrg} XkbRadioGroupRec, *XkbRadioGroupPtr;
8805b261ecSmrg
8905b261ecSmrgtypedef struct	_XkbEventCause {
9005b261ecSmrg	CARD8		kc;
9105b261ecSmrg	CARD8		event;
9205b261ecSmrg	CARD8		mjr;
9305b261ecSmrg	CARD8		mnr;
9405b261ecSmrg	ClientPtr	client;
9505b261ecSmrg} XkbEventCauseRec,*XkbEventCausePtr;
9605b261ecSmrg#define	XkbSetCauseKey(c,k,e)	{ (c)->kc= (k),(c)->event= (e),\
9705b261ecSmrg				  (c)->mjr= (c)->mnr= 0; \
9805b261ecSmrg				  (c)->client= NULL; }
9905b261ecSmrg#define	XkbSetCauseReq(c,j,n,cl) { (c)->kc= (c)->event= 0,\
10005b261ecSmrg				  (c)->mjr= (j),(c)->mnr= (n);\
10105b261ecSmrg				  (c)->client= (cl); }
10205b261ecSmrg#define	XkbSetCauseCoreReq(c,e,cl) XkbSetCauseReq(c,e,0,cl)
10305b261ecSmrg#define	XkbSetCauseXkbReq(c,e,cl)  XkbSetCauseReq(c,XkbReqCode,e,cl)
10405b261ecSmrg#define	XkbSetCauseUnknown(c)	   XkbSetCauseKey(c,0,0)
10505b261ecSmrg
10605b261ecSmrg#define	_OFF_TIMER		0
10705b261ecSmrg#define	_KRG_WARN_TIMER		1
10805b261ecSmrg#define	_KRG_TIMER		2
10905b261ecSmrg#define	_SK_TIMEOUT_TIMER	3
11005b261ecSmrg#define	_ALL_TIMEOUT_TIMER	4
11105b261ecSmrg
11205b261ecSmrg#define	_BEEP_NONE		0
11305b261ecSmrg#define	_BEEP_FEATURE_ON	1
11405b261ecSmrg#define	_BEEP_FEATURE_OFF	2
11505b261ecSmrg#define	_BEEP_FEATURE_CHANGE	3
11605b261ecSmrg#define	_BEEP_SLOW_WARN		4
11705b261ecSmrg#define	_BEEP_SLOW_PRESS	5
11805b261ecSmrg#define	_BEEP_SLOW_ACCEPT	6
11905b261ecSmrg#define	_BEEP_SLOW_REJECT	7
12005b261ecSmrg#define	_BEEP_SLOW_RELEASE	8
12105b261ecSmrg#define	_BEEP_STICKY_LATCH	9
12205b261ecSmrg#define	_BEEP_STICKY_LOCK	10
12305b261ecSmrg#define	_BEEP_STICKY_UNLOCK	11
12405b261ecSmrg#define	_BEEP_LED_ON		12
12505b261ecSmrg#define	_BEEP_LED_OFF		13
12605b261ecSmrg#define	_BEEP_LED_CHANGE	14
12705b261ecSmrg#define	_BEEP_BOUNCE_REJECT	15
12805b261ecSmrg
12905b261ecSmrgtypedef struct _XkbFilter {
13005b261ecSmrg	CARD16			  keycode;
13105b261ecSmrg	CARD8			  what;
13205b261ecSmrg	CARD8			  active;
13305b261ecSmrg	CARD8			  filterOthers;
13405b261ecSmrg	CARD32			  priv;
13505b261ecSmrg	XkbAction		  upAction;
13605b261ecSmrg	int			(*filter)(
13705b261ecSmrg					struct _XkbSrvInfo* 	/* xkbi */,
13805b261ecSmrg					struct _XkbFilter *	/* filter */,
13905b261ecSmrg					unsigned		/* keycode */,
14005b261ecSmrg					XkbAction *		/* action */
14105b261ecSmrg				  );
14205b261ecSmrg	struct _XkbFilter	 *next;
14305b261ecSmrg} XkbFilterRec,*XkbFilterPtr;
14405b261ecSmrg
14505b261ecSmrgtypedef struct _XkbSrvInfo {
14605b261ecSmrg	XkbStateRec	 prev_state;
14705b261ecSmrg	XkbStateRec	 state;
14805b261ecSmrg	XkbDescPtr	 desc;
14905b261ecSmrg
15005b261ecSmrg	DeviceIntPtr	 device;
15105b261ecSmrg	KbdCtrlProcPtr	 kbdProc;
15205b261ecSmrg
15305b261ecSmrg	XkbRadioGroupPtr radioGroups;
15405b261ecSmrg	CARD8		 nRadioGroups;
15505b261ecSmrg	CARD8		 clearMods;
15605b261ecSmrg	CARD8		 setMods;
15705b261ecSmrg	INT16		 groupChange;
15805b261ecSmrg
15905b261ecSmrg	CARD16		 dfltPtrDelta;
16005b261ecSmrg
16105b261ecSmrg	double		 mouseKeysCurve;
16205b261ecSmrg	double		 mouseKeysCurveFactor;
16305b261ecSmrg	INT16		 mouseKeysDX;
16405b261ecSmrg	INT16		 mouseKeysDY;
16505b261ecSmrg	CARD8		 mouseKeysFlags;
16605b261ecSmrg	Bool		 mouseKeysAccel;
16705b261ecSmrg	CARD8		 mouseKeysCounter;
16805b261ecSmrg
16905b261ecSmrg	CARD8		 lockedPtrButtons;
17005b261ecSmrg	CARD8		 shiftKeyCount;
17105b261ecSmrg	KeyCode		 mouseKey;
17205b261ecSmrg	KeyCode		 inactiveKey;
17305b261ecSmrg	KeyCode		 slowKey;
17405b261ecSmrg	KeyCode		 repeatKey;
17505b261ecSmrg	CARD8		 krgTimerActive;
17605b261ecSmrg	CARD8		 beepType;
17705b261ecSmrg	CARD8		 beepCount;
17805b261ecSmrg
17905b261ecSmrg	CARD32		 flags;
18005b261ecSmrg	CARD32		 lastPtrEventTime;
18105b261ecSmrg	CARD32		 lastShiftEventTime;
18205b261ecSmrg	OsTimerPtr	 beepTimer;
18305b261ecSmrg	OsTimerPtr	 mouseKeyTimer;
18405b261ecSmrg	OsTimerPtr	 slowKeysTimer;
18505b261ecSmrg	OsTimerPtr	 bounceKeysTimer;
18605b261ecSmrg	OsTimerPtr	 repeatKeyTimer;
18705b261ecSmrg	OsTimerPtr	 krgTimer;
18805b261ecSmrg
18905b261ecSmrg	int		 szFilters;
19005b261ecSmrg	XkbFilterPtr	 filters;
19105b261ecSmrg} XkbSrvInfoRec, *XkbSrvInfoPtr;
19205b261ecSmrg
19305b261ecSmrg#define	XkbSLI_IsDefault	(1L<<0)
19405b261ecSmrg#define	XkbSLI_HasOwnState	(1L<<1)
19505b261ecSmrg
19605b261ecSmrgtypedef struct	_XkbSrvLedInfo {
19705b261ecSmrg	CARD16			flags;
19805b261ecSmrg	CARD16			class;
19905b261ecSmrg	CARD16			id;
20005b261ecSmrg	union {
20105b261ecSmrg	    KbdFeedbackPtr	kf;
20205b261ecSmrg	    LedFeedbackPtr	lf;
20305b261ecSmrg	} 			fb;
20405b261ecSmrg
20505b261ecSmrg	CARD32			physIndicators;
20605b261ecSmrg	CARD32			autoState;
20705b261ecSmrg	CARD32			explicitState;
20805b261ecSmrg	CARD32			effectiveState;
20905b261ecSmrg
21005b261ecSmrg	CARD32			mapsPresent;
21105b261ecSmrg	CARD32			namesPresent;
21205b261ecSmrg	XkbIndicatorMapPtr	maps;
21305b261ecSmrg	Atom *			names;
21405b261ecSmrg
21505b261ecSmrg	CARD32			usesBase;
21605b261ecSmrg	CARD32			usesLatched;
21705b261ecSmrg	CARD32			usesLocked;
21805b261ecSmrg	CARD32			usesEffective;
21905b261ecSmrg	CARD32			usesCompat;
22005b261ecSmrg	CARD32			usesControls;
22105b261ecSmrg
22205b261ecSmrg	CARD32			usedComponents;
22305b261ecSmrg} XkbSrvLedInfoRec, *XkbSrvLedInfoPtr;
22405b261ecSmrg
22505b261ecSmrg/*
22605b261ecSmrg * Settings for xkbClientFlags field (used by DIX)
22705b261ecSmrg * These flags _must_ not overlap with XkbPCF_*
22805b261ecSmrg */
22905b261ecSmrg#define	_XkbClientInitialized		(1<<15)
23005b261ecSmrg
23105b261ecSmrg#define	_XkbWantsDetectableAutoRepeat(c)\
23205b261ecSmrg	((c)->xkbClientFlags&XkbPCF_DetectableAutoRepeatMask)
23305b261ecSmrg
23405b261ecSmrg/*
23505b261ecSmrg * Settings for flags field
23605b261ecSmrg */
23705b261ecSmrg#define	_XkbStateNotifyInProgress	(1<<0)
23805b261ecSmrg
23905b261ecSmrgtypedef struct
24005b261ecSmrg{
24105b261ecSmrg    ProcessInputProc processInputProc;
24205b261ecSmrg    /* If processInputProc is set to something different than realInputProc,
24305b261ecSmrg     * UNWRAP and COND_WRAP will not touch processInputProc and update only
24405b261ecSmrg     * realInputProc.  This ensures that
24505b261ecSmrg     *   processInputProc == (frozen ? EnqueueEvent : realInputProc)
24605b261ecSmrg     *
24705b261ecSmrg     * WRAP_PROCESS_INPUT_PROC should only be called during initialization,
24805b261ecSmrg     * since it may destroy this invariant.
24905b261ecSmrg     */
25005b261ecSmrg    ProcessInputProc realInputProc;
25105b261ecSmrg    DeviceUnwrapProc unwrapProc;
25205b261ecSmrg} xkbDeviceInfoRec, *xkbDeviceInfoPtr;
25305b261ecSmrg
25405b261ecSmrg#define WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
25505b261ecSmrg	device->public.processInputProc = proc; \
25605b261ecSmrg	oldprocs->processInputProc = \
25705b261ecSmrg	oldprocs->realInputProc = device->public.realInputProc; \
25805b261ecSmrg	device->public.realInputProc = proc; \
25905b261ecSmrg	oldprocs->unwrapProc = device->unwrapProc; \
26005b261ecSmrg	device->unwrapProc = unwrapproc;
26105b261ecSmrg
26205b261ecSmrg#define COND_WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
26305b261ecSmrg	if (device->public.processInputProc == device->public.realInputProc)\
26405b261ecSmrg	    device->public.processInputProc = proc; \
26505b261ecSmrg	oldprocs->processInputProc = \
26605b261ecSmrg	oldprocs->realInputProc = device->public.realInputProc; \
26705b261ecSmrg	device->public.realInputProc = proc; \
26805b261ecSmrg	oldprocs->unwrapProc = device->unwrapProc; \
26905b261ecSmrg	device->unwrapProc = unwrapproc;
27005b261ecSmrg
27105b261ecSmrg#define UNWRAP_PROCESS_INPUT_PROC(device, oldprocs, backupproc) \
27205b261ecSmrg        backupproc = device->public.realInputProc; \
27305b261ecSmrg	if (device->public.processInputProc == device->public.realInputProc)\
27405b261ecSmrg	    device->public.processInputProc = oldprocs->realInputProc; \
27505b261ecSmrg	device->public.realInputProc = oldprocs->realInputProc; \
27605b261ecSmrg	device->unwrapProc = oldprocs->unwrapProc;
27705b261ecSmrg
2786747b715Smrgextern _X_EXPORT DevPrivateKeyRec xkbDevicePrivateKeyRec;
2796747b715Smrg#define xkbDevicePrivateKey (&xkbDevicePrivateKeyRec)
2806747b715Smrg
2814642e01fSmrg#define XKBDEVICEINFO(dev) ((xkbDeviceInfoPtr)dixLookupPrivate(&(dev)->devPrivates, xkbDevicePrivateKey))
28205b261ecSmrg
28305b261ecSmrgextern void xkbUnwrapProc(DeviceIntPtr, DeviceHandleProc, pointer);
28405b261ecSmrg
28505b261ecSmrg/***====================================================================***/
28605b261ecSmrg
28705b261ecSmrg
28805b261ecSmrg/***====================================================================***/
28905b261ecSmrg
29005b261ecSmrg#define XkbAX_KRGMask	 (XkbSlowKeysMask|XkbBounceKeysMask)
29105b261ecSmrg#define	XkbAllFilteredEventsMask \
29205b261ecSmrg	(XkbAccessXKeysMask|XkbRepeatKeysMask|XkbMouseKeysAccelMask|XkbAX_KRGMask)
29305b261ecSmrg
29405b261ecSmrg/***====================================================================***/
29505b261ecSmrg
2966747b715Smrgextern _X_EXPORT int	XkbReqCode;
2976747b715Smrgextern _X_EXPORT int	XkbEventBase;
2986747b715Smrgextern _X_EXPORT int	XkbKeyboardErrorCode;
2996747b715Smrgextern _X_EXPORT char *	XkbBaseDirectory;
3006747b715Smrgextern _X_EXPORT char *	XkbBinDirectory;
30105b261ecSmrg
3026747b715Smrgextern _X_EXPORT CARD32	xkbDebugFlags;
30305b261ecSmrg
3044642e01fSmrg#define	_XkbLibError(c,l,d) /* Epoch fail */
30505b261ecSmrg#define	_XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff)))
30605b261ecSmrg#define	_XkbErrCode3(a,b,c)	_XkbErrCode2(a,(((unsigned int)(b))<<16)|(c))
30705b261ecSmrg#define	_XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d)))
30805b261ecSmrg
3096747b715Smrgextern	_X_EXPORT int	DeviceKeyPress,DeviceKeyRelease,DeviceMotionNotify;
3106747b715Smrgextern	_X_EXPORT int	DeviceButtonPress,DeviceButtonRelease;
31105b261ecSmrg
31205b261ecSmrg#define	Status		int
31305b261ecSmrg
3146747b715Smrgextern _X_EXPORT void XkbUseMsg(
31505b261ecSmrg    void
31605b261ecSmrg);
31705b261ecSmrg
3186747b715Smrgextern _X_EXPORT int XkbProcessArguments(
31905b261ecSmrg    int				/* argc */,
32005b261ecSmrg    char **			/* argv */,
32105b261ecSmrg    int				/* i */
32205b261ecSmrg);
32305b261ecSmrg
3246747b715Smrgextern _X_EXPORT Bool   XkbInitPrivates(void);
3256747b715Smrg
3266747b715Smrgextern _X_EXPORT void	XkbSetExtension(DeviceIntPtr device, ProcessInputProc proc);
32705b261ecSmrg
3286747b715Smrgextern _X_EXPORT void	XkbFreeCompatMap(
32905b261ecSmrg    XkbDescPtr			/* xkb */,
33005b261ecSmrg    unsigned int		/* which */,
33105b261ecSmrg    Bool			/* freeMap */
33205b261ecSmrg);
33305b261ecSmrg
3346747b715Smrgextern _X_EXPORT void XkbFreeNames(
33505b261ecSmrg	XkbDescPtr		/* xkb */,
33605b261ecSmrg	unsigned int		/* which */,
33705b261ecSmrg	Bool			/* freeMap */
33805b261ecSmrg);
33905b261ecSmrg
3406747b715Smrgextern _X_EXPORT int _XkbLookupAnyDevice(
3414642e01fSmrg    DeviceIntPtr *pDev,
3424642e01fSmrg    int id,
3434642e01fSmrg    ClientPtr client,
3444642e01fSmrg    Mask access_mode,
3454642e01fSmrg    int *xkb_err
34605b261ecSmrg);
34705b261ecSmrg
3486747b715Smrgextern _X_EXPORT int _XkbLookupKeyboard(
3494642e01fSmrg    DeviceIntPtr *pDev,
3504642e01fSmrg    int id,
3514642e01fSmrg    ClientPtr client,
3524642e01fSmrg    Mask access_mode,
3534642e01fSmrg    int *xkb_err
35405b261ecSmrg);
35505b261ecSmrg
3566747b715Smrgextern _X_EXPORT int _XkbLookupBellDevice(
3574642e01fSmrg    DeviceIntPtr *pDev,
3584642e01fSmrg    int id,
3594642e01fSmrg    ClientPtr client,
3604642e01fSmrg    Mask access_mode,
3614642e01fSmrg    int *xkb_err
36205b261ecSmrg);
36305b261ecSmrg
3646747b715Smrgextern _X_EXPORT int _XkbLookupLedDevice(
3654642e01fSmrg    DeviceIntPtr *pDev,
3664642e01fSmrg    int id,
3674642e01fSmrg    ClientPtr client,
3684642e01fSmrg    Mask access_mode,
3694642e01fSmrg    int *xkb_err
37005b261ecSmrg);
37105b261ecSmrg
3726747b715Smrgextern _X_EXPORT int _XkbLookupButtonDevice(
3734642e01fSmrg    DeviceIntPtr *pDev,
3744642e01fSmrg    int id,
3754642e01fSmrg    ClientPtr client,
3764642e01fSmrg    Mask access_mode,
3774642e01fSmrg    int *xkb_err
37805b261ecSmrg);
37905b261ecSmrg
3806747b715Smrgextern _X_EXPORT XkbDescPtr XkbAllocKeyboard(
38105b261ecSmrg	void
38205b261ecSmrg);
38305b261ecSmrg
3846747b715Smrgextern _X_EXPORT Status XkbAllocClientMap(
38505b261ecSmrg	XkbDescPtr		/* xkb */,
38605b261ecSmrg	unsigned int		/* which */,
38705b261ecSmrg	unsigned int		/* nTypes */
38805b261ecSmrg);
38905b261ecSmrg
3906747b715Smrgextern _X_EXPORT Status XkbAllocServerMap(
39105b261ecSmrg	XkbDescPtr		/* xkb */,
39205b261ecSmrg	unsigned int		/* which */,
39305b261ecSmrg	unsigned int		/* nNewActions */
39405b261ecSmrg);
39505b261ecSmrg
3966747b715Smrgextern _X_EXPORT void	XkbFreeClientMap(
39705b261ecSmrg    XkbDescPtr			/* xkb */,
39805b261ecSmrg    unsigned int		/* what */,
39905b261ecSmrg    Bool			/* freeMap */
40005b261ecSmrg);
40105b261ecSmrg
4026747b715Smrgextern _X_EXPORT void	XkbFreeServerMap(
40305b261ecSmrg    XkbDescPtr			/* xkb */,
40405b261ecSmrg    unsigned int		/* what */,
40505b261ecSmrg    Bool			/* freeMap */
40605b261ecSmrg);
40705b261ecSmrg
4086747b715Smrgextern _X_EXPORT Status XkbAllocIndicatorMaps(
40905b261ecSmrg	XkbDescPtr		/* xkb */
41005b261ecSmrg);
41105b261ecSmrg
4126747b715Smrgextern _X_EXPORT Status	XkbAllocCompatMap(
41305b261ecSmrg    XkbDescPtr			/* xkb */,
41405b261ecSmrg    unsigned int		/* which */,
41505b261ecSmrg    unsigned int		/* nInterpret */
41605b261ecSmrg);
41705b261ecSmrg
4186747b715Smrgextern _X_EXPORT Status XkbAllocNames(
41905b261ecSmrg	XkbDescPtr		/* xkb */,
42005b261ecSmrg	unsigned int		/* which */,
42105b261ecSmrg	int			/* nTotalRG */,
42205b261ecSmrg	int			/* nTotalAliases */
42305b261ecSmrg);
42405b261ecSmrg
4256747b715Smrgextern _X_EXPORT Status	XkbAllocControls(
42605b261ecSmrg	XkbDescPtr		/* xkb */,
42705b261ecSmrg	unsigned int		/* which*/
42805b261ecSmrg);
42905b261ecSmrg
4306747b715Smrgextern _X_EXPORT Status	XkbCopyKeyTypes(
43105b261ecSmrg    XkbKeyTypePtr		/* from */,
43205b261ecSmrg    XkbKeyTypePtr		/* into */,
43305b261ecSmrg    int				/* num_types */
43405b261ecSmrg);
43505b261ecSmrg
4366747b715Smrgextern _X_EXPORT Status	XkbResizeKeyType(
43705b261ecSmrg    XkbDescPtr		/* xkb */,
43805b261ecSmrg    int			/* type_ndx */,
43905b261ecSmrg    int			/* map_count */,
44005b261ecSmrg    Bool		/* want_preserve */,
44105b261ecSmrg    int			/* new_num_lvls */
44205b261ecSmrg);
44305b261ecSmrg
4446747b715Smrgextern _X_EXPORT void	XkbFreeKeyboard(
44505b261ecSmrg	XkbDescPtr		/* xkb */,
44605b261ecSmrg	unsigned int		/* which */,
44705b261ecSmrg	Bool			/* freeDesc */
44805b261ecSmrg);
44905b261ecSmrg
4506747b715Smrgextern _X_EXPORT  void XkbSetActionKeyMods(
45105b261ecSmrg	XkbDescPtr		/* xkb */,
45205b261ecSmrg	XkbAction *		/* act */,
45305b261ecSmrg	unsigned int 		/* mods */
45405b261ecSmrg);
45505b261ecSmrg
4566747b715Smrgextern _X_EXPORT unsigned int XkbMaskForVMask(
45705b261ecSmrg    XkbDescPtr		/* xkb */,
45805b261ecSmrg    unsigned int	/* vmask */
45905b261ecSmrg);
46005b261ecSmrg
4616747b715Smrgextern _X_EXPORT Bool XkbVirtualModsToReal(
46205b261ecSmrg	XkbDescPtr	/* xkb */,
46305b261ecSmrg	unsigned int	/* virtua_mask */,
46405b261ecSmrg	unsigned int *	/* mask_rtrn */
46505b261ecSmrg);
46605b261ecSmrg
4676747b715Smrgextern _X_EXPORT unsigned int	XkbAdjustGroup(
46805b261ecSmrg    int			/* group */,
46905b261ecSmrg    XkbControlsPtr	/* ctrls */
47005b261ecSmrg);
47105b261ecSmrg
4726747b715Smrgextern _X_EXPORT KeySym *XkbResizeKeySyms(
47305b261ecSmrg    XkbDescPtr		/* xkb */,
47405b261ecSmrg    int 		/* key */,
47505b261ecSmrg    int 		/* needed */
47605b261ecSmrg);
47705b261ecSmrg
4786747b715Smrgextern _X_EXPORT XkbAction *XkbResizeKeyActions(
47905b261ecSmrg    XkbDescPtr		/* xkb */,
48005b261ecSmrg    int 		/* key */,
48105b261ecSmrg    int 		/* needed */
48205b261ecSmrg);
48305b261ecSmrg
4846747b715Smrgextern _X_EXPORT void XkbUpdateKeyTypesFromCore(
48505b261ecSmrg    DeviceIntPtr	/* pXDev */,
4866747b715Smrg    KeySymsPtr          /* syms */,
48705b261ecSmrg    KeyCode 		/* first */,
48805b261ecSmrg    CARD8 		/* num */,
48905b261ecSmrg    XkbChangesPtr	/* pChanges */
49005b261ecSmrg);
49105b261ecSmrg
4926747b715Smrgextern _X_EXPORT void XkbUpdateDescActions(
49305b261ecSmrg    XkbDescPtr		/* xkb */,
49405b261ecSmrg    KeyCode		/* first */,
49505b261ecSmrg    CARD8		/* num */,
49605b261ecSmrg    XkbChangesPtr	/* changes */
49705b261ecSmrg);
49805b261ecSmrg
4996747b715Smrgextern _X_EXPORT void XkbUpdateActions(
50005b261ecSmrg    DeviceIntPtr	/* pXDev */,
50105b261ecSmrg    KeyCode 		/* first */,
50205b261ecSmrg    CARD8 		/* num */,
50305b261ecSmrg    XkbChangesPtr  	/* pChanges */,
50405b261ecSmrg    unsigned int *	/* needChecksRtrn */,
50505b261ecSmrg    XkbEventCausePtr	/* cause */
50605b261ecSmrg);
50705b261ecSmrg
5086747b715Smrgextern _X_EXPORT KeySymsPtr XkbGetCoreMap(
5096747b715Smrg    DeviceIntPtr        /* keybd */
51005b261ecSmrg);
51105b261ecSmrg
5126747b715Smrgextern _X_EXPORT void XkbApplyMappingChange(
51305b261ecSmrg    DeviceIntPtr	/* pXDev */,
5146747b715Smrg    KeySymsPtr          /* map */,
5156747b715Smrg    KeyCode		/* firstKey */,
5166747b715Smrg    CARD8		/* num */,
5176747b715Smrg    CARD8 *             /* modmap */,
51805b261ecSmrg    ClientPtr		/* client */
51905b261ecSmrg);
52005b261ecSmrg
5216747b715Smrgextern _X_EXPORT void XkbSetIndicators(
52205b261ecSmrg    DeviceIntPtr		/* pXDev */,
52305b261ecSmrg    CARD32			/* affect */,
52405b261ecSmrg    CARD32			/* values */,
52505b261ecSmrg    XkbEventCausePtr		/* cause */
52605b261ecSmrg);
52705b261ecSmrg
5286747b715Smrgextern _X_EXPORT void XkbUpdateIndicators(
52905b261ecSmrg    DeviceIntPtr		/* keybd */,
53005b261ecSmrg    CARD32		 	/* changed */,
53105b261ecSmrg    Bool			/* check_edevs */,
53205b261ecSmrg    XkbChangesPtr		/* pChanges */,
53305b261ecSmrg    XkbEventCausePtr		/* cause */
53405b261ecSmrg);
53505b261ecSmrg
5366747b715Smrgextern _X_EXPORT XkbSrvLedInfoPtr XkbAllocSrvLedInfo(
53705b261ecSmrg    DeviceIntPtr		/* dev */,
53805b261ecSmrg    KbdFeedbackPtr		/* kf */,
53905b261ecSmrg    LedFeedbackPtr		/* lf */,
54005b261ecSmrg    unsigned int		/* needed_parts */
54105b261ecSmrg);
54205b261ecSmrg
5436747b715Smrgextern _X_EXPORT XkbSrvLedInfoPtr XkbCopySrvLedInfo(
5444642e01fSmrg    DeviceIntPtr		/* dev */,
5454642e01fSmrg    XkbSrvLedInfoPtr		/* src */,
5464642e01fSmrg    KbdFeedbackPtr		/* kf */,
5474642e01fSmrg    LedFeedbackPtr		/* lf */
5484642e01fSmrg);
5494642e01fSmrg
5504642e01fSmrg
5516747b715Smrgextern _X_EXPORT XkbSrvLedInfoPtr XkbFindSrvLedInfo(
55205b261ecSmrg    DeviceIntPtr		/* dev */,
55305b261ecSmrg    unsigned int		/* class */,
55405b261ecSmrg    unsigned int		/* id */,
55505b261ecSmrg    unsigned int		/* needed_parts */
55605b261ecSmrg);
55705b261ecSmrg
5586747b715Smrgextern _X_EXPORT void XkbApplyLedNameChanges(
55905b261ecSmrg    DeviceIntPtr		/* dev */,
56005b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
56105b261ecSmrg    unsigned int		/* changed_names */,
56205b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
56305b261ecSmrg    XkbChangesPtr		/* changes */,
56405b261ecSmrg    XkbEventCausePtr		/* cause */
56505b261ecSmrg);
56605b261ecSmrg
5676747b715Smrgextern _X_EXPORT void XkbApplyLedMapChanges(
56805b261ecSmrg    DeviceIntPtr		/* dev */,
56905b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
57005b261ecSmrg    unsigned int		/* changed_maps */,
57105b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
57205b261ecSmrg    XkbChangesPtr		/* changes */,
57305b261ecSmrg    XkbEventCausePtr		/* cause */
57405b261ecSmrg);
57505b261ecSmrg
5766747b715Smrgextern _X_EXPORT void XkbApplyLedStateChanges(
57705b261ecSmrg    DeviceIntPtr		/* dev */,
57805b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
57905b261ecSmrg    unsigned int		/* changed_leds */,
58005b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
58105b261ecSmrg    XkbChangesPtr		/* changes */,
58205b261ecSmrg    XkbEventCausePtr		/* cause */
58305b261ecSmrg);
58405b261ecSmrg
5856747b715Smrgextern _X_EXPORT void XkbFlushLedEvents(
58605b261ecSmrg    DeviceIntPtr		/* dev */,
58705b261ecSmrg    DeviceIntPtr		/* kbd */,
58805b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
58905b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
59005b261ecSmrg    XkbChangesPtr		/* changes */,
59105b261ecSmrg    XkbEventCausePtr		/* cause */
59205b261ecSmrg);
59305b261ecSmrg
5946747b715Smrgextern _X_EXPORT unsigned int XkbIndicatorsToUpdate(
59505b261ecSmrg    DeviceIntPtr		/* dev */,
59605b261ecSmrg    unsigned long		/* state_changes */,
59705b261ecSmrg    Bool			/* enabled_ctrl_changes */
59805b261ecSmrg);
59905b261ecSmrg
6006747b715Smrgextern _X_EXPORT void XkbComputeDerivedState(
60105b261ecSmrg    XkbSrvInfoPtr		/* xkbi */
60205b261ecSmrg);
60305b261ecSmrg
6046747b715Smrgextern _X_EXPORT void XkbCheckSecondaryEffects(
60505b261ecSmrg    XkbSrvInfoPtr		/* xkbi */,
60605b261ecSmrg    unsigned int		/* which */,
60705b261ecSmrg    XkbChangesPtr		/* changes */,
60805b261ecSmrg    XkbEventCausePtr		/* cause */
60905b261ecSmrg);
61005b261ecSmrg
6116747b715Smrgextern _X_EXPORT void XkbCheckIndicatorMaps(
61205b261ecSmrg    DeviceIntPtr		/* dev */,
61305b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
61405b261ecSmrg    unsigned int		/* which */
61505b261ecSmrg);
61605b261ecSmrg
6176747b715Smrgextern _X_EXPORT unsigned int XkbStateChangedFlags(
61805b261ecSmrg    XkbStatePtr			/* old */,
61905b261ecSmrg    XkbStatePtr			/* new */
62005b261ecSmrg);
62105b261ecSmrg
6226747b715Smrgextern _X_EXPORT void XkbSendStateNotify(
62305b261ecSmrg       DeviceIntPtr	/* kbd */,
62405b261ecSmrg       xkbStateNotify *	/* pSN */
62505b261ecSmrg);
62605b261ecSmrg
6276747b715Smrgextern _X_EXPORT void XkbSendMapNotify(
62805b261ecSmrg       DeviceIntPtr	/* kbd */,
62905b261ecSmrg       xkbMapNotify *	/* ev */
63005b261ecSmrg);
63105b261ecSmrg
6326747b715Smrgextern _X_EXPORT int  XkbComputeControlsNotify(
63305b261ecSmrg	DeviceIntPtr		/* kbd */,
63405b261ecSmrg	XkbControlsPtr		/* old */,
63505b261ecSmrg	XkbControlsPtr		/* new */,
63605b261ecSmrg	xkbControlsNotify *	/* pCN */,
63705b261ecSmrg	Bool			/* forceCtrlProc */
63805b261ecSmrg);
63905b261ecSmrg
6406747b715Smrgextern _X_EXPORT void XkbSendControlsNotify(
64105b261ecSmrg       DeviceIntPtr		/* kbd */,
64205b261ecSmrg       xkbControlsNotify *	/* ev */
64305b261ecSmrg);
64405b261ecSmrg
6456747b715Smrgextern _X_EXPORT void XkbSendCompatMapNotify(
64605b261ecSmrg	DeviceIntPtr		/* kbd */,
64705b261ecSmrg	xkbCompatMapNotify *	/* ev */
64805b261ecSmrg);
64905b261ecSmrg
6506747b715Smrgextern _X_EXPORT void XkbHandleBell(
65105b261ecSmrg       BOOL		/* force */,
65205b261ecSmrg       BOOL		/* eventOnly */,
65305b261ecSmrg       DeviceIntPtr	/* kbd */,
65405b261ecSmrg       CARD8		/* percent */,
65505b261ecSmrg       pointer 		/* ctrl */,
65605b261ecSmrg       CARD8		/* class */,
65705b261ecSmrg       Atom		/* name */,
65805b261ecSmrg       WindowPtr	/* pWin */,
65905b261ecSmrg       ClientPtr	/* pClient */
66005b261ecSmrg);
66105b261ecSmrg
6626747b715Smrgextern _X_EXPORT void XkbSendAccessXNotify(
66305b261ecSmrg       DeviceIntPtr		/* kbd */,
66405b261ecSmrg       xkbAccessXNotify *	/* pEv */
66505b261ecSmrg);
66605b261ecSmrg
6676747b715Smrgextern _X_EXPORT void XkbSendNamesNotify(
66805b261ecSmrg       DeviceIntPtr	/* kbd */,
66905b261ecSmrg       xkbNamesNotify *	/* ev */
67005b261ecSmrg);
67105b261ecSmrg
6726747b715Smrgextern _X_EXPORT void XkbSendActionMessage(
67305b261ecSmrg       DeviceIntPtr		/* kbd */,
67405b261ecSmrg       xkbActionMessage *	/* ev */
67505b261ecSmrg);
67605b261ecSmrg
6776747b715Smrgextern _X_EXPORT void XkbSendExtensionDeviceNotify(
67805b261ecSmrg       DeviceIntPtr			/* kbd */,
67905b261ecSmrg       ClientPtr			/* client */,
68005b261ecSmrg       xkbExtensionDeviceNotify *	/* ev */
68105b261ecSmrg);
68205b261ecSmrg
6836747b715Smrgextern _X_EXPORT void XkbSendNotification(
68405b261ecSmrg    DeviceIntPtr		/* kbd */,
68505b261ecSmrg    XkbChangesPtr		/* pChanges */,
68605b261ecSmrg    XkbEventCausePtr		/* cause */
68705b261ecSmrg);
68805b261ecSmrg
6896747b715Smrgextern _X_EXPORT void XkbProcessKeyboardEvent(
6906747b715Smrg    DeviceEvent*		/* event */,
6916747b715Smrg    DeviceIntPtr		/* keybd */
69205b261ecSmrg);
69305b261ecSmrg
6946747b715Smrgextern _X_EXPORT void XkbHandleActions(
69505b261ecSmrg    DeviceIntPtr		/* dev */,
69605b261ecSmrg    DeviceIntPtr		/* kbd */,
6976747b715Smrg    DeviceEvent*		/* event */
69805b261ecSmrg);
69905b261ecSmrg
7006747b715Smrgextern _X_EXPORT Bool XkbEnableDisableControls(
70105b261ecSmrg    XkbSrvInfoPtr	/* xkbi */,
70205b261ecSmrg    unsigned long	/* change */,
70305b261ecSmrg    unsigned long	/* newValues */,
70405b261ecSmrg    XkbChangesPtr	/* changes */,
70505b261ecSmrg    XkbEventCausePtr	/* cause */
70605b261ecSmrg);
70705b261ecSmrg
7086747b715Smrgextern _X_EXPORT void AccessXInit(
70905b261ecSmrg    DeviceIntPtr        /* dev */
71005b261ecSmrg);
71105b261ecSmrg
7126747b715Smrgextern _X_EXPORT Bool AccessXFilterPressEvent(
7136747b715Smrg    DeviceEvent*	/* event */,
7146747b715Smrg    DeviceIntPtr	/* keybd */
71505b261ecSmrg);
71605b261ecSmrg
7176747b715Smrgextern _X_EXPORT Bool AccessXFilterReleaseEvent(
7186747b715Smrg    DeviceEvent*	/* event */,
7196747b715Smrg    DeviceIntPtr	/* keybd */
72005b261ecSmrg);
72105b261ecSmrg
7226747b715Smrgextern _X_EXPORT void AccessXCancelRepeatKey(
72305b261ecSmrg    XkbSrvInfoPtr	/* xkbi */,
72405b261ecSmrg    KeyCode		/* key */
72505b261ecSmrg);
72605b261ecSmrg
7276747b715Smrgextern _X_EXPORT void AccessXComputeCurveFactor(
72805b261ecSmrg    XkbSrvInfoPtr	/* xkbi */,
72905b261ecSmrg    XkbControlsPtr	/* ctrls */
73005b261ecSmrg);
73105b261ecSmrg
7326747b715Smrgextern _X_EXPORT XkbInterestPtr XkbFindClientResource(
73305b261ecSmrg       DevicePtr	/* inDev */,
73405b261ecSmrg       ClientPtr	/* client */
73505b261ecSmrg);
73605b261ecSmrg
7376747b715Smrgextern _X_EXPORT XkbInterestPtr XkbAddClientResource(
73805b261ecSmrg       DevicePtr	/* inDev */,
73905b261ecSmrg       ClientPtr	/* client */,
74005b261ecSmrg       XID		/* id */
74105b261ecSmrg);
74205b261ecSmrg
7436747b715Smrgextern _X_EXPORT int XkbRemoveResourceClient(
74405b261ecSmrg       DevicePtr	/* inDev */,
74505b261ecSmrg       XID		/* id */
74605b261ecSmrg);
74705b261ecSmrg
7486747b715Smrgextern _X_EXPORT int XkbDDXAccessXBeep(
74905b261ecSmrg    DeviceIntPtr        /* dev */,
75005b261ecSmrg    unsigned int	/* what */,
75105b261ecSmrg    unsigned int	/* which */
75205b261ecSmrg);
75305b261ecSmrg
7546747b715Smrgextern _X_EXPORT int XkbDDXUsesSoftRepeat(
75505b261ecSmrg    DeviceIntPtr	/* dev */
75605b261ecSmrg);
75705b261ecSmrg
7586747b715Smrgextern _X_EXPORT void XkbDDXKeybdCtrlProc(
75905b261ecSmrg	DeviceIntPtr	/* dev */,
76005b261ecSmrg	KeybdCtrl *	/* ctrl */
76105b261ecSmrg);
76205b261ecSmrg
7636747b715Smrgextern _X_EXPORT void XkbDDXChangeControls(
76405b261ecSmrg	DeviceIntPtr	/* dev */,
76505b261ecSmrg	XkbControlsPtr 	/* old */,
76605b261ecSmrg	XkbControlsPtr 	/* new */
76705b261ecSmrg);
76805b261ecSmrg
7696747b715Smrgextern _X_EXPORT void XkbDDXUpdateDeviceIndicators(
77005b261ecSmrg	DeviceIntPtr		/* dev */,
77105b261ecSmrg	XkbSrvLedInfoPtr	/* sli */,
77205b261ecSmrg	CARD32			/* newState */
77305b261ecSmrg);
77405b261ecSmrg
7756747b715Smrgextern _X_EXPORT int XkbDDXTerminateServer(
77605b261ecSmrg	DeviceIntPtr	/* dev */,
77705b261ecSmrg	KeyCode		/* key */,
77805b261ecSmrg	XkbAction *	/* act */
77905b261ecSmrg);
78005b261ecSmrg
7816747b715Smrgextern _X_EXPORT int XkbDDXSwitchScreen(
78205b261ecSmrg	DeviceIntPtr	/* dev */,
78305b261ecSmrg	KeyCode		/* key */,
78405b261ecSmrg	XkbAction *	/* act */
78505b261ecSmrg);
78605b261ecSmrg
7876747b715Smrgextern _X_EXPORT int XkbDDXPrivate(
78805b261ecSmrg	DeviceIntPtr	/* dev */,
78905b261ecSmrg	KeyCode		/* key */,
79005b261ecSmrg	XkbAction *	/* act */
79105b261ecSmrg);
79205b261ecSmrg
7936747b715Smrgextern _X_EXPORT void XkbDisableComputedAutoRepeats(
79405b261ecSmrg	DeviceIntPtr 	/* pXDev */,
79505b261ecSmrg	unsigned int	/* key */
79605b261ecSmrg);
79705b261ecSmrg
7986747b715Smrgextern _X_EXPORT void XkbSetRepeatKeys(
79905b261ecSmrg	DeviceIntPtr 	/* pXDev */,
80005b261ecSmrg	int		/* key */,
80105b261ecSmrg	int	 	/* onoff */
80205b261ecSmrg);
80305b261ecSmrg
8046747b715Smrgextern _X_EXPORT int XkbLatchModifiers(
80505b261ecSmrg	DeviceIntPtr 	/* pXDev */,
80605b261ecSmrg	CARD8 		/* mask */,
80705b261ecSmrg	CARD8 		/* latches */
80805b261ecSmrg);
80905b261ecSmrg
8106747b715Smrgextern _X_EXPORT int XkbLatchGroup(
81105b261ecSmrg	DeviceIntPtr  	/* pXDev */,
81205b261ecSmrg	int	  	/* group */
81305b261ecSmrg);
81405b261ecSmrg
8156747b715Smrgextern _X_EXPORT void XkbClearAllLatchesAndLocks(
81605b261ecSmrg	DeviceIntPtr		/* dev */,
81705b261ecSmrg	XkbSrvInfoPtr		/* xkbi */,
81805b261ecSmrg	Bool			/* genEv */,
81905b261ecSmrg	XkbEventCausePtr	/* cause */
82005b261ecSmrg);
82105b261ecSmrg
8226747b715Smrgextern _X_EXPORT void	XkbGetRulesDflts(
8236747b715Smrg        XkbRMLVOSet *           /* rmlvo */
82405b261ecSmrg);
82505b261ecSmrg
8266747b715Smrgextern _X_EXPORT void   XkbFreeRMLVOSet(
8276747b715Smrg        XkbRMLVOSet *           /* rmlvo */,
8286747b715Smrg        Bool                    /* freeRMLVO */
8294642e01fSmrg);
8304642e01fSmrg
8316747b715Smrgextern _X_EXPORT void	XkbSetRulesDflts(
8326747b715Smrg        XkbRMLVOSet *           /* rmlvo */
83305b261ecSmrg);
83405b261ecSmrg
8356747b715Smrgextern _X_EXPORT void	XkbDeleteRulesDflts(
8366747b715Smrg	void
83705b261ecSmrg);
83805b261ecSmrg
8396747b715Smrgextern _X_EXPORT int SProcXkbDispatch(
84005b261ecSmrg	ClientPtr		/* client */
84105b261ecSmrg);
84205b261ecSmrg
8436747b715Smrgextern _X_EXPORT XkbGeometryPtr XkbLookupNamedGeometry(
84405b261ecSmrg	DeviceIntPtr		/* dev */,
84505b261ecSmrg	Atom			/* name */,
84605b261ecSmrg	Bool *			/* shouldFree */
84705b261ecSmrg);
84805b261ecSmrg
8496747b715Smrgextern _X_EXPORT char *	_XkbDupString(
8506747b715Smrg	const char *		/* str */
85105b261ecSmrg);
85205b261ecSmrg
8536747b715Smrgextern _X_EXPORT void	XkbConvertCase(
85405b261ecSmrg	KeySym 			/* sym */,
85505b261ecSmrg	KeySym *		/* lower */,
85605b261ecSmrg	KeySym *		/* upper */
85705b261ecSmrg);
85805b261ecSmrg
8596747b715Smrgextern _X_EXPORT Status	 XkbChangeKeycodeRange(
86005b261ecSmrg	XkbDescPtr		/* xkb */,
86105b261ecSmrg	int 			/* minKC */,
86205b261ecSmrg	int 			/* maxKC */,
86305b261ecSmrg	XkbChangesPtr		/* changes */
86405b261ecSmrg);
86505b261ecSmrg
8666747b715Smrgextern _X_EXPORT void XkbFreeSrvLedInfo(
86705b261ecSmrg	XkbSrvLedInfoPtr	/* sli */
86805b261ecSmrg);
86905b261ecSmrg
8706747b715Smrgextern _X_EXPORT void XkbFreeInfo(
87105b261ecSmrg	XkbSrvInfoPtr		/* xkbi */
87205b261ecSmrg);
87305b261ecSmrg
8746747b715Smrgextern _X_EXPORT Status XkbChangeTypesOfKey(
87505b261ecSmrg	XkbDescPtr		/* xkb */,
87605b261ecSmrg	int			/* key */,
87705b261ecSmrg	int			/* nGroups */,
87805b261ecSmrg	unsigned int		/* groups */,
87905b261ecSmrg	int *			/* newTypesIn */,
88005b261ecSmrg	XkbMapChangesPtr	/* changes */
88105b261ecSmrg);
88205b261ecSmrg
8836747b715Smrgextern _X_EXPORT int XkbKeyTypesForCoreSymbols(
88405b261ecSmrg	XkbDescPtr		/* xkb */,
88505b261ecSmrg	int			/* map_width */,
88605b261ecSmrg	KeySym *		/* core_syms */,
88705b261ecSmrg	unsigned int		/* protected */,
88805b261ecSmrg	int *			/* types_inout */,
88905b261ecSmrg	KeySym *		/* xkb_syms_rtrn */
89005b261ecSmrg);
89105b261ecSmrg
8926747b715Smrgextern _X_EXPORT Bool XkbApplyCompatMapToKey(
89305b261ecSmrg	XkbDescPtr		/* xkb */,
89405b261ecSmrg	KeyCode			/* key */,
89505b261ecSmrg	XkbChangesPtr		/* changes */
89605b261ecSmrg);
89705b261ecSmrg
8986747b715Smrgextern _X_EXPORT Bool XkbApplyVirtualModChanges(
89905b261ecSmrg	XkbDescPtr		/* xkb */,
90005b261ecSmrg	unsigned int		/* changed */,
90105b261ecSmrg	XkbChangesPtr		/* changes */
90205b261ecSmrg);
90305b261ecSmrg
9046747b715Smrgextern _X_EXPORT void XkbSendNewKeyboardNotify(
90505b261ecSmrg	DeviceIntPtr		/* kbd */,
90605b261ecSmrg	xkbNewKeyboardNotify *	/* pNKN */
90705b261ecSmrg);
90805b261ecSmrg
9096747b715Smrgextern Bool XkbCopyKeymap(
9106747b715Smrg        XkbDescPtr              /* dst */,
9116747b715Smrg        XkbDescPtr              /* src */);
9126747b715Smrg
9136747b715Smrgextern _X_EXPORT Bool XkbCopyDeviceKeymap(
9146747b715Smrg        DeviceIntPtr            /* dst */,
9156747b715Smrg        DeviceIntPtr            /* src */);
9166747b715Smrg
9176747b715Smrgextern void XkbFilterEvents(
9186747b715Smrg        ClientPtr               /* pClient */,
9196747b715Smrg        int                     /* nEvents */,
9206747b715Smrg        xEvent*                 /* xE */);
9216747b715Smrg
9226747b715Smrgextern int XkbGetEffectiveGroup(
9236747b715Smrg        XkbSrvInfoPtr           /* xkbi */,
9246747b715Smrg        XkbStatePtr             /* xkbstate */,
9256747b715Smrg        CARD8                   /* keycode */);
9266747b715Smrg
9276747b715Smrgextern void XkbMergeLockedPtrBtns(
9286747b715Smrg        DeviceIntPtr            /* master */);
9296747b715Smrg
9306747b715Smrgextern void XkbFakeDeviceButton(
9316747b715Smrg        DeviceIntPtr            /* dev */,
9326747b715Smrg        int                     /* press */,
9336747b715Smrg        int                     /* button */);
9346747b715Smrg
9356747b715Smrg
9364642e01fSmrg#include "xkbfile.h"
9374642e01fSmrg#include "xkbrules.h"
93805b261ecSmrg
9396747b715Smrg#define	_XkbListKeycodes	0
9406747b715Smrg#define	_XkbListTypes		1
9416747b715Smrg#define	_XkbListCompat		2
9426747b715Smrg#define	_XkbListSymbols		3
9436747b715Smrg#define	_XkbListGeometry	4
9446747b715Smrg#define	_XkbListNumComponents	5
94505b261ecSmrg
94605b261ecSmrgtypedef struct _XkbSrvListInfo {
94705b261ecSmrg	int		szPool;
94805b261ecSmrg	int		nPool;
94905b261ecSmrg	char *		pool;
95005b261ecSmrg
95105b261ecSmrg	int		maxRtrn;
95205b261ecSmrg	int		nTotal;
95305b261ecSmrg
95405b261ecSmrg	char *		pattern[_XkbListNumComponents];
95505b261ecSmrg	int		nFound[_XkbListNumComponents];
95605b261ecSmrg} XkbSrvListInfoRec,*XkbSrvListInfoPtr;
95705b261ecSmrg
9586747b715Smrgextern _X_EXPORT Status	XkbDDXList(
95905b261ecSmrg	DeviceIntPtr		/* dev */,
96005b261ecSmrg	XkbSrvListInfoPtr	/* listing */,
96105b261ecSmrg	ClientPtr		/* client */
96205b261ecSmrg);
96305b261ecSmrg
9646747b715Smrgextern _X_EXPORT unsigned int XkbDDXLoadKeymapByNames(
96505b261ecSmrg	DeviceIntPtr		/* keybd */,
96605b261ecSmrg	XkbComponentNamesPtr	/* names */,
96705b261ecSmrg	unsigned int		/* want */,
96805b261ecSmrg	unsigned int		/* need */,
9694642e01fSmrg	XkbDescPtr *		/* finfoRtrn */,
97005b261ecSmrg	char *			/* keymapNameRtrn */,
97105b261ecSmrg	int 			/* keymapNameRtrnLen */
97205b261ecSmrg);
97305b261ecSmrg
9746747b715Smrgextern _X_EXPORT Bool XkbDDXNamesFromRules(
97505b261ecSmrg	DeviceIntPtr		/* keybd */,
97605b261ecSmrg	char *			/* rules */,
97705b261ecSmrg	XkbRF_VarDefsPtr	/* defs */,
97805b261ecSmrg	XkbComponentNamesPtr	/* names */
97905b261ecSmrg);
98005b261ecSmrg
9816747b715Smrgextern _X_EXPORT XkbDescPtr XkbCompileKeymap(
9826747b715Smrg        DeviceIntPtr    /* dev */,
9836747b715Smrg        XkbRMLVOSet *   /* rmlvo */
98405b261ecSmrg);
98505b261ecSmrg
98605b261ecSmrg#endif /* _XKBSRV_H_ */
987