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