xkbsrv.h revision 4642e01f
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"
5705b261ecSmrg#include "inputstr.h"
5805b261ecSmrg
5905b261ecSmrgtypedef struct _XkbInterest {
6005b261ecSmrg	DeviceIntPtr		dev;
6105b261ecSmrg	ClientPtr		client;
6205b261ecSmrg	XID			resource;
6305b261ecSmrg	struct _XkbInterest *	next;
6405b261ecSmrg	CARD16			extDevNotifyMask;
6505b261ecSmrg	CARD16			stateNotifyMask;
6605b261ecSmrg	CARD16			namesNotifyMask;
6705b261ecSmrg	CARD32 			ctrlsNotifyMask;
6805b261ecSmrg	CARD8			compatNotifyMask;
6905b261ecSmrg	BOOL			bellNotifyMask;
7005b261ecSmrg	BOOL			actionMessageMask;
7105b261ecSmrg	CARD16			accessXNotifyMask;
7205b261ecSmrg	CARD32			iStateNotifyMask;
7305b261ecSmrg	CARD32			iMapNotifyMask;
7405b261ecSmrg	CARD16			altSymsNotifyMask;
7505b261ecSmrg	CARD32			autoCtrls;
7605b261ecSmrg	CARD32			autoCtrlValues;
7705b261ecSmrg} XkbInterestRec,*XkbInterestPtr;
7805b261ecSmrg
7905b261ecSmrgtypedef struct _XkbRadioGroup {
8005b261ecSmrg	CARD8		flags;
8105b261ecSmrg	CARD8		nMembers;
8205b261ecSmrg	CARD8		dfltDown;
8305b261ecSmrg	CARD8		currentDown;
8405b261ecSmrg	CARD8		members[XkbRGMaxMembers];
8505b261ecSmrg} XkbRadioGroupRec, *XkbRadioGroupPtr;
8605b261ecSmrg
8705b261ecSmrgtypedef struct	_XkbEventCause {
8805b261ecSmrg	CARD8		kc;
8905b261ecSmrg	CARD8		event;
9005b261ecSmrg	CARD8		mjr;
9105b261ecSmrg	CARD8		mnr;
9205b261ecSmrg	ClientPtr	client;
9305b261ecSmrg} XkbEventCauseRec,*XkbEventCausePtr;
9405b261ecSmrg#define	XkbSetCauseKey(c,k,e)	{ (c)->kc= (k),(c)->event= (e),\
9505b261ecSmrg				  (c)->mjr= (c)->mnr= 0; \
9605b261ecSmrg				  (c)->client= NULL; }
9705b261ecSmrg#define	XkbSetCauseReq(c,j,n,cl) { (c)->kc= (c)->event= 0,\
9805b261ecSmrg				  (c)->mjr= (j),(c)->mnr= (n);\
9905b261ecSmrg				  (c)->client= (cl); }
10005b261ecSmrg#define	XkbSetCauseCoreReq(c,e,cl) XkbSetCauseReq(c,e,0,cl)
10105b261ecSmrg#define	XkbSetCauseXkbReq(c,e,cl)  XkbSetCauseReq(c,XkbReqCode,e,cl)
10205b261ecSmrg#define	XkbSetCauseUnknown(c)	   XkbSetCauseKey(c,0,0)
10305b261ecSmrg
10405b261ecSmrg#define	_OFF_TIMER		0
10505b261ecSmrg#define	_KRG_WARN_TIMER		1
10605b261ecSmrg#define	_KRG_TIMER		2
10705b261ecSmrg#define	_SK_TIMEOUT_TIMER	3
10805b261ecSmrg#define	_ALL_TIMEOUT_TIMER	4
10905b261ecSmrg
11005b261ecSmrg#define	_BEEP_NONE		0
11105b261ecSmrg#define	_BEEP_FEATURE_ON	1
11205b261ecSmrg#define	_BEEP_FEATURE_OFF	2
11305b261ecSmrg#define	_BEEP_FEATURE_CHANGE	3
11405b261ecSmrg#define	_BEEP_SLOW_WARN		4
11505b261ecSmrg#define	_BEEP_SLOW_PRESS	5
11605b261ecSmrg#define	_BEEP_SLOW_ACCEPT	6
11705b261ecSmrg#define	_BEEP_SLOW_REJECT	7
11805b261ecSmrg#define	_BEEP_SLOW_RELEASE	8
11905b261ecSmrg#define	_BEEP_STICKY_LATCH	9
12005b261ecSmrg#define	_BEEP_STICKY_LOCK	10
12105b261ecSmrg#define	_BEEP_STICKY_UNLOCK	11
12205b261ecSmrg#define	_BEEP_LED_ON		12
12305b261ecSmrg#define	_BEEP_LED_OFF		13
12405b261ecSmrg#define	_BEEP_LED_CHANGE	14
12505b261ecSmrg#define	_BEEP_BOUNCE_REJECT	15
12605b261ecSmrg
12705b261ecSmrgtypedef struct _XkbFilter {
12805b261ecSmrg	CARD16			  keycode;
12905b261ecSmrg	CARD8			  what;
13005b261ecSmrg	CARD8			  active;
13105b261ecSmrg	CARD8			  filterOthers;
13205b261ecSmrg	CARD32			  priv;
13305b261ecSmrg	XkbAction		  upAction;
13405b261ecSmrg	int			(*filter)(
13505b261ecSmrg					struct _XkbSrvInfo* 	/* xkbi */,
13605b261ecSmrg					struct _XkbFilter *	/* filter */,
13705b261ecSmrg					unsigned		/* keycode */,
13805b261ecSmrg					XkbAction *		/* action */
13905b261ecSmrg				  );
14005b261ecSmrg	struct _XkbFilter	 *next;
14105b261ecSmrg} XkbFilterRec,*XkbFilterPtr;
14205b261ecSmrg
14305b261ecSmrgtypedef struct _XkbSrvInfo {
14405b261ecSmrg	XkbStateRec	 prev_state;
14505b261ecSmrg	XkbStateRec	 state;
14605b261ecSmrg	XkbDescPtr	 desc;
14705b261ecSmrg
14805b261ecSmrg	DeviceIntPtr	 device;
14905b261ecSmrg	KbdCtrlProcPtr	 kbdProc;
15005b261ecSmrg
15105b261ecSmrg	XkbRadioGroupPtr radioGroups;
15205b261ecSmrg	CARD8		 nRadioGroups;
15305b261ecSmrg	CARD8		 clearMods;
15405b261ecSmrg	CARD8		 setMods;
15505b261ecSmrg	INT16		 groupChange;
15605b261ecSmrg
15705b261ecSmrg	CARD16		 dfltPtrDelta;
15805b261ecSmrg
15905b261ecSmrg	double		 mouseKeysCurve;
16005b261ecSmrg	double		 mouseKeysCurveFactor;
16105b261ecSmrg	INT16		 mouseKeysDX;
16205b261ecSmrg	INT16		 mouseKeysDY;
16305b261ecSmrg	CARD8		 mouseKeysFlags;
16405b261ecSmrg	Bool		 mouseKeysAccel;
16505b261ecSmrg	CARD8		 mouseKeysCounter;
16605b261ecSmrg
16705b261ecSmrg	CARD8		 lockedPtrButtons;
16805b261ecSmrg	CARD8		 shiftKeyCount;
16905b261ecSmrg	KeyCode		 mouseKey;
17005b261ecSmrg	KeyCode		 inactiveKey;
17105b261ecSmrg	KeyCode		 slowKey;
17205b261ecSmrg	KeyCode		 repeatKey;
17305b261ecSmrg	CARD8		 krgTimerActive;
17405b261ecSmrg	CARD8		 beepType;
17505b261ecSmrg	CARD8		 beepCount;
17605b261ecSmrg
17705b261ecSmrg	CARD32		 flags;
17805b261ecSmrg	CARD32		 lastPtrEventTime;
17905b261ecSmrg	CARD32		 lastShiftEventTime;
18005b261ecSmrg	OsTimerPtr	 beepTimer;
18105b261ecSmrg	OsTimerPtr	 mouseKeyTimer;
18205b261ecSmrg	OsTimerPtr	 slowKeysTimer;
18305b261ecSmrg	OsTimerPtr	 bounceKeysTimer;
18405b261ecSmrg	OsTimerPtr	 repeatKeyTimer;
18505b261ecSmrg	OsTimerPtr	 krgTimer;
18605b261ecSmrg
18705b261ecSmrg	int		 szFilters;
18805b261ecSmrg	XkbFilterPtr	 filters;
18905b261ecSmrg} XkbSrvInfoRec, *XkbSrvInfoPtr;
19005b261ecSmrg
19105b261ecSmrg#define	XkbSLI_IsDefault	(1L<<0)
19205b261ecSmrg#define	XkbSLI_HasOwnState	(1L<<1)
19305b261ecSmrg
19405b261ecSmrgtypedef struct	_XkbSrvLedInfo {
19505b261ecSmrg	CARD16			flags;
19605b261ecSmrg	CARD16			class;
19705b261ecSmrg	CARD16			id;
19805b261ecSmrg	union {
19905b261ecSmrg	    KbdFeedbackPtr	kf;
20005b261ecSmrg	    LedFeedbackPtr	lf;
20105b261ecSmrg	} 			fb;
20205b261ecSmrg
20305b261ecSmrg	CARD32			physIndicators;
20405b261ecSmrg	CARD32			autoState;
20505b261ecSmrg	CARD32			explicitState;
20605b261ecSmrg	CARD32			effectiveState;
20705b261ecSmrg
20805b261ecSmrg	CARD32			mapsPresent;
20905b261ecSmrg	CARD32			namesPresent;
21005b261ecSmrg	XkbIndicatorMapPtr	maps;
21105b261ecSmrg	Atom *			names;
21205b261ecSmrg
21305b261ecSmrg	CARD32			usesBase;
21405b261ecSmrg	CARD32			usesLatched;
21505b261ecSmrg	CARD32			usesLocked;
21605b261ecSmrg	CARD32			usesEffective;
21705b261ecSmrg	CARD32			usesCompat;
21805b261ecSmrg	CARD32			usesControls;
21905b261ecSmrg
22005b261ecSmrg	CARD32			usedComponents;
22105b261ecSmrg} XkbSrvLedInfoRec, *XkbSrvLedInfoPtr;
22205b261ecSmrg
22305b261ecSmrg/*
22405b261ecSmrg * Settings for xkbClientFlags field (used by DIX)
22505b261ecSmrg * These flags _must_ not overlap with XkbPCF_*
22605b261ecSmrg */
22705b261ecSmrg#define	_XkbClientInitialized		(1<<15)
22805b261ecSmrg
22905b261ecSmrg#define	_XkbWantsDetectableAutoRepeat(c)\
23005b261ecSmrg	((c)->xkbClientFlags&XkbPCF_DetectableAutoRepeatMask)
23105b261ecSmrg
23205b261ecSmrg/*
23305b261ecSmrg * Settings for flags field
23405b261ecSmrg */
23505b261ecSmrg#define	_XkbStateNotifyInProgress	(1<<0)
23605b261ecSmrg
23705b261ecSmrgtypedef struct
23805b261ecSmrg{
23905b261ecSmrg    ProcessInputProc processInputProc;
24005b261ecSmrg    /* If processInputProc is set to something different than realInputProc,
24105b261ecSmrg     * UNWRAP and COND_WRAP will not touch processInputProc and update only
24205b261ecSmrg     * realInputProc.  This ensures that
24305b261ecSmrg     *   processInputProc == (frozen ? EnqueueEvent : realInputProc)
24405b261ecSmrg     *
24505b261ecSmrg     * WRAP_PROCESS_INPUT_PROC should only be called during initialization,
24605b261ecSmrg     * since it may destroy this invariant.
24705b261ecSmrg     */
24805b261ecSmrg    ProcessInputProc realInputProc;
24905b261ecSmrg    DeviceUnwrapProc unwrapProc;
25005b261ecSmrg} xkbDeviceInfoRec, *xkbDeviceInfoPtr;
25105b261ecSmrg
25205b261ecSmrg#define WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
25305b261ecSmrg	device->public.processInputProc = proc; \
25405b261ecSmrg	oldprocs->processInputProc = \
25505b261ecSmrg	oldprocs->realInputProc = device->public.realInputProc; \
25605b261ecSmrg	device->public.realInputProc = proc; \
25705b261ecSmrg	oldprocs->unwrapProc = device->unwrapProc; \
25805b261ecSmrg	device->unwrapProc = unwrapproc;
25905b261ecSmrg
26005b261ecSmrg#define COND_WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
26105b261ecSmrg	if (device->public.processInputProc == device->public.realInputProc)\
26205b261ecSmrg	    device->public.processInputProc = proc; \
26305b261ecSmrg	oldprocs->processInputProc = \
26405b261ecSmrg	oldprocs->realInputProc = device->public.realInputProc; \
26505b261ecSmrg	device->public.realInputProc = proc; \
26605b261ecSmrg	oldprocs->unwrapProc = device->unwrapProc; \
26705b261ecSmrg	device->unwrapProc = unwrapproc;
26805b261ecSmrg
26905b261ecSmrg#define UNWRAP_PROCESS_INPUT_PROC(device, oldprocs, backupproc) \
27005b261ecSmrg        backupproc = device->public.realInputProc; \
27105b261ecSmrg	if (device->public.processInputProc == device->public.realInputProc)\
27205b261ecSmrg	    device->public.processInputProc = oldprocs->realInputProc; \
27305b261ecSmrg	device->public.realInputProc = oldprocs->realInputProc; \
27405b261ecSmrg	device->unwrapProc = oldprocs->unwrapProc;
27505b261ecSmrg
2764642e01fSmrgextern DevPrivateKey xkbDevicePrivateKey;
2774642e01fSmrg#define XKBDEVICEINFO(dev) ((xkbDeviceInfoPtr)dixLookupPrivate(&(dev)->devPrivates, xkbDevicePrivateKey))
27805b261ecSmrg
27905b261ecSmrgextern void xkbUnwrapProc(DeviceIntPtr, DeviceHandleProc, pointer);
28005b261ecSmrg
28105b261ecSmrg/***====================================================================***/
28205b261ecSmrg
28305b261ecSmrg
28405b261ecSmrg/***====================================================================***/
28505b261ecSmrg
28605b261ecSmrg#define XkbAX_KRGMask	 (XkbSlowKeysMask|XkbBounceKeysMask)
28705b261ecSmrg#define	XkbAllFilteredEventsMask \
28805b261ecSmrg	(XkbAccessXKeysMask|XkbRepeatKeysMask|XkbMouseKeysAccelMask|XkbAX_KRGMask)
28905b261ecSmrg
29005b261ecSmrg/***====================================================================***/
29105b261ecSmrg
29205b261ecSmrgextern int	XkbReqCode;
29305b261ecSmrgextern int	XkbEventBase;
29405b261ecSmrgextern int	XkbDisableLockActions;
2954642e01fSmrgextern int	XkbKeyboardErrorCode;
29605b261ecSmrgextern char *	XkbBaseDirectory;
29705b261ecSmrgextern char *	XkbBinDirectory;
29805b261ecSmrgextern char *	XkbInitialMap;
29905b261ecSmrgextern unsigned	int XkbXIUnsupported;
30005b261ecSmrg
30105b261ecSmrgextern Bool	noXkbExtension;
30205b261ecSmrg
30305b261ecSmrgextern pointer	XkbLastRepeatEvent;
30405b261ecSmrg
30505b261ecSmrgextern CARD32	xkbDebugFlags;
30605b261ecSmrg
30705b261ecSmrg#define	_XkbAlloc(s)		xalloc((s))
30805b261ecSmrg#define	_XkbCalloc(n,s)		Xcalloc((n)*(s))
30905b261ecSmrg#define	_XkbRealloc(o,s)	Xrealloc((o),(s))
31005b261ecSmrg#define	_XkbTypedAlloc(t)	((t *)xalloc(sizeof(t)))
31105b261ecSmrg#define	_XkbTypedCalloc(n,t)	((t *)Xcalloc((n)*sizeof(t)))
31205b261ecSmrg#define	_XkbTypedRealloc(o,n,t) \
31305b261ecSmrg	((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
31405b261ecSmrg#define	_XkbClearElems(a,f,l,t)	bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
31505b261ecSmrg#define	_XkbFree(p)		Xfree(p)
31605b261ecSmrg
3174642e01fSmrg#define	_XkbLibError(c,l,d) /* Epoch fail */
31805b261ecSmrg#define	_XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff)))
31905b261ecSmrg#define	_XkbErrCode3(a,b,c)	_XkbErrCode2(a,(((unsigned int)(b))<<16)|(c))
32005b261ecSmrg#define	_XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d)))
32105b261ecSmrg
32205b261ecSmrgextern	int	DeviceKeyPress,DeviceKeyRelease,DeviceMotionNotify;
32305b261ecSmrgextern	int	DeviceButtonPress,DeviceButtonRelease;
32405b261ecSmrgextern	int	DeviceEnterNotify,DeviceLeaveNotify;
32505b261ecSmrg
32605b261ecSmrg#define	_XkbIsPressEvent(t)	(((t)==KeyPress)||((t)==DeviceKeyPress))
32705b261ecSmrg#define	_XkbIsReleaseEvent(t)	(((t)==KeyRelease)||((t)==DeviceKeyRelease))
32805b261ecSmrg
32905b261ecSmrg#define	_XkbCoreKeycodeInRange(c,k)	(((k)>=(c)->curKeySyms.minKeyCode)&&\
33005b261ecSmrg					 ((k)<=(c)->curKeySyms.maxKeyCode))
33105b261ecSmrg#define	_XkbCoreNumKeys(c)	((c)->curKeySyms.maxKeyCode-\
33205b261ecSmrg				 (c)->curKeySyms.minKeyCode+1)
33305b261ecSmrg
33405b261ecSmrg#define	XConvertCase(s,l,u)	XkbConvertCase(s,l,u)
33505b261ecSmrg#undef	IsKeypadKey
33605b261ecSmrg#define	IsKeypadKey(s)		XkbKSIsKeypad(s)
33705b261ecSmrg
33805b261ecSmrg#define	Status		int
33905b261ecSmrg
34005b261ecSmrg#ifndef True
3414642e01fSmrg#define	True	TRUE
3424642e01fSmrg#define	False	FALSE
34305b261ecSmrg#endif
34405b261ecSmrg
34505b261ecSmrg_XFUNCPROTOBEGIN
34605b261ecSmrg
34705b261ecSmrgextern void XkbUseMsg(
34805b261ecSmrg    void
34905b261ecSmrg);
35005b261ecSmrg
35105b261ecSmrgextern int XkbProcessArguments(
35205b261ecSmrg    int				/* argc */,
35305b261ecSmrg    char **			/* argv */,
35405b261ecSmrg    int				/* i */
35505b261ecSmrg);
35605b261ecSmrg
35705b261ecSmrgextern	void	XkbSetExtension(DeviceIntPtr device, ProcessInputProc proc);
35805b261ecSmrg
35905b261ecSmrgextern	void	XkbFreeCompatMap(
36005b261ecSmrg    XkbDescPtr			/* xkb */,
36105b261ecSmrg    unsigned int		/* which */,
36205b261ecSmrg    Bool			/* freeMap */
36305b261ecSmrg);
36405b261ecSmrg
36505b261ecSmrgextern	void XkbFreeNames(
36605b261ecSmrg	XkbDescPtr		/* xkb */,
36705b261ecSmrg	unsigned int		/* which */,
36805b261ecSmrg	Bool			/* freeMap */
36905b261ecSmrg);
37005b261ecSmrg
3714642e01fSmrgextern int _XkbLookupAnyDevice(
3724642e01fSmrg    DeviceIntPtr *pDev,
3734642e01fSmrg    int id,
3744642e01fSmrg    ClientPtr client,
3754642e01fSmrg    Mask access_mode,
3764642e01fSmrg    int *xkb_err
37705b261ecSmrg);
37805b261ecSmrg
3794642e01fSmrgextern int _XkbLookupKeyboard(
3804642e01fSmrg    DeviceIntPtr *pDev,
3814642e01fSmrg    int id,
3824642e01fSmrg    ClientPtr client,
3834642e01fSmrg    Mask access_mode,
3844642e01fSmrg    int *xkb_err
38505b261ecSmrg);
38605b261ecSmrg
3874642e01fSmrgextern int _XkbLookupBellDevice(
3884642e01fSmrg    DeviceIntPtr *pDev,
3894642e01fSmrg    int id,
3904642e01fSmrg    ClientPtr client,
3914642e01fSmrg    Mask access_mode,
3924642e01fSmrg    int *xkb_err
39305b261ecSmrg);
39405b261ecSmrg
3954642e01fSmrgextern int _XkbLookupLedDevice(
3964642e01fSmrg    DeviceIntPtr *pDev,
3974642e01fSmrg    int id,
3984642e01fSmrg    ClientPtr client,
3994642e01fSmrg    Mask access_mode,
4004642e01fSmrg    int *xkb_err
40105b261ecSmrg);
40205b261ecSmrg
4034642e01fSmrgextern int _XkbLookupButtonDevice(
4044642e01fSmrg    DeviceIntPtr *pDev,
4054642e01fSmrg    int id,
4064642e01fSmrg    ClientPtr client,
4074642e01fSmrg    Mask access_mode,
4084642e01fSmrg    int *xkb_err
40905b261ecSmrg);
41005b261ecSmrg
41105b261ecSmrgextern	XkbDescPtr XkbAllocKeyboard(
41205b261ecSmrg	void
41305b261ecSmrg);
41405b261ecSmrg
41505b261ecSmrgextern	Status XkbAllocClientMap(
41605b261ecSmrg	XkbDescPtr		/* xkb */,
41705b261ecSmrg	unsigned int		/* which */,
41805b261ecSmrg	unsigned int		/* nTypes */
41905b261ecSmrg);
42005b261ecSmrg
42105b261ecSmrgextern	Status XkbAllocServerMap(
42205b261ecSmrg	XkbDescPtr		/* xkb */,
42305b261ecSmrg	unsigned int		/* which */,
42405b261ecSmrg	unsigned int		/* nNewActions */
42505b261ecSmrg);
42605b261ecSmrg
42705b261ecSmrgextern	void	XkbFreeClientMap(
42805b261ecSmrg    XkbDescPtr			/* xkb */,
42905b261ecSmrg    unsigned int		/* what */,
43005b261ecSmrg    Bool			/* freeMap */
43105b261ecSmrg);
43205b261ecSmrg
43305b261ecSmrgextern	void	XkbFreeServerMap(
43405b261ecSmrg    XkbDescPtr			/* xkb */,
43505b261ecSmrg    unsigned int		/* what */,
43605b261ecSmrg    Bool			/* freeMap */
43705b261ecSmrg);
43805b261ecSmrg
43905b261ecSmrgextern	Status XkbAllocIndicatorMaps(
44005b261ecSmrg	XkbDescPtr		/* xkb */
44105b261ecSmrg);
44205b261ecSmrg
44305b261ecSmrgextern	Status	XkbAllocCompatMap(
44405b261ecSmrg    XkbDescPtr			/* xkb */,
44505b261ecSmrg    unsigned int		/* which */,
44605b261ecSmrg    unsigned int		/* nInterpret */
44705b261ecSmrg);
44805b261ecSmrg
44905b261ecSmrgextern	Status XkbAllocNames(
45005b261ecSmrg	XkbDescPtr		/* xkb */,
45105b261ecSmrg	unsigned int		/* which */,
45205b261ecSmrg	int			/* nTotalRG */,
45305b261ecSmrg	int			/* nTotalAliases */
45405b261ecSmrg);
45505b261ecSmrg
45605b261ecSmrgextern	Status	XkbAllocControls(
45705b261ecSmrg	XkbDescPtr		/* xkb */,
45805b261ecSmrg	unsigned int		/* which*/
45905b261ecSmrg);
46005b261ecSmrg
46105b261ecSmrgextern	Status	XkbCopyKeyTypes(
46205b261ecSmrg    XkbKeyTypePtr		/* from */,
46305b261ecSmrg    XkbKeyTypePtr		/* into */,
46405b261ecSmrg    int				/* num_types */
46505b261ecSmrg);
46605b261ecSmrg
46705b261ecSmrgextern	Status	XkbResizeKeyType(
46805b261ecSmrg    XkbDescPtr		/* xkb */,
46905b261ecSmrg    int			/* type_ndx */,
47005b261ecSmrg    int			/* map_count */,
47105b261ecSmrg    Bool		/* want_preserve */,
47205b261ecSmrg    int			/* new_num_lvls */
47305b261ecSmrg);
47405b261ecSmrg
47505b261ecSmrgextern	void	XkbFreeKeyboard(
47605b261ecSmrg	XkbDescPtr		/* xkb */,
47705b261ecSmrg	unsigned int		/* which */,
47805b261ecSmrg	Bool			/* freeDesc */
47905b261ecSmrg);
48005b261ecSmrg
48105b261ecSmrgextern  void XkbSetActionKeyMods(
48205b261ecSmrg	XkbDescPtr		/* xkb */,
48305b261ecSmrg	XkbAction *		/* act */,
48405b261ecSmrg	unsigned int 		/* mods */
48505b261ecSmrg);
48605b261ecSmrg
48705b261ecSmrgextern Bool XkbCheckActionVMods(
48805b261ecSmrg	XkbDescPtr		/* xkb */,
48905b261ecSmrg	XkbAction *		/* act */,
49005b261ecSmrg	unsigned int 		/* changed */
49105b261ecSmrg);
49205b261ecSmrg
49305b261ecSmrgextern	unsigned int XkbMaskForVMask(
49405b261ecSmrg    XkbDescPtr		/* xkb */,
49505b261ecSmrg    unsigned int	/* vmask */
49605b261ecSmrg);
49705b261ecSmrg
49805b261ecSmrgextern Bool XkbVirtualModsToReal(
49905b261ecSmrg	XkbDescPtr	/* xkb */,
50005b261ecSmrg	unsigned int	/* virtua_mask */,
50105b261ecSmrg	unsigned int *	/* mask_rtrn */
50205b261ecSmrg);
50305b261ecSmrg
50405b261ecSmrgextern	unsigned int	XkbAdjustGroup(
50505b261ecSmrg    int			/* group */,
50605b261ecSmrg    XkbControlsPtr	/* ctrls */
50705b261ecSmrg);
50805b261ecSmrg
50905b261ecSmrgextern KeySym *XkbResizeKeySyms(
51005b261ecSmrg    XkbDescPtr		/* xkb */,
51105b261ecSmrg    int 		/* key */,
51205b261ecSmrg    int 		/* needed */
51305b261ecSmrg);
51405b261ecSmrg
51505b261ecSmrgextern XkbAction *XkbResizeKeyActions(
51605b261ecSmrg    XkbDescPtr		/* xkb */,
51705b261ecSmrg    int 		/* key */,
51805b261ecSmrg    int 		/* needed */
51905b261ecSmrg);
52005b261ecSmrg
52105b261ecSmrgextern void XkbUpdateKeyTypesFromCore(
52205b261ecSmrg    DeviceIntPtr	/* pXDev */,
52305b261ecSmrg    KeyCode 		/* first */,
52405b261ecSmrg    CARD8 		/* num */,
52505b261ecSmrg    XkbChangesPtr	/* pChanges */
52605b261ecSmrg);
52705b261ecSmrg
52805b261ecSmrgextern	void XkbUpdateDescActions(
52905b261ecSmrg    XkbDescPtr		/* xkb */,
53005b261ecSmrg    KeyCode		/* first */,
53105b261ecSmrg    CARD8		/* num */,
53205b261ecSmrg    XkbChangesPtr	/* changes */
53305b261ecSmrg);
53405b261ecSmrg
53505b261ecSmrgextern void XkbUpdateActions(
53605b261ecSmrg    DeviceIntPtr	/* pXDev */,
53705b261ecSmrg    KeyCode 		/* first */,
53805b261ecSmrg    CARD8 		/* num */,
53905b261ecSmrg    XkbChangesPtr  	/* pChanges */,
54005b261ecSmrg    unsigned int *	/* needChecksRtrn */,
54105b261ecSmrg    XkbEventCausePtr	/* cause */
54205b261ecSmrg);
54305b261ecSmrg
54405b261ecSmrgextern void XkbUpdateCoreDescription(
54505b261ecSmrg    DeviceIntPtr	/* keybd */,
54605b261ecSmrg    Bool		/* resize */
54705b261ecSmrg);
54805b261ecSmrg
54905b261ecSmrgextern void XkbApplyMappingChange(
55005b261ecSmrg    DeviceIntPtr	/* pXDev */,
55105b261ecSmrg    CARD8 		/* request */,
55205b261ecSmrg    KeyCode 		/* firstKey */,
55305b261ecSmrg    CARD8 		/* num */,
55405b261ecSmrg    ClientPtr		/* client */
55505b261ecSmrg);
55605b261ecSmrg
55705b261ecSmrgextern void XkbSetIndicators(
55805b261ecSmrg    DeviceIntPtr		/* pXDev */,
55905b261ecSmrg    CARD32			/* affect */,
56005b261ecSmrg    CARD32			/* values */,
56105b261ecSmrg    XkbEventCausePtr		/* cause */
56205b261ecSmrg);
56305b261ecSmrg
56405b261ecSmrgextern void XkbUpdateIndicators(
56505b261ecSmrg    DeviceIntPtr		/* keybd */,
56605b261ecSmrg    CARD32		 	/* changed */,
56705b261ecSmrg    Bool			/* check_edevs */,
56805b261ecSmrg    XkbChangesPtr		/* pChanges */,
56905b261ecSmrg    XkbEventCausePtr		/* cause */
57005b261ecSmrg);
57105b261ecSmrg
57205b261ecSmrgextern XkbSrvLedInfoPtr XkbAllocSrvLedInfo(
57305b261ecSmrg    DeviceIntPtr		/* dev */,
57405b261ecSmrg    KbdFeedbackPtr		/* kf */,
57505b261ecSmrg    LedFeedbackPtr		/* lf */,
57605b261ecSmrg    unsigned int		/* needed_parts */
57705b261ecSmrg);
57805b261ecSmrg
5794642e01fSmrgextern XkbSrvLedInfoPtr XkbCopySrvLedInfo(
5804642e01fSmrg    DeviceIntPtr		/* dev */,
5814642e01fSmrg    XkbSrvLedInfoPtr		/* src */,
5824642e01fSmrg    KbdFeedbackPtr		/* kf */,
5834642e01fSmrg    LedFeedbackPtr		/* lf */
5844642e01fSmrg);
5854642e01fSmrg
5864642e01fSmrg
58705b261ecSmrgextern XkbSrvLedInfoPtr XkbFindSrvLedInfo(
58805b261ecSmrg    DeviceIntPtr		/* dev */,
58905b261ecSmrg    unsigned int		/* class */,
59005b261ecSmrg    unsigned int		/* id */,
59105b261ecSmrg    unsigned int		/* needed_parts */
59205b261ecSmrg);
59305b261ecSmrg
59405b261ecSmrgextern void XkbApplyLedNameChanges(
59505b261ecSmrg    DeviceIntPtr		/* dev */,
59605b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
59705b261ecSmrg    unsigned int		/* changed_names */,
59805b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
59905b261ecSmrg    XkbChangesPtr		/* changes */,
60005b261ecSmrg    XkbEventCausePtr		/* cause */
60105b261ecSmrg);
60205b261ecSmrg
60305b261ecSmrgextern void XkbApplyLedMapChanges(
60405b261ecSmrg    DeviceIntPtr		/* dev */,
60505b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
60605b261ecSmrg    unsigned int		/* changed_maps */,
60705b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
60805b261ecSmrg    XkbChangesPtr		/* changes */,
60905b261ecSmrg    XkbEventCausePtr		/* cause */
61005b261ecSmrg);
61105b261ecSmrg
61205b261ecSmrgextern void XkbApplyLedStateChanges(
61305b261ecSmrg    DeviceIntPtr		/* dev */,
61405b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
61505b261ecSmrg    unsigned int		/* changed_leds */,
61605b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
61705b261ecSmrg    XkbChangesPtr		/* changes */,
61805b261ecSmrg    XkbEventCausePtr		/* cause */
61905b261ecSmrg);
62005b261ecSmrg
62105b261ecSmrgextern void XkbFlushLedEvents(
62205b261ecSmrg    DeviceIntPtr		/* dev */,
62305b261ecSmrg    DeviceIntPtr		/* kbd */,
62405b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
62505b261ecSmrg    xkbExtensionDeviceNotify *	/* ed */,
62605b261ecSmrg    XkbChangesPtr		/* changes */,
62705b261ecSmrg    XkbEventCausePtr		/* cause */
62805b261ecSmrg);
62905b261ecSmrg
63005b261ecSmrgextern unsigned int XkbIndicatorsToUpdate(
63105b261ecSmrg    DeviceIntPtr		/* dev */,
63205b261ecSmrg    unsigned long		/* state_changes */,
63305b261ecSmrg    Bool			/* enabled_ctrl_changes */
63405b261ecSmrg);
63505b261ecSmrg
63605b261ecSmrgextern void XkbComputeDerivedState(
63705b261ecSmrg    XkbSrvInfoPtr		/* xkbi */
63805b261ecSmrg);
63905b261ecSmrg
64005b261ecSmrgextern void XkbCheckSecondaryEffects(
64105b261ecSmrg    XkbSrvInfoPtr		/* xkbi */,
64205b261ecSmrg    unsigned int		/* which */,
64305b261ecSmrg    XkbChangesPtr		/* changes */,
64405b261ecSmrg    XkbEventCausePtr		/* cause */
64505b261ecSmrg);
64605b261ecSmrg
64705b261ecSmrgextern void XkbCheckIndicatorMaps(
64805b261ecSmrg    DeviceIntPtr		/* dev */,
64905b261ecSmrg    XkbSrvLedInfoPtr		/* sli */,
65005b261ecSmrg    unsigned int		/* which */
65105b261ecSmrg);
65205b261ecSmrg
65305b261ecSmrgextern unsigned int XkbStateChangedFlags(
65405b261ecSmrg    XkbStatePtr			/* old */,
65505b261ecSmrg    XkbStatePtr			/* new */
65605b261ecSmrg);
65705b261ecSmrg
65805b261ecSmrgextern	void XkbSendStateNotify(
65905b261ecSmrg       DeviceIntPtr	/* kbd */,
66005b261ecSmrg       xkbStateNotify *	/* pSN */
66105b261ecSmrg);
66205b261ecSmrg
66305b261ecSmrgextern	void XkbSendMapNotify(
66405b261ecSmrg       DeviceIntPtr	/* kbd */,
66505b261ecSmrg       xkbMapNotify *	/* ev */
66605b261ecSmrg);
66705b261ecSmrg
66805b261ecSmrgextern	int  XkbComputeControlsNotify(
66905b261ecSmrg	DeviceIntPtr		/* kbd */,
67005b261ecSmrg	XkbControlsPtr		/* old */,
67105b261ecSmrg	XkbControlsPtr		/* new */,
67205b261ecSmrg	xkbControlsNotify *	/* pCN */,
67305b261ecSmrg	Bool			/* forceCtrlProc */
67405b261ecSmrg);
67505b261ecSmrg
67605b261ecSmrgextern	void XkbSendControlsNotify(
67705b261ecSmrg       DeviceIntPtr		/* kbd */,
67805b261ecSmrg       xkbControlsNotify *	/* ev */
67905b261ecSmrg);
68005b261ecSmrg
68105b261ecSmrgextern	void XkbSendCompatMapNotify(
68205b261ecSmrg	DeviceIntPtr		/* kbd */,
68305b261ecSmrg	xkbCompatMapNotify *	/* ev */
68405b261ecSmrg);
68505b261ecSmrg
68605b261ecSmrgextern	void XkbHandleBell(
68705b261ecSmrg       BOOL		/* force */,
68805b261ecSmrg       BOOL		/* eventOnly */,
68905b261ecSmrg       DeviceIntPtr	/* kbd */,
69005b261ecSmrg       CARD8		/* percent */,
69105b261ecSmrg       pointer 		/* ctrl */,
69205b261ecSmrg       CARD8		/* class */,
69305b261ecSmrg       Atom		/* name */,
69405b261ecSmrg       WindowPtr	/* pWin */,
69505b261ecSmrg       ClientPtr	/* pClient */
69605b261ecSmrg);
69705b261ecSmrg
69805b261ecSmrgextern	void XkbSendAccessXNotify(
69905b261ecSmrg       DeviceIntPtr		/* kbd */,
70005b261ecSmrg       xkbAccessXNotify *	/* pEv */
70105b261ecSmrg);
70205b261ecSmrg
70305b261ecSmrgextern	void XkbSendNamesNotify(
70405b261ecSmrg       DeviceIntPtr	/* kbd */,
70505b261ecSmrg       xkbNamesNotify *	/* ev */
70605b261ecSmrg);
70705b261ecSmrg
70805b261ecSmrgextern	void XkbSendCompatNotify(
70905b261ecSmrg       DeviceIntPtr		/* kbd */,
71005b261ecSmrg       xkbCompatMapNotify *	/* ev */
71105b261ecSmrg);
71205b261ecSmrg
71305b261ecSmrgextern	void XkbSendActionMessage(
71405b261ecSmrg       DeviceIntPtr		/* kbd */,
71505b261ecSmrg       xkbActionMessage *	/* ev */
71605b261ecSmrg);
71705b261ecSmrg
71805b261ecSmrgextern	void XkbSendExtensionDeviceNotify(
71905b261ecSmrg       DeviceIntPtr			/* kbd */,
72005b261ecSmrg       ClientPtr			/* client */,
72105b261ecSmrg       xkbExtensionDeviceNotify *	/* ev */
72205b261ecSmrg);
72305b261ecSmrg
72405b261ecSmrgextern void XkbSendNotification(
72505b261ecSmrg    DeviceIntPtr		/* kbd */,
72605b261ecSmrg    XkbChangesPtr		/* pChanges */,
72705b261ecSmrg    XkbEventCausePtr		/* cause */
72805b261ecSmrg);
72905b261ecSmrg
73005b261ecSmrgextern void XkbProcessKeyboardEvent(
73105b261ecSmrg    struct _xEvent * 		/* xE */,
73205b261ecSmrg    DeviceIntPtr		/* keybd */,
73305b261ecSmrg    int 			/* count */
73405b261ecSmrg);
73505b261ecSmrg
73605b261ecSmrgextern void XkbHandleActions(
73705b261ecSmrg    DeviceIntPtr		/* dev */,
73805b261ecSmrg    DeviceIntPtr		/* kbd */,
73905b261ecSmrg    struct _xEvent * 		/* xE */,
74005b261ecSmrg    int 			/* count */
74105b261ecSmrg);
74205b261ecSmrg
74305b261ecSmrgextern Bool XkbEnableDisableControls(
74405b261ecSmrg    XkbSrvInfoPtr	/* xkbi */,
74505b261ecSmrg    unsigned long	/* change */,
74605b261ecSmrg    unsigned long	/* newValues */,
74705b261ecSmrg    XkbChangesPtr	/* changes */,
74805b261ecSmrg    XkbEventCausePtr	/* cause */
74905b261ecSmrg);
75005b261ecSmrg
75105b261ecSmrgextern void AccessXInit(
75205b261ecSmrg    DeviceIntPtr        /* dev */
75305b261ecSmrg);
75405b261ecSmrg
75505b261ecSmrgextern Bool AccessXFilterPressEvent(
7564642e01fSmrg    struct _xEvent *	/* xE */,
7574642e01fSmrg    DeviceIntPtr	/* keybd */,
75805b261ecSmrg    int				/* count */
75905b261ecSmrg);
76005b261ecSmrg
76105b261ecSmrgextern Bool AccessXFilterReleaseEvent(
7624642e01fSmrg    struct _xEvent *	/* xE */,
7634642e01fSmrg    DeviceIntPtr	/* keybd */,
76405b261ecSmrg    int				/* count */
76505b261ecSmrg);
76605b261ecSmrg
76705b261ecSmrgextern void AccessXCancelRepeatKey(
76805b261ecSmrg    XkbSrvInfoPtr	/* xkbi */,
76905b261ecSmrg    KeyCode		/* key */
77005b261ecSmrg);
77105b261ecSmrg
77205b261ecSmrgextern void AccessXComputeCurveFactor(
77305b261ecSmrg    XkbSrvInfoPtr	/* xkbi */,
77405b261ecSmrg    XkbControlsPtr	/* ctrls */
77505b261ecSmrg);
77605b261ecSmrg
77705b261ecSmrgextern	XkbInterestPtr XkbFindClientResource(
77805b261ecSmrg       DevicePtr	/* inDev */,
77905b261ecSmrg       ClientPtr	/* client */
78005b261ecSmrg);
78105b261ecSmrg
78205b261ecSmrgextern	XkbInterestPtr XkbAddClientResource(
78305b261ecSmrg       DevicePtr	/* inDev */,
78405b261ecSmrg       ClientPtr	/* client */,
78505b261ecSmrg       XID		/* id */
78605b261ecSmrg);
78705b261ecSmrg
78805b261ecSmrgextern	int XkbRemoveResourceClient(
78905b261ecSmrg       DevicePtr	/* inDev */,
79005b261ecSmrg       XID		/* id */
79105b261ecSmrg);
79205b261ecSmrg
79305b261ecSmrgextern int XkbDDXInitDevice(
79405b261ecSmrg    DeviceIntPtr        /* dev */
79505b261ecSmrg);
79605b261ecSmrg
79705b261ecSmrgextern	int XkbDDXAccessXBeep(
79805b261ecSmrg    DeviceIntPtr        /* dev */,
79905b261ecSmrg    unsigned int	/* what */,
80005b261ecSmrg    unsigned int	/* which */
80105b261ecSmrg);
80205b261ecSmrg
80305b261ecSmrgextern	void XkbDDXKeyClick(
80405b261ecSmrg    DeviceIntPtr	/* dev */,
80505b261ecSmrg    int			/* keycode */,
80605b261ecSmrg    int			/* synthetic */
80705b261ecSmrg);
80805b261ecSmrg
80905b261ecSmrgextern 	int XkbDDXUsesSoftRepeat(
81005b261ecSmrg    DeviceIntPtr	/* dev */
81105b261ecSmrg);
81205b261ecSmrg
81305b261ecSmrgextern	void XkbDDXKeybdCtrlProc(
81405b261ecSmrg	DeviceIntPtr	/* dev */,
81505b261ecSmrg	KeybdCtrl *	/* ctrl */
81605b261ecSmrg);
81705b261ecSmrg
81805b261ecSmrgextern void XkbDDXChangeControls(
81905b261ecSmrg	DeviceIntPtr	/* dev */,
82005b261ecSmrg	XkbControlsPtr 	/* old */,
82105b261ecSmrg	XkbControlsPtr 	/* new */
82205b261ecSmrg);
82305b261ecSmrg
82405b261ecSmrgextern void XkbDDXUpdateDeviceIndicators(
82505b261ecSmrg	DeviceIntPtr		/* dev */,
82605b261ecSmrg	XkbSrvLedInfoPtr	/* sli */,
82705b261ecSmrg	CARD32			/* newState */
82805b261ecSmrg);
82905b261ecSmrg
83005b261ecSmrgextern void XkbDDXFakePointerButton(
83105b261ecSmrg	int 		/* event */,
83205b261ecSmrg	int		/* button */
83305b261ecSmrg);
83405b261ecSmrg
83505b261ecSmrgextern void XkbDDXFakePointerMotion(
83605b261ecSmrg 	unsigned int	/* flags */,
83705b261ecSmrg	int		/* x */,
83805b261ecSmrg	int		/* y */
83905b261ecSmrg);
84005b261ecSmrg
84105b261ecSmrgextern void XkbDDXFakeDeviceButton(
84205b261ecSmrg	DeviceIntPtr	/* dev */,
84305b261ecSmrg	Bool		/* press */,
84405b261ecSmrg	int		/* button */
84505b261ecSmrg);
84605b261ecSmrg
84705b261ecSmrgextern int XkbDDXTerminateServer(
84805b261ecSmrg	DeviceIntPtr	/* dev */,
84905b261ecSmrg	KeyCode		/* key */,
85005b261ecSmrg	XkbAction *	/* act */
85105b261ecSmrg);
85205b261ecSmrg
85305b261ecSmrgextern int XkbDDXSwitchScreen(
85405b261ecSmrg	DeviceIntPtr	/* dev */,
85505b261ecSmrg	KeyCode		/* key */,
85605b261ecSmrg	XkbAction *	/* act */
85705b261ecSmrg);
85805b261ecSmrg
85905b261ecSmrgextern int XkbDDXPrivate(
86005b261ecSmrg	DeviceIntPtr	/* dev */,
86105b261ecSmrg	KeyCode		/* key */,
86205b261ecSmrg	XkbAction *	/* act */
86305b261ecSmrg);
86405b261ecSmrg
86505b261ecSmrgextern void XkbDisableComputedAutoRepeats(
86605b261ecSmrg	DeviceIntPtr 	/* pXDev */,
86705b261ecSmrg	unsigned int	/* key */
86805b261ecSmrg);
86905b261ecSmrg
87005b261ecSmrgextern void XkbSetRepeatKeys(
87105b261ecSmrg	DeviceIntPtr 	/* pXDev */,
87205b261ecSmrg	int		/* key */,
87305b261ecSmrg	int	 	/* onoff */
87405b261ecSmrg);
87505b261ecSmrg
87605b261ecSmrgextern	int XkbLatchModifiers(
87705b261ecSmrg	DeviceIntPtr 	/* pXDev */,
87805b261ecSmrg	CARD8 		/* mask */,
87905b261ecSmrg	CARD8 		/* latches */
88005b261ecSmrg);
88105b261ecSmrg
88205b261ecSmrgextern	int XkbLatchGroup(
88305b261ecSmrg	DeviceIntPtr  	/* pXDev */,
88405b261ecSmrg	int	  	/* group */
88505b261ecSmrg);
88605b261ecSmrg
88705b261ecSmrgextern	void XkbClearAllLatchesAndLocks(
88805b261ecSmrg	DeviceIntPtr		/* dev */,
88905b261ecSmrg	XkbSrvInfoPtr		/* xkbi */,
89005b261ecSmrg	Bool			/* genEv */,
89105b261ecSmrg	XkbEventCausePtr	/* cause */
89205b261ecSmrg);
89305b261ecSmrg
89405b261ecSmrgextern	void	XkbSetRulesDflts(
89505b261ecSmrg	char *			/* rulesFile */,
89605b261ecSmrg	char *			/* model */,
89705b261ecSmrg	char *			/* layout */,
89805b261ecSmrg	char *			/* variant */,
89905b261ecSmrg	char *			/* options */
90005b261ecSmrg);
90105b261ecSmrg
9024642e01fSmrgextern	void	XkbDeleteRulesDflts(
9034642e01fSmrg	void
9044642e01fSmrg);
9054642e01fSmrg
90605b261ecSmrgextern	void	XkbInitDevice(
90705b261ecSmrg	DeviceIntPtr 	/* pXDev */
90805b261ecSmrg);
90905b261ecSmrg
91005b261ecSmrgextern	Bool	XkbInitKeyboardDeviceStruct(
91105b261ecSmrg	DeviceIntPtr 		/* pXDev */,
91205b261ecSmrg	XkbComponentNamesPtr	/* pNames */,
91305b261ecSmrg	KeySymsPtr		/* pSyms */,
91405b261ecSmrg	CARD8 			/* pMods */[],
91505b261ecSmrg	BellProcPtr		/* bellProc */,
91605b261ecSmrg	KbdCtrlProcPtr		/* ctrlProc */
91705b261ecSmrg);
91805b261ecSmrg
91905b261ecSmrgextern	int SProcXkbDispatch(
92005b261ecSmrg	ClientPtr		/* client */
92105b261ecSmrg);
92205b261ecSmrg
92305b261ecSmrgextern XkbGeometryPtr XkbLookupNamedGeometry(
92405b261ecSmrg	DeviceIntPtr		/* dev */,
92505b261ecSmrg	Atom			/* name */,
92605b261ecSmrg	Bool *			/* shouldFree */
92705b261ecSmrg);
92805b261ecSmrg
92905b261ecSmrgextern char *	_XkbDupString(
93005b261ecSmrg	char *			/* str */
93105b261ecSmrg);
93205b261ecSmrg
93305b261ecSmrgextern void	XkbConvertCase(
93405b261ecSmrg	KeySym 			/* sym */,
93505b261ecSmrg	KeySym *		/* lower */,
93605b261ecSmrg	KeySym *		/* upper */
93705b261ecSmrg);
93805b261ecSmrg
93905b261ecSmrgextern	Status	 XkbChangeKeycodeRange(
94005b261ecSmrg	XkbDescPtr		/* xkb */,
94105b261ecSmrg	int 			/* minKC */,
94205b261ecSmrg	int 			/* maxKC */,
94305b261ecSmrg	XkbChangesPtr		/* changes */
94405b261ecSmrg);
94505b261ecSmrg
94605b261ecSmrgextern int XkbFinishDeviceInit(
94705b261ecSmrg	DeviceIntPtr		/* pXDev */
94805b261ecSmrg);
94905b261ecSmrg
95005b261ecSmrgextern void XkbFreeSrvLedInfo(
95105b261ecSmrg	XkbSrvLedInfoPtr	/* sli */
95205b261ecSmrg);
95305b261ecSmrg
95405b261ecSmrgextern void XkbFreeInfo(
95505b261ecSmrg	XkbSrvInfoPtr		/* xkbi */
95605b261ecSmrg);
95705b261ecSmrg
95805b261ecSmrgextern Status XkbChangeTypesOfKey(
95905b261ecSmrg	XkbDescPtr		/* xkb */,
96005b261ecSmrg	int			/* key */,
96105b261ecSmrg	int			/* nGroups */,
96205b261ecSmrg	unsigned int		/* groups */,
96305b261ecSmrg	int *			/* newTypesIn */,
96405b261ecSmrg	XkbMapChangesPtr	/* changes */
96505b261ecSmrg);
96605b261ecSmrg
96705b261ecSmrgextern int XkbKeyTypesForCoreSymbols(
96805b261ecSmrg	XkbDescPtr		/* xkb */,
96905b261ecSmrg	int			/* map_width */,
97005b261ecSmrg	KeySym *		/* core_syms */,
97105b261ecSmrg	unsigned int		/* protected */,
97205b261ecSmrg	int *			/* types_inout */,
97305b261ecSmrg	KeySym *		/* xkb_syms_rtrn */
97405b261ecSmrg);
97505b261ecSmrg
97605b261ecSmrgextern Bool XkbApplyCompatMapToKey(
97705b261ecSmrg	XkbDescPtr		/* xkb */,
97805b261ecSmrg	KeyCode			/* key */,
97905b261ecSmrg	XkbChangesPtr		/* changes */
98005b261ecSmrg);
98105b261ecSmrg
98205b261ecSmrgextern Bool XkbApplyVirtualModChanges(
98305b261ecSmrg	XkbDescPtr		/* xkb */,
98405b261ecSmrg	unsigned int		/* changed */,
98505b261ecSmrg	XkbChangesPtr		/* changes */
98605b261ecSmrg);
98705b261ecSmrg
98805b261ecSmrgextern void XkbSendNewKeyboardNotify(
98905b261ecSmrg	DeviceIntPtr		/* kbd */,
99005b261ecSmrg	xkbNewKeyboardNotify *	/* pNKN */
99105b261ecSmrg);
99205b261ecSmrg
9934642e01fSmrg#include "xkbfile.h"
99405b261ecSmrg#include <X11/extensions/XKMformat.h>
9954642e01fSmrg#include "xkbrules.h"
99605b261ecSmrg
99705b261ecSmrg#define	_XkbListKeymaps		0
99805b261ecSmrg#define	_XkbListKeycodes	1
99905b261ecSmrg#define	_XkbListTypes		2
100005b261ecSmrg#define	_XkbListCompat		3
100105b261ecSmrg#define	_XkbListSymbols		4
100205b261ecSmrg#define	_XkbListGeometry	5
100305b261ecSmrg#define	_XkbListNumComponents	6
100405b261ecSmrg
100505b261ecSmrgtypedef struct _XkbSrvListInfo {
100605b261ecSmrg	int		szPool;
100705b261ecSmrg	int		nPool;
100805b261ecSmrg	char *		pool;
100905b261ecSmrg
101005b261ecSmrg	int		maxRtrn;
101105b261ecSmrg	int		nTotal;
101205b261ecSmrg
101305b261ecSmrg	char *		pattern[_XkbListNumComponents];
101405b261ecSmrg	int		nFound[_XkbListNumComponents];
101505b261ecSmrg} XkbSrvListInfoRec,*XkbSrvListInfoPtr;
101605b261ecSmrg
101705b261ecSmrgextern	Status	XkbDDXList(
101805b261ecSmrg	DeviceIntPtr		/* dev */,
101905b261ecSmrg	XkbSrvListInfoPtr	/* listing */,
102005b261ecSmrg	ClientPtr		/* client */
102105b261ecSmrg);
102205b261ecSmrg
102305b261ecSmrgextern	unsigned int XkbDDXLoadKeymapByNames(
102405b261ecSmrg	DeviceIntPtr		/* keybd */,
102505b261ecSmrg	XkbComponentNamesPtr	/* names */,
102605b261ecSmrg	unsigned int		/* want */,
102705b261ecSmrg	unsigned int		/* need */,
10284642e01fSmrg	XkbDescPtr *		/* finfoRtrn */,
102905b261ecSmrg	char *			/* keymapNameRtrn */,
103005b261ecSmrg	int 			/* keymapNameRtrnLen */
103105b261ecSmrg);
103205b261ecSmrg
103305b261ecSmrgextern	Bool XkbDDXNamesFromRules(
103405b261ecSmrg	DeviceIntPtr		/* keybd */,
103505b261ecSmrg	char *			/* rules */,
103605b261ecSmrg	XkbRF_VarDefsPtr	/* defs */,
103705b261ecSmrg	XkbComponentNamesPtr	/* names */
103805b261ecSmrg);
103905b261ecSmrg
104005b261ecSmrgextern	Bool XkbDDXApplyConfig(
10414642e01fSmrg	void *	/* cfg_in */,
104205b261ecSmrg	XkbSrvInfoPtr	/* xkbi */
104305b261ecSmrg);
104405b261ecSmrg
104505b261ecSmrgextern	int _XkbStrCaseCmp(
104605b261ecSmrg	char *			/* str1 */,
104705b261ecSmrg	char *			/* str2 */
104805b261ecSmrg);
104905b261ecSmrg
105005b261ecSmrg_XFUNCPROTOEND
105105b261ecSmrg
10524642e01fSmrg#define	XkbAtomGetString(s)	NameForAtom(s)
105305b261ecSmrg
105405b261ecSmrg#endif /* _XKBSRV_H_ */
1055