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