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