xref: /OK3568_Linux_fs/external/xserver/include/xkbsrv.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /************************************************************
2*4882a593Smuzhiyun Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun Permission to use, copy, modify, and distribute this
5*4882a593Smuzhiyun software and its documentation for any purpose and without
6*4882a593Smuzhiyun fee is hereby granted, provided that the above copyright
7*4882a593Smuzhiyun notice appear in all copies and that both that copyright
8*4882a593Smuzhiyun notice and this permission notice appear in supporting
9*4882a593Smuzhiyun documentation, and that the name of Silicon Graphics not be
10*4882a593Smuzhiyun used in advertising or publicity pertaining to distribution
11*4882a593Smuzhiyun of the software without specific prior written permission.
12*4882a593Smuzhiyun Silicon Graphics makes no representation about the suitability
13*4882a593Smuzhiyun of this software for any purpose. It is provided "as is"
14*4882a593Smuzhiyun without any express or implied warranty.
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17*4882a593Smuzhiyun SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18*4882a593Smuzhiyun AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19*4882a593Smuzhiyun GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20*4882a593Smuzhiyun DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21*4882a593Smuzhiyun DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
22*4882a593Smuzhiyun OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
23*4882a593Smuzhiyun THE USE OR PERFORMANCE OF THIS SOFTWARE.
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun ********************************************************/
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #ifndef _XKBSRV_H_
28*4882a593Smuzhiyun #define	_XKBSRV_H_
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define XkbAllocClientMap		SrvXkbAllocClientMap
31*4882a593Smuzhiyun #define XkbAllocServerMap		SrvXkbAllocServerMap
32*4882a593Smuzhiyun #define XkbChangeTypesOfKey		SrvXkbChangeTypesOfKey
33*4882a593Smuzhiyun #define XkbCopyKeyTypes			SrvXkbCopyKeyTypes
34*4882a593Smuzhiyun #define XkbFreeClientMap		SrvXkbFreeClientMap
35*4882a593Smuzhiyun #define XkbFreeServerMap		SrvXkbFreeServerMap
36*4882a593Smuzhiyun #define	XkbKeyTypesForCoreSymbols	SrvXkbKeyTypesForCoreSymbols
37*4882a593Smuzhiyun #define	XkbApplyCompatMapToKey		SrvXkbApplyCompatMapToKey
38*4882a593Smuzhiyun #define XkbResizeKeyActions		SrvXkbResizeKeyActions
39*4882a593Smuzhiyun #define XkbResizeKeySyms		SrvXkbResizeKeySyms
40*4882a593Smuzhiyun #define XkbResizeKeyType		SrvXkbResizeKeyType
41*4882a593Smuzhiyun #define XkbAllocCompatMap		SrvXkbAllocCompatMap
42*4882a593Smuzhiyun #define XkbAllocControls		SrvXkbAllocControls
43*4882a593Smuzhiyun #define XkbAllocIndicatorMaps		SrvXkbAllocIndicatorMaps
44*4882a593Smuzhiyun #define XkbAllocKeyboard		SrvXkbAllocKeyboard
45*4882a593Smuzhiyun #define XkbAllocNames			SrvXkbAllocNames
46*4882a593Smuzhiyun #define XkbFreeCompatMap		SrvXkbFreeCompatMap
47*4882a593Smuzhiyun #define XkbFreeKeyboard			SrvXkbFreeKeyboard
48*4882a593Smuzhiyun #define XkbFreeNames			SrvXkbFreeNames
49*4882a593Smuzhiyun #define XkbLatchModifiers		SrvXkbLatchModifiers
50*4882a593Smuzhiyun #define XkbLatchGroup			SrvXkbLatchGroup
51*4882a593Smuzhiyun #define XkbVirtualModsToReal		SrvXkbVirtualModsToReal
52*4882a593Smuzhiyun #define	XkbChangeKeycodeRange		SrvXkbChangeKeycodeRange
53*4882a593Smuzhiyun #define	XkbApplyVirtualModChanges	SrvXkbApplyVirtualModChanges
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun #include <X11/extensions/XKBproto.h>
56*4882a593Smuzhiyun #include "xkbstr.h"
57*4882a593Smuzhiyun #include "xkbrules.h"
58*4882a593Smuzhiyun #include "inputstr.h"
59*4882a593Smuzhiyun #include "events.h"
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun typedef struct _XkbInterest {
62*4882a593Smuzhiyun     DeviceIntPtr dev;
63*4882a593Smuzhiyun     ClientPtr client;
64*4882a593Smuzhiyun     XID resource;
65*4882a593Smuzhiyun     struct _XkbInterest *next;
66*4882a593Smuzhiyun     CARD16 extDevNotifyMask;
67*4882a593Smuzhiyun     CARD16 stateNotifyMask;
68*4882a593Smuzhiyun     CARD16 namesNotifyMask;
69*4882a593Smuzhiyun     CARD32 ctrlsNotifyMask;
70*4882a593Smuzhiyun     CARD8 compatNotifyMask;
71*4882a593Smuzhiyun     BOOL bellNotifyMask;
72*4882a593Smuzhiyun     BOOL actionMessageMask;
73*4882a593Smuzhiyun     CARD16 accessXNotifyMask;
74*4882a593Smuzhiyun     CARD32 iStateNotifyMask;
75*4882a593Smuzhiyun     CARD32 iMapNotifyMask;
76*4882a593Smuzhiyun     CARD16 altSymsNotifyMask;
77*4882a593Smuzhiyun     CARD32 autoCtrls;
78*4882a593Smuzhiyun     CARD32 autoCtrlValues;
79*4882a593Smuzhiyun } XkbInterestRec, *XkbInterestPtr;
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun typedef struct _XkbRadioGroup {
82*4882a593Smuzhiyun     CARD8 flags;
83*4882a593Smuzhiyun     CARD8 nMembers;
84*4882a593Smuzhiyun     CARD8 dfltDown;
85*4882a593Smuzhiyun     CARD8 currentDown;
86*4882a593Smuzhiyun     CARD8 members[XkbRGMaxMembers];
87*4882a593Smuzhiyun } XkbRadioGroupRec, *XkbRadioGroupPtr;
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun typedef struct _XkbEventCause {
90*4882a593Smuzhiyun     CARD8 kc;
91*4882a593Smuzhiyun     CARD8 event;
92*4882a593Smuzhiyun     CARD8 mjr;
93*4882a593Smuzhiyun     CARD8 mnr;
94*4882a593Smuzhiyun     ClientPtr client;
95*4882a593Smuzhiyun } XkbEventCauseRec, *XkbEventCausePtr;
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define	XkbSetCauseKey(c,k,e)	{ (c)->kc= (k),(c)->event= (e),\
98*4882a593Smuzhiyun 				  (c)->mjr= (c)->mnr= 0; \
99*4882a593Smuzhiyun 				  (c)->client= NULL; }
100*4882a593Smuzhiyun #define	XkbSetCauseReq(c,j,n,cl) { (c)->kc= (c)->event= 0,\
101*4882a593Smuzhiyun 				  (c)->mjr= (j),(c)->mnr= (n);\
102*4882a593Smuzhiyun 				  (c)->client= (cl); }
103*4882a593Smuzhiyun #define	XkbSetCauseCoreReq(c,e,cl) XkbSetCauseReq(c,e,0,cl)
104*4882a593Smuzhiyun #define	XkbSetCauseXkbReq(c,e,cl)  XkbSetCauseReq(c,XkbReqCode,e,cl)
105*4882a593Smuzhiyun #define	XkbSetCauseUnknown(c)	   XkbSetCauseKey(c,0,0)
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun #define	_OFF_TIMER		0
108*4882a593Smuzhiyun #define	_KRG_WARN_TIMER		1
109*4882a593Smuzhiyun #define	_KRG_TIMER		2
110*4882a593Smuzhiyun #define	_SK_TIMEOUT_TIMER	3
111*4882a593Smuzhiyun #define	_ALL_TIMEOUT_TIMER	4
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #define	_BEEP_NONE		0
114*4882a593Smuzhiyun #define	_BEEP_FEATURE_ON	1
115*4882a593Smuzhiyun #define	_BEEP_FEATURE_OFF	2
116*4882a593Smuzhiyun #define	_BEEP_FEATURE_CHANGE	3
117*4882a593Smuzhiyun #define	_BEEP_SLOW_WARN		4
118*4882a593Smuzhiyun #define	_BEEP_SLOW_PRESS	5
119*4882a593Smuzhiyun #define	_BEEP_SLOW_ACCEPT	6
120*4882a593Smuzhiyun #define	_BEEP_SLOW_REJECT	7
121*4882a593Smuzhiyun #define	_BEEP_SLOW_RELEASE	8
122*4882a593Smuzhiyun #define	_BEEP_STICKY_LATCH	9
123*4882a593Smuzhiyun #define	_BEEP_STICKY_LOCK	10
124*4882a593Smuzhiyun #define	_BEEP_STICKY_UNLOCK	11
125*4882a593Smuzhiyun #define	_BEEP_LED_ON		12
126*4882a593Smuzhiyun #define	_BEEP_LED_OFF		13
127*4882a593Smuzhiyun #define	_BEEP_LED_CHANGE	14
128*4882a593Smuzhiyun #define	_BEEP_BOUNCE_REJECT	15
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun typedef struct _XkbFilter {
131*4882a593Smuzhiyun     CARD16 keycode;
132*4882a593Smuzhiyun     CARD8 what;
133*4882a593Smuzhiyun     CARD8 active;
134*4882a593Smuzhiyun     CARD8 filterOthers;
135*4882a593Smuzhiyun     CARD32 priv;
136*4882a593Smuzhiyun     XkbAction upAction;
137*4882a593Smuzhiyun     int (*filter) (struct _XkbSrvInfo * /* xkbi */ ,
138*4882a593Smuzhiyun                    struct _XkbFilter * /* filter */ ,
139*4882a593Smuzhiyun                    unsigned /* keycode */ ,
140*4882a593Smuzhiyun                    XkbAction *  /* action */
141*4882a593Smuzhiyun         );
142*4882a593Smuzhiyun     struct _XkbFilter *next;
143*4882a593Smuzhiyun } XkbFilterRec, *XkbFilterPtr;
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun typedef Bool (*XkbSrvCheckRepeatPtr) (DeviceIntPtr dev,
146*4882a593Smuzhiyun                                       struct _XkbSrvInfo * /* xkbi */ ,
147*4882a593Smuzhiyun                                       unsigned /* keycode */);
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun typedef struct _XkbSrvInfo {
150*4882a593Smuzhiyun     XkbStateRec prev_state;
151*4882a593Smuzhiyun     XkbStateRec state;
152*4882a593Smuzhiyun     XkbDescPtr desc;
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun     DeviceIntPtr device;
155*4882a593Smuzhiyun     KbdCtrlProcPtr kbdProc;
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun     XkbRadioGroupPtr radioGroups;
158*4882a593Smuzhiyun     CARD8 nRadioGroups;
159*4882a593Smuzhiyun     CARD8 clearMods;
160*4882a593Smuzhiyun     CARD8 setMods;
161*4882a593Smuzhiyun     INT16 groupChange;
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun     CARD16 dfltPtrDelta;
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun     double mouseKeysCurve;
166*4882a593Smuzhiyun     double mouseKeysCurveFactor;
167*4882a593Smuzhiyun     INT16 mouseKeysDX;
168*4882a593Smuzhiyun     INT16 mouseKeysDY;
169*4882a593Smuzhiyun     CARD8 mouseKeysFlags;
170*4882a593Smuzhiyun     Bool mouseKeysAccel;
171*4882a593Smuzhiyun     CARD8 mouseKeysCounter;
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun     CARD8 lockedPtrButtons;
174*4882a593Smuzhiyun     CARD8 shiftKeyCount;
175*4882a593Smuzhiyun     KeyCode mouseKey;
176*4882a593Smuzhiyun     KeyCode inactiveKey;
177*4882a593Smuzhiyun     KeyCode slowKey;
178*4882a593Smuzhiyun     KeyCode slowKeyEnableKey;
179*4882a593Smuzhiyun     KeyCode repeatKey;
180*4882a593Smuzhiyun     CARD8 krgTimerActive;
181*4882a593Smuzhiyun     CARD8 beepType;
182*4882a593Smuzhiyun     CARD8 beepCount;
183*4882a593Smuzhiyun 
184*4882a593Smuzhiyun     CARD32 flags;
185*4882a593Smuzhiyun     CARD32 lastPtrEventTime;
186*4882a593Smuzhiyun     CARD32 lastShiftEventTime;
187*4882a593Smuzhiyun     OsTimerPtr beepTimer;
188*4882a593Smuzhiyun     OsTimerPtr mouseKeyTimer;
189*4882a593Smuzhiyun     OsTimerPtr slowKeysTimer;
190*4882a593Smuzhiyun     OsTimerPtr bounceKeysTimer;
191*4882a593Smuzhiyun     OsTimerPtr repeatKeyTimer;
192*4882a593Smuzhiyun     OsTimerPtr krgTimer;
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun     int szFilters;
195*4882a593Smuzhiyun     XkbFilterPtr filters;
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun     XkbSrvCheckRepeatPtr checkRepeat;
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun     char overlay_perkey_state[256/8]; /* bitfield */
200*4882a593Smuzhiyun } XkbSrvInfoRec, *XkbSrvInfoPtr;
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun #define	XkbSLI_IsDefault	(1L<<0)
203*4882a593Smuzhiyun #define	XkbSLI_HasOwnState	(1L<<1)
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun typedef struct _XkbSrvLedInfo {
206*4882a593Smuzhiyun     CARD16 flags;
207*4882a593Smuzhiyun     CARD16 class;
208*4882a593Smuzhiyun     CARD16 id;
209*4882a593Smuzhiyun     union {
210*4882a593Smuzhiyun         KbdFeedbackPtr kf;
211*4882a593Smuzhiyun         LedFeedbackPtr lf;
212*4882a593Smuzhiyun     } fb;
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun     CARD32 physIndicators;
215*4882a593Smuzhiyun     CARD32 autoState;
216*4882a593Smuzhiyun     CARD32 explicitState;
217*4882a593Smuzhiyun     CARD32 effectiveState;
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun     CARD32 mapsPresent;
220*4882a593Smuzhiyun     CARD32 namesPresent;
221*4882a593Smuzhiyun     XkbIndicatorMapPtr maps;
222*4882a593Smuzhiyun     Atom *names;
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun     CARD32 usesBase;
225*4882a593Smuzhiyun     CARD32 usesLatched;
226*4882a593Smuzhiyun     CARD32 usesLocked;
227*4882a593Smuzhiyun     CARD32 usesEffective;
228*4882a593Smuzhiyun     CARD32 usesCompat;
229*4882a593Smuzhiyun     CARD32 usesControls;
230*4882a593Smuzhiyun 
231*4882a593Smuzhiyun     CARD32 usedComponents;
232*4882a593Smuzhiyun } XkbSrvLedInfoRec, *XkbSrvLedInfoPtr;
233*4882a593Smuzhiyun 
234*4882a593Smuzhiyun /*
235*4882a593Smuzhiyun  * Settings for xkbClientFlags field (used by DIX)
236*4882a593Smuzhiyun  * These flags _must_ not overlap with XkbPCF_*
237*4882a593Smuzhiyun  */
238*4882a593Smuzhiyun #define _XkbClientInitialized           (1<<7)
239*4882a593Smuzhiyun #define _XkbClientIsAncient             (1<<6)
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun #define	_XkbWantsDetectableAutoRepeat(c)\
242*4882a593Smuzhiyun 	((c)->xkbClientFlags&XkbPCF_DetectableAutoRepeatMask)
243*4882a593Smuzhiyun 
244*4882a593Smuzhiyun /*
245*4882a593Smuzhiyun  * Settings for flags field
246*4882a593Smuzhiyun  */
247*4882a593Smuzhiyun #define	_XkbStateNotifyInProgress	(1<<0)
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun typedef struct {
250*4882a593Smuzhiyun     ProcessInputProc processInputProc;
251*4882a593Smuzhiyun     /* If processInputProc is set to something different than realInputProc,
252*4882a593Smuzhiyun      * UNWRAP and COND_WRAP will not touch processInputProc and update only
253*4882a593Smuzhiyun      * realInputProc.  This ensures that
254*4882a593Smuzhiyun      *   processInputProc == (frozen ? EnqueueEvent : realInputProc)
255*4882a593Smuzhiyun      *
256*4882a593Smuzhiyun      * WRAP_PROCESS_INPUT_PROC should only be called during initialization,
257*4882a593Smuzhiyun      * since it may destroy this invariant.
258*4882a593Smuzhiyun      */
259*4882a593Smuzhiyun     ProcessInputProc realInputProc;
260*4882a593Smuzhiyun     DeviceUnwrapProc unwrapProc;
261*4882a593Smuzhiyun } xkbDeviceInfoRec, *xkbDeviceInfoPtr;
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun #define WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
264*4882a593Smuzhiyun 	device->public.processInputProc = proc; \
265*4882a593Smuzhiyun 	oldprocs->processInputProc = \
266*4882a593Smuzhiyun 	oldprocs->realInputProc = device->public.realInputProc; \
267*4882a593Smuzhiyun 	device->public.realInputProc = proc; \
268*4882a593Smuzhiyun 	oldprocs->unwrapProc = device->unwrapProc; \
269*4882a593Smuzhiyun 	device->unwrapProc = unwrapproc;
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun #define COND_WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
272*4882a593Smuzhiyun 	if (device->public.processInputProc == device->public.realInputProc)\
273*4882a593Smuzhiyun 	    device->public.processInputProc = proc; \
274*4882a593Smuzhiyun 	oldprocs->processInputProc = \
275*4882a593Smuzhiyun 	oldprocs->realInputProc = device->public.realInputProc; \
276*4882a593Smuzhiyun 	device->public.realInputProc = proc; \
277*4882a593Smuzhiyun 	oldprocs->unwrapProc = device->unwrapProc; \
278*4882a593Smuzhiyun 	device->unwrapProc = unwrapproc;
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun #define UNWRAP_PROCESS_INPUT_PROC(device, oldprocs, backupproc) \
281*4882a593Smuzhiyun         backupproc = device->public.realInputProc; \
282*4882a593Smuzhiyun 	if (device->public.processInputProc == device->public.realInputProc)\
283*4882a593Smuzhiyun 	    device->public.processInputProc = oldprocs->realInputProc; \
284*4882a593Smuzhiyun 	device->public.realInputProc = oldprocs->realInputProc; \
285*4882a593Smuzhiyun 	device->unwrapProc = oldprocs->unwrapProc;
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun extern _X_EXPORT DevPrivateKeyRec xkbDevicePrivateKeyRec;
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun #define xkbDevicePrivateKey (&xkbDevicePrivateKeyRec)
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun #define XKBDEVICEINFO(dev) ((xkbDeviceInfoPtr)dixLookupPrivate(&(dev)->devPrivates, xkbDevicePrivateKey))
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun extern void xkbUnwrapProc(DeviceIntPtr, DeviceHandleProc, void *);
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun /***====================================================================***/
296*4882a593Smuzhiyun 
297*4882a593Smuzhiyun /***====================================================================***/
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun #define XkbAX_KRGMask	 (XkbSlowKeysMask|XkbBounceKeysMask)
300*4882a593Smuzhiyun #define	XkbAllFilteredEventsMask \
301*4882a593Smuzhiyun 	(XkbAccessXKeysMask|XkbRepeatKeysMask|XkbMouseKeysAccelMask|XkbAX_KRGMask)
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun /***====================================================================***/
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun extern _X_EXPORT int XkbReqCode;
306*4882a593Smuzhiyun extern _X_EXPORT int XkbEventBase;
307*4882a593Smuzhiyun extern _X_EXPORT int XkbKeyboardErrorCode;
308*4882a593Smuzhiyun extern _X_EXPORT const char *XkbBaseDirectory;
309*4882a593Smuzhiyun extern _X_EXPORT const char *XkbBinDirectory;
310*4882a593Smuzhiyun 
311*4882a593Smuzhiyun extern _X_EXPORT CARD32 xkbDebugFlags;
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun #define	_XkbLibError(c,l,d)     /* Epoch fail */
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun /* "a" is a "unique" numeric identifier that just defines which error
316*4882a593Smuzhiyun  * code statement it is. _XkbErrCode2(4, foo) means "this is the 4th error
317*4882a593Smuzhiyun  * statement in this function". lovely.
318*4882a593Smuzhiyun  */
319*4882a593Smuzhiyun #define	_XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff)))
320*4882a593Smuzhiyun #define	_XkbErrCode3(a,b,c)	_XkbErrCode2(a,(((unsigned int)(b))<<16)|(c))
321*4882a593Smuzhiyun #define	_XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d)))
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun #define	Status		int
324*4882a593Smuzhiyun 
325*4882a593Smuzhiyun extern _X_EXPORT void XkbUseMsg(void
326*4882a593Smuzhiyun     );
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun extern _X_EXPORT int XkbProcessArguments(int /* argc */ ,
329*4882a593Smuzhiyun                                          char ** /* argv */ ,
330*4882a593Smuzhiyun                                          int    /* i */
331*4882a593Smuzhiyun     );
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun extern _X_EXPORT Bool XkbInitPrivates(void);
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun extern _X_EXPORT void XkbSetExtension(DeviceIntPtr device,
336*4882a593Smuzhiyun                                       ProcessInputProc proc);
337*4882a593Smuzhiyun 
338*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeCompatMap(XkbDescPtr /* xkb */ ,
339*4882a593Smuzhiyun                                        unsigned int /* which */ ,
340*4882a593Smuzhiyun                                        Bool     /* freeMap */
341*4882a593Smuzhiyun     );
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeNames(XkbDescPtr /* xkb */ ,
344*4882a593Smuzhiyun                                    unsigned int /* which */ ,
345*4882a593Smuzhiyun                                    Bool /* freeMap */
346*4882a593Smuzhiyun     );
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun extern _X_EXPORT int _XkbLookupAnyDevice(DeviceIntPtr *pDev,
349*4882a593Smuzhiyun                                          int id,
350*4882a593Smuzhiyun                                          ClientPtr client,
351*4882a593Smuzhiyun                                          Mask access_mode, int *xkb_err);
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun extern _X_EXPORT int _XkbLookupKeyboard(DeviceIntPtr *pDev,
354*4882a593Smuzhiyun                                         int id,
355*4882a593Smuzhiyun                                         ClientPtr client,
356*4882a593Smuzhiyun                                         Mask access_mode, int *xkb_err);
357*4882a593Smuzhiyun 
358*4882a593Smuzhiyun extern _X_EXPORT int _XkbLookupBellDevice(DeviceIntPtr *pDev,
359*4882a593Smuzhiyun                                           int id,
360*4882a593Smuzhiyun                                           ClientPtr client,
361*4882a593Smuzhiyun                                           Mask access_mode, int *xkb_err);
362*4882a593Smuzhiyun 
363*4882a593Smuzhiyun extern _X_EXPORT int _XkbLookupLedDevice(DeviceIntPtr *pDev,
364*4882a593Smuzhiyun                                          int id,
365*4882a593Smuzhiyun                                          ClientPtr client,
366*4882a593Smuzhiyun                                          Mask access_mode, int *xkb_err);
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun extern _X_EXPORT int _XkbLookupButtonDevice(DeviceIntPtr *pDev,
369*4882a593Smuzhiyun                                             int id,
370*4882a593Smuzhiyun                                             ClientPtr client,
371*4882a593Smuzhiyun                                             Mask access_mode, int *xkb_err);
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun extern _X_EXPORT XkbDescPtr XkbAllocKeyboard(void
374*4882a593Smuzhiyun     );
375*4882a593Smuzhiyun 
376*4882a593Smuzhiyun extern _X_EXPORT Status XkbAllocClientMap(XkbDescPtr /* xkb */ ,
377*4882a593Smuzhiyun                                           unsigned int /* which */ ,
378*4882a593Smuzhiyun                                           unsigned int  /* nTypes */
379*4882a593Smuzhiyun     );
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun extern _X_EXPORT Status XkbAllocServerMap(XkbDescPtr /* xkb */ ,
382*4882a593Smuzhiyun                                           unsigned int /* which */ ,
383*4882a593Smuzhiyun                                           unsigned int  /* nNewActions */
384*4882a593Smuzhiyun     );
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeClientMap(XkbDescPtr /* xkb */ ,
387*4882a593Smuzhiyun                                        unsigned int /* what */ ,
388*4882a593Smuzhiyun                                        Bool     /* freeMap */
389*4882a593Smuzhiyun     );
390*4882a593Smuzhiyun 
391*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeServerMap(XkbDescPtr /* xkb */ ,
392*4882a593Smuzhiyun                                        unsigned int /* what */ ,
393*4882a593Smuzhiyun                                        Bool     /* freeMap */
394*4882a593Smuzhiyun     );
395*4882a593Smuzhiyun 
396*4882a593Smuzhiyun extern _X_EXPORT Status XkbAllocIndicatorMaps(XkbDescPtr        /* xkb */
397*4882a593Smuzhiyun     );
398*4882a593Smuzhiyun 
399*4882a593Smuzhiyun extern _X_EXPORT Status XkbAllocCompatMap(XkbDescPtr /* xkb */ ,
400*4882a593Smuzhiyun                                           unsigned int /* which */ ,
401*4882a593Smuzhiyun                                           unsigned int  /* nInterpret */
402*4882a593Smuzhiyun     );
403*4882a593Smuzhiyun 
404*4882a593Smuzhiyun extern _X_EXPORT Status XkbAllocNames(XkbDescPtr /* xkb */ ,
405*4882a593Smuzhiyun                                       unsigned int /* which */ ,
406*4882a593Smuzhiyun                                       int /* nTotalRG */ ,
407*4882a593Smuzhiyun                                       int       /* nTotalAliases */
408*4882a593Smuzhiyun     );
409*4882a593Smuzhiyun 
410*4882a593Smuzhiyun extern _X_EXPORT Status XkbAllocControls(XkbDescPtr /* xkb */ ,
411*4882a593Smuzhiyun                                          unsigned int   /* which */
412*4882a593Smuzhiyun     );
413*4882a593Smuzhiyun 
414*4882a593Smuzhiyun extern _X_EXPORT Status XkbCopyKeyTypes(XkbKeyTypePtr /* from */ ,
415*4882a593Smuzhiyun                                         XkbKeyTypePtr /* into */ ,
416*4882a593Smuzhiyun                                         int     /* num_types */
417*4882a593Smuzhiyun     );
418*4882a593Smuzhiyun 
419*4882a593Smuzhiyun extern _X_EXPORT Status XkbResizeKeyType(XkbDescPtr /* xkb */ ,
420*4882a593Smuzhiyun                                          int /* type_ndx */ ,
421*4882a593Smuzhiyun                                          int /* map_count */ ,
422*4882a593Smuzhiyun                                          Bool /* want_preserve */ ,
423*4882a593Smuzhiyun                                          int    /* new_num_lvls */
424*4882a593Smuzhiyun     );
425*4882a593Smuzhiyun 
426*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeKeyboard(XkbDescPtr /* xkb */ ,
427*4882a593Smuzhiyun                                       unsigned int /* which */ ,
428*4882a593Smuzhiyun                                       Bool      /* freeDesc */
429*4882a593Smuzhiyun     );
430*4882a593Smuzhiyun 
431*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeComponentNames(XkbComponentNamesPtr /* names */ ,
432*4882a593Smuzhiyun                                             Bool        /* freeNames */
433*4882a593Smuzhiyun     );
434*4882a593Smuzhiyun 
435*4882a593Smuzhiyun extern _X_EXPORT void XkbSetActionKeyMods(XkbDescPtr /* xkb */ ,
436*4882a593Smuzhiyun                                           XkbAction * /* act */ ,
437*4882a593Smuzhiyun                                           unsigned int  /* mods */
438*4882a593Smuzhiyun     );
439*4882a593Smuzhiyun 
440*4882a593Smuzhiyun extern _X_EXPORT unsigned int XkbMaskForVMask(XkbDescPtr /* xkb */ ,
441*4882a593Smuzhiyun                                               unsigned int      /* vmask */
442*4882a593Smuzhiyun     );
443*4882a593Smuzhiyun 
444*4882a593Smuzhiyun extern _X_EXPORT Bool XkbVirtualModsToReal(XkbDescPtr /* xkb */ ,
445*4882a593Smuzhiyun                                            unsigned int /* virtua_mask */ ,
446*4882a593Smuzhiyun                                            unsigned int *       /* mask_rtrn */
447*4882a593Smuzhiyun     );
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun extern _X_EXPORT unsigned int XkbAdjustGroup(int /* group */ ,
450*4882a593Smuzhiyun                                              XkbControlsPtr     /* ctrls */
451*4882a593Smuzhiyun     );
452*4882a593Smuzhiyun 
453*4882a593Smuzhiyun extern _X_EXPORT KeySym *XkbResizeKeySyms(XkbDescPtr /* xkb */ ,
454*4882a593Smuzhiyun                                           int /* key */ ,
455*4882a593Smuzhiyun                                           int   /* needed */
456*4882a593Smuzhiyun     );
457*4882a593Smuzhiyun 
458*4882a593Smuzhiyun extern _X_EXPORT XkbAction *XkbResizeKeyActions(XkbDescPtr /* xkb */ ,
459*4882a593Smuzhiyun                                                 int /* key */ ,
460*4882a593Smuzhiyun                                                 int     /* needed */
461*4882a593Smuzhiyun     );
462*4882a593Smuzhiyun 
463*4882a593Smuzhiyun extern _X_EXPORT void XkbUpdateKeyTypesFromCore(DeviceIntPtr /* pXDev */ ,
464*4882a593Smuzhiyun                                                 KeySymsPtr /* syms */ ,
465*4882a593Smuzhiyun                                                 KeyCode /* first */ ,
466*4882a593Smuzhiyun                                                 CARD8 /* num */ ,
467*4882a593Smuzhiyun                                                 XkbChangesPtr   /* pChanges */
468*4882a593Smuzhiyun     );
469*4882a593Smuzhiyun 
470*4882a593Smuzhiyun extern _X_EXPORT void XkbUpdateDescActions(XkbDescPtr /* xkb */ ,
471*4882a593Smuzhiyun                                            KeyCode /* first */ ,
472*4882a593Smuzhiyun                                            CARD8 /* num */ ,
473*4882a593Smuzhiyun                                            XkbChangesPtr        /* changes */
474*4882a593Smuzhiyun     );
475*4882a593Smuzhiyun 
476*4882a593Smuzhiyun extern _X_EXPORT void XkbUpdateActions(DeviceIntPtr /* pXDev */ ,
477*4882a593Smuzhiyun                                        KeyCode /* first */ ,
478*4882a593Smuzhiyun                                        CARD8 /* num */ ,
479*4882a593Smuzhiyun                                        XkbChangesPtr /* pChanges */ ,
480*4882a593Smuzhiyun                                        unsigned int * /* needChecksRtrn */ ,
481*4882a593Smuzhiyun                                        XkbEventCausePtr /* cause */
482*4882a593Smuzhiyun     );
483*4882a593Smuzhiyun 
484*4882a593Smuzhiyun extern _X_EXPORT KeySymsPtr XkbGetCoreMap(DeviceIntPtr  /* keybd */
485*4882a593Smuzhiyun     );
486*4882a593Smuzhiyun 
487*4882a593Smuzhiyun extern _X_EXPORT void XkbApplyMappingChange(DeviceIntPtr /* pXDev */ ,
488*4882a593Smuzhiyun                                             KeySymsPtr /* map */ ,
489*4882a593Smuzhiyun                                             KeyCode /* firstKey */ ,
490*4882a593Smuzhiyun                                             CARD8 /* num */ ,
491*4882a593Smuzhiyun                                             CARD8 * /* modmap */ ,
492*4882a593Smuzhiyun                                             ClientPtr   /* client */
493*4882a593Smuzhiyun     );
494*4882a593Smuzhiyun 
495*4882a593Smuzhiyun extern _X_EXPORT void XkbSetIndicators(DeviceIntPtr /* pXDev */ ,
496*4882a593Smuzhiyun                                        CARD32 /* affect */ ,
497*4882a593Smuzhiyun                                        CARD32 /* values */ ,
498*4882a593Smuzhiyun                                        XkbEventCausePtr /* cause */
499*4882a593Smuzhiyun     );
500*4882a593Smuzhiyun 
501*4882a593Smuzhiyun extern _X_EXPORT void XkbUpdateIndicators(DeviceIntPtr /* keybd */ ,
502*4882a593Smuzhiyun                                           CARD32 /* changed */ ,
503*4882a593Smuzhiyun                                           Bool /* check_edevs */ ,
504*4882a593Smuzhiyun                                           XkbChangesPtr /* pChanges */ ,
505*4882a593Smuzhiyun                                           XkbEventCausePtr      /* cause */
506*4882a593Smuzhiyun     );
507*4882a593Smuzhiyun 
508*4882a593Smuzhiyun extern _X_EXPORT void XkbUpdateAllDeviceIndicators(XkbChangesPtr /* changes */,
509*4882a593Smuzhiyun                                                    XkbEventCausePtr /* cause */
510*4882a593Smuzhiyun     );
511*4882a593Smuzhiyun 
512*4882a593Smuzhiyun extern _X_EXPORT XkbSrvLedInfoPtr XkbAllocSrvLedInfo(DeviceIntPtr /* dev */ ,
513*4882a593Smuzhiyun                                                      KbdFeedbackPtr /* kf */ ,
514*4882a593Smuzhiyun                                                      LedFeedbackPtr /* lf */ ,
515*4882a593Smuzhiyun                                                      unsigned int       /* needed_parts */
516*4882a593Smuzhiyun     );
517*4882a593Smuzhiyun 
518*4882a593Smuzhiyun extern _X_EXPORT XkbSrvLedInfoPtr XkbCopySrvLedInfo(DeviceIntPtr /* dev */ ,
519*4882a593Smuzhiyun                                                     XkbSrvLedInfoPtr /* src */ ,
520*4882a593Smuzhiyun                                                     KbdFeedbackPtr /* kf */ ,
521*4882a593Smuzhiyun                                                     LedFeedbackPtr      /* lf */
522*4882a593Smuzhiyun     );
523*4882a593Smuzhiyun 
524*4882a593Smuzhiyun extern _X_EXPORT XkbSrvLedInfoPtr XkbFindSrvLedInfo(DeviceIntPtr /* dev */ ,
525*4882a593Smuzhiyun                                                     unsigned int /* class */ ,
526*4882a593Smuzhiyun                                                     unsigned int /* id */ ,
527*4882a593Smuzhiyun                                                     unsigned int        /* needed_parts */
528*4882a593Smuzhiyun     );
529*4882a593Smuzhiyun 
530*4882a593Smuzhiyun extern _X_EXPORT void XkbApplyLedNameChanges(DeviceIntPtr /* dev */ ,
531*4882a593Smuzhiyun                                              XkbSrvLedInfoPtr /* sli */ ,
532*4882a593Smuzhiyun                                              unsigned int /* changed_names */ ,
533*4882a593Smuzhiyun                                              xkbExtensionDeviceNotify * /* ed */
534*4882a593Smuzhiyun                                              ,
535*4882a593Smuzhiyun                                              XkbChangesPtr /* changes */ ,
536*4882a593Smuzhiyun                                              XkbEventCausePtr   /* cause */
537*4882a593Smuzhiyun     );
538*4882a593Smuzhiyun 
539*4882a593Smuzhiyun extern _X_EXPORT void XkbApplyLedMapChanges(DeviceIntPtr /* dev */ ,
540*4882a593Smuzhiyun                                             XkbSrvLedInfoPtr /* sli */ ,
541*4882a593Smuzhiyun                                             unsigned int /* changed_maps */ ,
542*4882a593Smuzhiyun                                             xkbExtensionDeviceNotify * /* ed */
543*4882a593Smuzhiyun                                             ,
544*4882a593Smuzhiyun                                             XkbChangesPtr /* changes */ ,
545*4882a593Smuzhiyun                                             XkbEventCausePtr    /* cause */
546*4882a593Smuzhiyun     );
547*4882a593Smuzhiyun 
548*4882a593Smuzhiyun extern _X_EXPORT void XkbApplyLedStateChanges(DeviceIntPtr /* dev */ ,
549*4882a593Smuzhiyun                                               XkbSrvLedInfoPtr /* sli */ ,
550*4882a593Smuzhiyun                                               unsigned int /* changed_leds */ ,
551*4882a593Smuzhiyun                                               xkbExtensionDeviceNotify *
552*4882a593Smuzhiyun                                               /* ed */ ,
553*4882a593Smuzhiyun                                               XkbChangesPtr /* changes */ ,
554*4882a593Smuzhiyun                                               XkbEventCausePtr  /* cause */
555*4882a593Smuzhiyun     );
556*4882a593Smuzhiyun 
557*4882a593Smuzhiyun extern _X_EXPORT void XkbFlushLedEvents(DeviceIntPtr /* dev */ ,
558*4882a593Smuzhiyun                                         DeviceIntPtr /* kbd */ ,
559*4882a593Smuzhiyun                                         XkbSrvLedInfoPtr /* sli */ ,
560*4882a593Smuzhiyun                                         xkbExtensionDeviceNotify * /* ed */ ,
561*4882a593Smuzhiyun                                         XkbChangesPtr /* changes */ ,
562*4882a593Smuzhiyun                                         XkbEventCausePtr        /* cause */
563*4882a593Smuzhiyun     );
564*4882a593Smuzhiyun 
565*4882a593Smuzhiyun extern _X_EXPORT unsigned int XkbIndicatorsToUpdate(DeviceIntPtr /* dev */ ,
566*4882a593Smuzhiyun                                                     unsigned long
567*4882a593Smuzhiyun                                                     /* state_changes */ ,
568*4882a593Smuzhiyun                                                     Bool        /* enabled_ctrl_changes */
569*4882a593Smuzhiyun     );
570*4882a593Smuzhiyun 
571*4882a593Smuzhiyun extern _X_EXPORT void XkbComputeDerivedState(XkbSrvInfoPtr      /* xkbi */
572*4882a593Smuzhiyun     );
573*4882a593Smuzhiyun 
574*4882a593Smuzhiyun extern _X_EXPORT void XkbCheckSecondaryEffects(XkbSrvInfoPtr /* xkbi */ ,
575*4882a593Smuzhiyun                                                unsigned int /* which */ ,
576*4882a593Smuzhiyun                                                XkbChangesPtr /* changes */ ,
577*4882a593Smuzhiyun                                                XkbEventCausePtr /* cause */
578*4882a593Smuzhiyun     );
579*4882a593Smuzhiyun 
580*4882a593Smuzhiyun extern _X_EXPORT void XkbCheckIndicatorMaps(DeviceIntPtr /* dev */ ,
581*4882a593Smuzhiyun                                             XkbSrvLedInfoPtr /* sli */ ,
582*4882a593Smuzhiyun                                             unsigned int        /* which */
583*4882a593Smuzhiyun     );
584*4882a593Smuzhiyun 
585*4882a593Smuzhiyun extern _X_EXPORT unsigned int XkbStateChangedFlags(XkbStatePtr /* old */ ,
586*4882a593Smuzhiyun                                                    XkbStatePtr  /* new */
587*4882a593Smuzhiyun     );
588*4882a593Smuzhiyun 
589*4882a593Smuzhiyun extern _X_EXPORT void XkbSendStateNotify(DeviceIntPtr /* kbd */ ,
590*4882a593Smuzhiyun                                          xkbStateNotify *       /* pSN */
591*4882a593Smuzhiyun     );
592*4882a593Smuzhiyun 
593*4882a593Smuzhiyun extern _X_EXPORT void XkbSendMapNotify(DeviceIntPtr /* kbd */ ,
594*4882a593Smuzhiyun                                        xkbMapNotify *   /* ev */
595*4882a593Smuzhiyun     );
596*4882a593Smuzhiyun 
597*4882a593Smuzhiyun extern _X_EXPORT int XkbComputeControlsNotify(DeviceIntPtr /* kbd */ ,
598*4882a593Smuzhiyun                                               XkbControlsPtr /* old */ ,
599*4882a593Smuzhiyun                                               XkbControlsPtr /* new */ ,
600*4882a593Smuzhiyun                                               xkbControlsNotify * /* pCN */ ,
601*4882a593Smuzhiyun                                               Bool      /* forceCtrlProc */
602*4882a593Smuzhiyun     );
603*4882a593Smuzhiyun 
604*4882a593Smuzhiyun extern _X_EXPORT void XkbSendControlsNotify(DeviceIntPtr /* kbd */ ,
605*4882a593Smuzhiyun                                             xkbControlsNotify * /* ev */
606*4882a593Smuzhiyun     );
607*4882a593Smuzhiyun 
608*4882a593Smuzhiyun extern _X_EXPORT void XkbSendCompatMapNotify(DeviceIntPtr /* kbd */ ,
609*4882a593Smuzhiyun                                              xkbCompatMapNotify *       /* ev */
610*4882a593Smuzhiyun     );
611*4882a593Smuzhiyun 
612*4882a593Smuzhiyun extern _X_EXPORT void XkbHandleBell(BOOL force,
613*4882a593Smuzhiyun                                     BOOL eventOnly,
614*4882a593Smuzhiyun                                     DeviceIntPtr kbd,
615*4882a593Smuzhiyun                                     CARD8 percent,
616*4882a593Smuzhiyun                                     void *ctrl,
617*4882a593Smuzhiyun                                     CARD8 class,
618*4882a593Smuzhiyun                                     Atom name,
619*4882a593Smuzhiyun                                     WindowPtr pWin,
620*4882a593Smuzhiyun                                     ClientPtr pClient
621*4882a593Smuzhiyun     );
622*4882a593Smuzhiyun 
623*4882a593Smuzhiyun extern _X_EXPORT void XkbSendAccessXNotify(DeviceIntPtr /* kbd */ ,
624*4882a593Smuzhiyun                                            xkbAccessXNotify *   /* pEv */
625*4882a593Smuzhiyun     );
626*4882a593Smuzhiyun 
627*4882a593Smuzhiyun extern _X_EXPORT void XkbSendNamesNotify(DeviceIntPtr /* kbd */ ,
628*4882a593Smuzhiyun                                          xkbNamesNotify *       /* ev */
629*4882a593Smuzhiyun     );
630*4882a593Smuzhiyun 
631*4882a593Smuzhiyun extern _X_EXPORT void XkbSendActionMessage(DeviceIntPtr /* kbd */ ,
632*4882a593Smuzhiyun                                            xkbActionMessage *   /* ev */
633*4882a593Smuzhiyun     );
634*4882a593Smuzhiyun 
635*4882a593Smuzhiyun extern _X_EXPORT void XkbSendExtensionDeviceNotify(DeviceIntPtr /* kbd */ ,
636*4882a593Smuzhiyun                                                    ClientPtr /* client */ ,
637*4882a593Smuzhiyun                                                    xkbExtensionDeviceNotify *   /* ev */
638*4882a593Smuzhiyun     );
639*4882a593Smuzhiyun 
640*4882a593Smuzhiyun extern _X_EXPORT void XkbSendNotification(DeviceIntPtr /* kbd */ ,
641*4882a593Smuzhiyun                                           XkbChangesPtr /* pChanges */ ,
642*4882a593Smuzhiyun                                           XkbEventCausePtr      /* cause */
643*4882a593Smuzhiyun     );
644*4882a593Smuzhiyun 
645*4882a593Smuzhiyun extern _X_EXPORT void XkbProcessKeyboardEvent(DeviceEvent * /* event */ ,
646*4882a593Smuzhiyun                                               DeviceIntPtr      /* keybd */
647*4882a593Smuzhiyun     );
648*4882a593Smuzhiyun 
649*4882a593Smuzhiyun extern _X_EXPORT void XkbHandleActions(DeviceIntPtr /* dev */ ,
650*4882a593Smuzhiyun                                        DeviceIntPtr /* kbd */ ,
651*4882a593Smuzhiyun                                        DeviceEvent *    /* event */
652*4882a593Smuzhiyun     );
653*4882a593Smuzhiyun 
654*4882a593Smuzhiyun extern void XkbPushLockedStateToSlaves(DeviceIntPtr /* master */,
655*4882a593Smuzhiyun                                        int /* evtype */,
656*4882a593Smuzhiyun                                        int /* key */);
657*4882a593Smuzhiyun 
658*4882a593Smuzhiyun extern _X_EXPORT Bool XkbEnableDisableControls(XkbSrvInfoPtr /* xkbi */ ,
659*4882a593Smuzhiyun                                                unsigned long /* change */ ,
660*4882a593Smuzhiyun                                                unsigned long /* newValues */ ,
661*4882a593Smuzhiyun                                                XkbChangesPtr /* changes */ ,
662*4882a593Smuzhiyun                                                XkbEventCausePtr /* cause */
663*4882a593Smuzhiyun     );
664*4882a593Smuzhiyun 
665*4882a593Smuzhiyun extern _X_EXPORT void AccessXInit(DeviceIntPtr  /* dev */
666*4882a593Smuzhiyun     );
667*4882a593Smuzhiyun 
668*4882a593Smuzhiyun extern _X_EXPORT Bool AccessXFilterPressEvent(DeviceEvent * /* event */ ,
669*4882a593Smuzhiyun                                               DeviceIntPtr      /* keybd */
670*4882a593Smuzhiyun     );
671*4882a593Smuzhiyun 
672*4882a593Smuzhiyun extern _X_EXPORT Bool AccessXFilterReleaseEvent(DeviceEvent * /* event */ ,
673*4882a593Smuzhiyun                                                 DeviceIntPtr    /* keybd */
674*4882a593Smuzhiyun     );
675*4882a593Smuzhiyun 
676*4882a593Smuzhiyun extern _X_EXPORT void AccessXCancelRepeatKey(XkbSrvInfoPtr /* xkbi */ ,
677*4882a593Smuzhiyun                                              KeyCode    /* key */
678*4882a593Smuzhiyun     );
679*4882a593Smuzhiyun 
680*4882a593Smuzhiyun extern _X_EXPORT void AccessXComputeCurveFactor(XkbSrvInfoPtr /* xkbi */ ,
681*4882a593Smuzhiyun                                                 XkbControlsPtr  /* ctrls */
682*4882a593Smuzhiyun     );
683*4882a593Smuzhiyun 
684*4882a593Smuzhiyun extern _X_EXPORT XkbInterestPtr XkbFindClientResource(DevicePtr /* inDev */ ,
685*4882a593Smuzhiyun                                                       ClientPtr /* client */
686*4882a593Smuzhiyun     );
687*4882a593Smuzhiyun 
688*4882a593Smuzhiyun extern _X_EXPORT XkbInterestPtr XkbAddClientResource(DevicePtr /* inDev */ ,
689*4882a593Smuzhiyun                                                      ClientPtr /* client */ ,
690*4882a593Smuzhiyun                                                      XID        /* id */
691*4882a593Smuzhiyun     );
692*4882a593Smuzhiyun 
693*4882a593Smuzhiyun extern _X_EXPORT int XkbRemoveResourceClient(DevicePtr /* inDev */ ,
694*4882a593Smuzhiyun                                              XID        /* id */
695*4882a593Smuzhiyun     );
696*4882a593Smuzhiyun 
697*4882a593Smuzhiyun extern _X_EXPORT int XkbDDXAccessXBeep(DeviceIntPtr /* dev */ ,
698*4882a593Smuzhiyun                                        unsigned int /* what */ ,
699*4882a593Smuzhiyun                                        unsigned int     /* which */
700*4882a593Smuzhiyun     );
701*4882a593Smuzhiyun 
702*4882a593Smuzhiyun extern _X_EXPORT int XkbDDXUsesSoftRepeat(DeviceIntPtr  /* dev */
703*4882a593Smuzhiyun     );
704*4882a593Smuzhiyun 
705*4882a593Smuzhiyun extern _X_EXPORT void XkbDDXKeybdCtrlProc(DeviceIntPtr /* dev */ ,
706*4882a593Smuzhiyun                                           KeybdCtrl *   /* ctrl */
707*4882a593Smuzhiyun     );
708*4882a593Smuzhiyun 
709*4882a593Smuzhiyun extern _X_EXPORT void XkbDDXChangeControls(DeviceIntPtr /* dev */ ,
710*4882a593Smuzhiyun                                            XkbControlsPtr /* old */ ,
711*4882a593Smuzhiyun                                            XkbControlsPtr       /* new */
712*4882a593Smuzhiyun     );
713*4882a593Smuzhiyun 
714*4882a593Smuzhiyun extern _X_EXPORT void XkbDDXUpdateDeviceIndicators(DeviceIntPtr /* dev */ ,
715*4882a593Smuzhiyun                                                    XkbSrvLedInfoPtr /* sli */ ,
716*4882a593Smuzhiyun                                                    CARD32       /* newState */
717*4882a593Smuzhiyun     );
718*4882a593Smuzhiyun 
719*4882a593Smuzhiyun extern _X_EXPORT int XkbDDXTerminateServer(DeviceIntPtr /* dev */ ,
720*4882a593Smuzhiyun                                            KeyCode /* key */ ,
721*4882a593Smuzhiyun                                            XkbAction *  /* act */
722*4882a593Smuzhiyun     );
723*4882a593Smuzhiyun 
724*4882a593Smuzhiyun extern _X_EXPORT int XkbDDXSwitchScreen(DeviceIntPtr /* dev */ ,
725*4882a593Smuzhiyun                                         KeyCode /* key */ ,
726*4882a593Smuzhiyun                                         XkbAction *     /* act */
727*4882a593Smuzhiyun     );
728*4882a593Smuzhiyun 
729*4882a593Smuzhiyun extern _X_EXPORT int XkbDDXPrivate(DeviceIntPtr /* dev */ ,
730*4882a593Smuzhiyun                                    KeyCode /* key */ ,
731*4882a593Smuzhiyun                                    XkbAction *  /* act */
732*4882a593Smuzhiyun     );
733*4882a593Smuzhiyun 
734*4882a593Smuzhiyun extern _X_EXPORT void XkbDisableComputedAutoRepeats(DeviceIntPtr /* pXDev */ ,
735*4882a593Smuzhiyun                                                     unsigned int        /* key */
736*4882a593Smuzhiyun     );
737*4882a593Smuzhiyun 
738*4882a593Smuzhiyun extern _X_EXPORT void XkbSetRepeatKeys(DeviceIntPtr /* pXDev */ ,
739*4882a593Smuzhiyun                                        int /* key */ ,
740*4882a593Smuzhiyun                                        int      /* onoff */
741*4882a593Smuzhiyun     );
742*4882a593Smuzhiyun 
743*4882a593Smuzhiyun extern _X_EXPORT int XkbLatchModifiers(DeviceIntPtr /* pXDev */ ,
744*4882a593Smuzhiyun                                        CARD8 /* mask */ ,
745*4882a593Smuzhiyun                                        CARD8    /* latches */
746*4882a593Smuzhiyun     );
747*4882a593Smuzhiyun 
748*4882a593Smuzhiyun extern _X_EXPORT int XkbLatchGroup(DeviceIntPtr /* pXDev */ ,
749*4882a593Smuzhiyun                                    int  /* group */
750*4882a593Smuzhiyun     );
751*4882a593Smuzhiyun 
752*4882a593Smuzhiyun extern _X_EXPORT void XkbClearAllLatchesAndLocks(DeviceIntPtr /* dev */ ,
753*4882a593Smuzhiyun                                                  XkbSrvInfoPtr /* xkbi */ ,
754*4882a593Smuzhiyun                                                  Bool /* genEv */ ,
755*4882a593Smuzhiyun                                                  XkbEventCausePtr       /* cause */
756*4882a593Smuzhiyun     );
757*4882a593Smuzhiyun 
758*4882a593Smuzhiyun extern _X_EXPORT void XkbInitRules(XkbRMLVOSet * /* rmlvo   */,
759*4882a593Smuzhiyun                                    const char *  /* rules   */,
760*4882a593Smuzhiyun                                    const char *  /* model   */,
761*4882a593Smuzhiyun                                    const char *  /* layout  */,
762*4882a593Smuzhiyun                                    const char *  /* variant */,
763*4882a593Smuzhiyun                                    const char *  /* options */
764*4882a593Smuzhiyun     ) ;
765*4882a593Smuzhiyun 
766*4882a593Smuzhiyun extern _X_EXPORT void XkbGetRulesDflts(XkbRMLVOSet *    /* rmlvo */
767*4882a593Smuzhiyun     );
768*4882a593Smuzhiyun 
769*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeRMLVOSet(XkbRMLVOSet * /* rmlvo */ ,
770*4882a593Smuzhiyun                                       Bool      /* freeRMLVO */
771*4882a593Smuzhiyun     );
772*4882a593Smuzhiyun 
773*4882a593Smuzhiyun extern _X_EXPORT void XkbSetRulesDflts(XkbRMLVOSet *    /* rmlvo */
774*4882a593Smuzhiyun     );
775*4882a593Smuzhiyun 
776*4882a593Smuzhiyun extern _X_EXPORT void XkbDeleteRulesDflts(void
777*4882a593Smuzhiyun     );
778*4882a593Smuzhiyun 
779*4882a593Smuzhiyun extern _X_EXPORT void XkbDeleteRulesUsed(void
780*4882a593Smuzhiyun     );
781*4882a593Smuzhiyun 
782*4882a593Smuzhiyun extern _X_EXPORT int SProcXkbDispatch(ClientPtr /* client */
783*4882a593Smuzhiyun     );
784*4882a593Smuzhiyun 
785*4882a593Smuzhiyun extern _X_EXPORT XkbGeometryPtr XkbLookupNamedGeometry(DeviceIntPtr /* dev */ ,
786*4882a593Smuzhiyun                                                        Atom /* name */ ,
787*4882a593Smuzhiyun                                                        Bool *   /* shouldFree */
788*4882a593Smuzhiyun     );
789*4882a593Smuzhiyun 
790*4882a593Smuzhiyun extern _X_EXPORT void XkbConvertCase(KeySym /* sym */ ,
791*4882a593Smuzhiyun                                      KeySym * /* lower */ ,
792*4882a593Smuzhiyun                                      KeySym *   /* upper */
793*4882a593Smuzhiyun     );
794*4882a593Smuzhiyun 
795*4882a593Smuzhiyun extern _X_EXPORT Status XkbChangeKeycodeRange(XkbDescPtr /* xkb */ ,
796*4882a593Smuzhiyun                                               int /* minKC */ ,
797*4882a593Smuzhiyun                                               int /* maxKC */ ,
798*4882a593Smuzhiyun                                               XkbChangesPtr     /* changes */
799*4882a593Smuzhiyun     );
800*4882a593Smuzhiyun 
801*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeSrvLedInfo(XkbSrvLedInfoPtr        /* sli */
802*4882a593Smuzhiyun     );
803*4882a593Smuzhiyun 
804*4882a593Smuzhiyun extern _X_EXPORT void XkbFreeInfo(XkbSrvInfoPtr /* xkbi */
805*4882a593Smuzhiyun     );
806*4882a593Smuzhiyun 
807*4882a593Smuzhiyun extern _X_EXPORT Status XkbChangeTypesOfKey(XkbDescPtr /* xkb */ ,
808*4882a593Smuzhiyun                                             int /* key */ ,
809*4882a593Smuzhiyun                                             int /* nGroups */ ,
810*4882a593Smuzhiyun                                             unsigned int /* groups */ ,
811*4882a593Smuzhiyun                                             int * /* newTypesIn */ ,
812*4882a593Smuzhiyun                                             XkbMapChangesPtr    /* changes */
813*4882a593Smuzhiyun     );
814*4882a593Smuzhiyun 
815*4882a593Smuzhiyun extern _X_EXPORT int XkbKeyTypesForCoreSymbols(XkbDescPtr /* xkb */ ,
816*4882a593Smuzhiyun                                                int /* map_width */ ,
817*4882a593Smuzhiyun                                                KeySym * /* core_syms */ ,
818*4882a593Smuzhiyun                                                unsigned int /* protected */ ,
819*4882a593Smuzhiyun                                                int * /* types_inout */ ,
820*4882a593Smuzhiyun                                                KeySym * /* xkb_syms_rtrn */
821*4882a593Smuzhiyun     );
822*4882a593Smuzhiyun 
823*4882a593Smuzhiyun extern _X_EXPORT Bool XkbApplyCompatMapToKey(XkbDescPtr /* xkb */ ,
824*4882a593Smuzhiyun                                              KeyCode /* key */ ,
825*4882a593Smuzhiyun                                              XkbChangesPtr      /* changes */
826*4882a593Smuzhiyun     );
827*4882a593Smuzhiyun 
828*4882a593Smuzhiyun extern _X_EXPORT Bool XkbApplyVirtualModChanges(XkbDescPtr /* xkb */ ,
829*4882a593Smuzhiyun                                                 unsigned int /* changed */ ,
830*4882a593Smuzhiyun                                                 XkbChangesPtr   /* changes */
831*4882a593Smuzhiyun     );
832*4882a593Smuzhiyun 
833*4882a593Smuzhiyun extern _X_EXPORT void XkbSendNewKeyboardNotify(DeviceIntPtr /* kbd */ ,
834*4882a593Smuzhiyun                                                xkbNewKeyboardNotify *   /* pNKN */
835*4882a593Smuzhiyun     );
836*4882a593Smuzhiyun 
837*4882a593Smuzhiyun extern Bool XkbCopyKeymap(XkbDescPtr /* dst */ ,
838*4882a593Smuzhiyun                           XkbDescPtr /* src */ );
839*4882a593Smuzhiyun 
840*4882a593Smuzhiyun extern _X_EXPORT Bool XkbCopyDeviceKeymap(DeviceIntPtr /* dst */,
841*4882a593Smuzhiyun 					  DeviceIntPtr /* src */);
842*4882a593Smuzhiyun 
843*4882a593Smuzhiyun extern _X_EXPORT Bool XkbDeviceApplyKeymap(DeviceIntPtr /* dst */ ,
844*4882a593Smuzhiyun                                            XkbDescPtr /* src */ );
845*4882a593Smuzhiyun 
846*4882a593Smuzhiyun extern void XkbFilterEvents(ClientPtr /* pClient */ ,
847*4882a593Smuzhiyun                             int /* nEvents */ ,
848*4882a593Smuzhiyun                             xEvent * /* xE */ );
849*4882a593Smuzhiyun 
850*4882a593Smuzhiyun extern int XkbGetEffectiveGroup(XkbSrvInfoPtr /* xkbi */ ,
851*4882a593Smuzhiyun                                 XkbStatePtr /* xkbstate */ ,
852*4882a593Smuzhiyun                                 CARD8 /* keycode */ );
853*4882a593Smuzhiyun 
854*4882a593Smuzhiyun extern void XkbMergeLockedPtrBtns(DeviceIntPtr /* master */ );
855*4882a593Smuzhiyun 
856*4882a593Smuzhiyun extern void XkbFakeDeviceButton(DeviceIntPtr /* dev */ ,
857*4882a593Smuzhiyun                                 int /* press */ ,
858*4882a593Smuzhiyun                                 int /* button */ );
859*4882a593Smuzhiyun 
860*4882a593Smuzhiyun extern _X_EXPORT void XkbCopyControls(XkbDescPtr /* dst */ ,
861*4882a593Smuzhiyun                                       XkbDescPtr /* src */ );
862*4882a593Smuzhiyun 
863*4882a593Smuzhiyun #include "xkbfile.h"
864*4882a593Smuzhiyun #include "xkbrules.h"
865*4882a593Smuzhiyun 
866*4882a593Smuzhiyun #define	_XkbListKeycodes	0
867*4882a593Smuzhiyun #define	_XkbListTypes		1
868*4882a593Smuzhiyun #define	_XkbListCompat		2
869*4882a593Smuzhiyun #define	_XkbListSymbols		3
870*4882a593Smuzhiyun #define	_XkbListGeometry	4
871*4882a593Smuzhiyun #define	_XkbListNumComponents	5
872*4882a593Smuzhiyun 
873*4882a593Smuzhiyun extern _X_EXPORT unsigned int XkbDDXLoadKeymapByNames(DeviceIntPtr /* keybd */ ,
874*4882a593Smuzhiyun                                                       XkbComponentNamesPtr
875*4882a593Smuzhiyun                                                       /* names */ ,
876*4882a593Smuzhiyun                                                       unsigned int /* want */ ,
877*4882a593Smuzhiyun                                                       unsigned int /* need */ ,
878*4882a593Smuzhiyun                                                       XkbDescPtr *
879*4882a593Smuzhiyun                                                       /* finfoRtrn */ ,
880*4882a593Smuzhiyun                                                       char *
881*4882a593Smuzhiyun                                                       /* keymapNameRtrn */ ,
882*4882a593Smuzhiyun                                                       int       /* keymapNameRtrnLen */
883*4882a593Smuzhiyun     );
884*4882a593Smuzhiyun 
885*4882a593Smuzhiyun extern _X_EXPORT Bool XkbDDXNamesFromRules(DeviceIntPtr /* keybd */ ,
886*4882a593Smuzhiyun                                            const char * /* rules */ ,
887*4882a593Smuzhiyun                                            XkbRF_VarDefsPtr /* defs */ ,
888*4882a593Smuzhiyun                                            XkbComponentNamesPtr /* names */
889*4882a593Smuzhiyun     );
890*4882a593Smuzhiyun 
891*4882a593Smuzhiyun extern _X_EXPORT XkbDescPtr XkbCompileKeymap(DeviceIntPtr /* dev */ ,
892*4882a593Smuzhiyun                                              XkbRMLVOSet *      /* rmlvo */
893*4882a593Smuzhiyun     );
894*4882a593Smuzhiyun 
895*4882a593Smuzhiyun extern _X_EXPORT XkbDescPtr XkbCompileKeymapFromString(DeviceIntPtr dev,
896*4882a593Smuzhiyun 						       const char *keymap,
897*4882a593Smuzhiyun 						       int keymap_length);
898*4882a593Smuzhiyun 
899*4882a593Smuzhiyun #endif                          /* _XKBSRV_H_ */
900