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