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