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 _X11_XKBLIB_H_ 28 #define _X11_XKBLIB_H_ 29 30 #include <X11/Xlib.h> 31 #include <X11/extensions/XKBstr.h> 32 33 typedef struct _XkbAnyEvent 34 { 35 int type; /* XkbAnyEvent */ 36 unsigned long serial; /* # of last req processed by server */ 37 Bool send_event; /* is this from a SendEvent request? */ 38 Display* display; /* Display the event was read from */ 39 Time time; /* milliseconds */ 40 int xkb_type; /* XKB event minor code */ 41 unsigned int device; /* device ID */ 42 } XkbAnyEvent; 43 44 typedef struct _XkbNewKeyboardNotify 45 { 46 int type; /* XkbAnyEvent */ 47 unsigned long serial; /* of last req processed by server */ 48 Bool send_event; /* is this from a SendEvent request? */ 49 Display* display; /* Display the event was read from */ 50 Time time; /* milliseconds */ 51 int xkb_type; /* XkbNewKeyboardNotify */ 52 int device; /* device ID */ 53 int old_device; /* device ID of previous keyboard */ 54 int min_key_code; /* minimum key code */ 55 int max_key_code; /* maximum key code */ 56 int old_min_key_code; /* min key code of previous kbd */ 57 int old_max_key_code; /* max key code of previous kbd */ 58 unsigned int changed; /* changed aspects of the keyboard */ 59 char req_major; /* major and minor opcode of req */ 60 char req_minor; /* that caused change, if applicable */ 61 } XkbNewKeyboardNotifyEvent; 62 63 typedef struct _XkbMapNotifyEvent 64 { 65 int type; /* XkbAnyEvent */ 66 unsigned long serial; /* of last req processed by server */ 67 Bool send_event; /* is this from a SendEvent request */ 68 Display* display; /* Display the event was read from */ 69 Time time; /* milliseconds */ 70 int xkb_type; /* XkbMapNotify */ 71 int device; /* device ID */ 72 unsigned int changed; /* fields which have been changed */ 73 unsigned int flags; /* reserved */ 74 int first_type; /* first changed key type */ 75 int num_types; /* number of changed key types */ 76 KeyCode min_key_code; 77 KeyCode max_key_code; 78 KeyCode first_key_sym; 79 KeyCode first_key_act; 80 KeyCode first_key_behavior; 81 KeyCode first_key_explicit; 82 KeyCode first_modmap_key; 83 KeyCode first_vmodmap_key; 84 int num_key_syms; 85 int num_key_acts; 86 int num_key_behaviors; 87 int num_key_explicit; 88 int num_modmap_keys; 89 int num_vmodmap_keys; 90 unsigned int vmods; /* mask of changed virtual mods */ 91 } XkbMapNotifyEvent; 92 93 typedef struct _XkbStateNotifyEvent 94 { 95 int type; /* XkbAnyEvent */ 96 unsigned long serial; /* # of last req processed by server */ 97 Bool send_event; /* is this from a SendEvent request? */ 98 Display* display; /* Display the event was read from */ 99 Time time; /* milliseconds */ 100 int xkb_type; /* XkbStateNotify */ 101 int device; /* device ID */ 102 unsigned int changed; /* mask of changed state components */ 103 int group; /* keyboard group */ 104 int base_group; /* base keyboard group */ 105 int latched_group; /* latched keyboard group */ 106 int locked_group; /* locked keyboard group */ 107 unsigned int mods; /* modifier state */ 108 unsigned int base_mods; /* base modifier state */ 109 unsigned int latched_mods; /* latched modifiers */ 110 unsigned int locked_mods; /* locked modifiers */ 111 int compat_state; /* compatibility state */ 112 unsigned char grab_mods; /* mods used for grabs */ 113 unsigned char compat_grab_mods; /* grab mods for non-XKB clients */ 114 unsigned char lookup_mods; /* mods sent to clients */ 115 unsigned char compat_lookup_mods; /* mods sent to non-XKB clients */ 116 int ptr_buttons; /* pointer button state */ 117 KeyCode keycode; /* keycode that caused the change */ 118 char event_type; /* KeyPress or KeyRelease */ 119 char req_major; /* Major opcode of request */ 120 char req_minor; /* Minor opcode of request */ 121 } XkbStateNotifyEvent; 122 123 typedef struct _XkbControlsNotify 124 { 125 int type; /* XkbAnyEvent */ 126 unsigned long serial; /* of last req processed by server */ 127 Bool send_event; /* is this from a SendEvent request? */ 128 Display* display; /* Display the event was read from */ 129 Time time; /* milliseconds */ 130 int xkb_type; /* XkbControlsNotify */ 131 int device; /* device ID */ 132 unsigned int changed_ctrls; /* controls with changed sub-values */ 133 unsigned int enabled_ctrls; /* controls currently enabled */ 134 unsigned int enabled_ctrl_changes; /* controls just {en,dis}abled */ 135 int num_groups; /* total groups on keyboard */ 136 KeyCode keycode; /* key that caused change or 0 */ 137 char event_type; /* type of event that caused change */ 138 char req_major; /* if keycode==0, major and minor */ 139 char req_minor; /* opcode of req that caused change */ 140 } XkbControlsNotifyEvent; 141 142 typedef struct _XkbIndicatorNotify 143 { 144 int type; /* XkbAnyEvent */ 145 unsigned long serial; /* of last req processed by server */ 146 Bool send_event; /* is this from a SendEvent request? */ 147 Display* display; /* Display the event was read from */ 148 Time time; /* milliseconds */ 149 int xkb_type; /* XkbIndicatorNotify */ 150 int device; /* device ID */ 151 unsigned int changed; /* indicators with new state or map */ 152 unsigned int state; /* current state of all indicators */ 153 } XkbIndicatorNotifyEvent; 154 155 typedef struct _XkbNamesNotify 156 { 157 int type; /* XkbAnyEvent */ 158 unsigned long serial; /* of last req processed by server */ 159 Bool send_event; /* is this from a SendEvent request? */ 160 Display* display; /* Display the event was read from */ 161 Time time; /* milliseconds */ 162 int xkb_type; /* XkbNamesNotify */ 163 int device; /* device ID */ 164 unsigned int changed; /* names that have changed */ 165 int first_type; /* first key type with new name */ 166 int num_types; /* number of key types with new names */ 167 int first_lvl; /* first key type new new level names */ 168 int num_lvls; /* # of key types w/new level names */ 169 int num_aliases; /* total number of key aliases*/ 170 int num_radio_groups; /* total number of radio groups */ 171 unsigned int changed_vmods; /* virtual modifiers with new names */ 172 unsigned int changed_groups; /* groups with new names */ 173 unsigned int changed_indicators; /* indicators with new names */ 174 int first_key; /* first key with new name */ 175 int num_keys; /* number of keys with new names */ 176 } XkbNamesNotifyEvent; 177 178 typedef struct _XkbCompatMapNotify 179 { 180 int type; /* XkbAnyEvent */ 181 unsigned long serial; /* of last req processed by server */ 182 Bool send_event; /* is this from a SendEvent request? */ 183 Display* display; /* Display the event was read from */ 184 Time time; /* milliseconds */ 185 int xkb_type; /* XkbCompatMapNotify */ 186 int device; /* device ID */ 187 unsigned int changed_groups; /* groups with new compat maps */ 188 int first_si; /* first new symbol interp */ 189 int num_si; /* number of new symbol interps */ 190 int num_total_si; /* total # of symbol interps */ 191 } XkbCompatMapNotifyEvent; 192 193 typedef struct _XkbBellNotify 194 { 195 int type; /* XkbAnyEvent */ 196 unsigned long serial; /* of last req processed by server */ 197 Bool send_event; /* is this from a SendEvent request? */ 198 Display* display; /* Display the event was read from */ 199 Time time; /* milliseconds */ 200 int xkb_type; /* XkbBellNotify */ 201 int device; /* device ID */ 202 int percent; /* requested volume as a % of maximum */ 203 int pitch; /* requested pitch in Hz */ 204 int duration; /* requested duration in useconds */ 205 int bell_class; /* (input extension) feedback class */ 206 int bell_id; /* (input extension) ID of feedback */ 207 Atom name; /* "name" of requested bell */ 208 Window window; /* window associated with event */ 209 Bool event_only; /* "event only" requested */ 210 } XkbBellNotifyEvent; 211 212 typedef struct _XkbActionMessage 213 { 214 int type; /* XkbAnyEvent */ 215 unsigned long serial; /* of last req processed by server */ 216 Bool send_event; /* is this from a SendEvent request? */ 217 Display* display; /* Display the event was read from */ 218 Time time; /* milliseconds */ 219 int xkb_type; /* XkbActionMessage */ 220 int device; /* device ID */ 221 KeyCode keycode; /* key that generated the event */ 222 Bool press; /* true if act caused by key press */ 223 Bool key_event_follows; /* true if key event also generated */ 224 int group; /* effective group */ 225 unsigned int mods; /* effective mods */ 226 char message[XkbActionMessageLength + 1]; 227 /* message -- leave space for NUL */ 228 } XkbActionMessageEvent; 229 230 typedef struct _XkbAccessXNotify 231 { 232 int type; /* XkbAnyEvent */ 233 unsigned long serial; /* of last req processed by server */ 234 Bool send_event; /* is this from a SendEvent request? */ 235 Display* display; /* Display the event was read from */ 236 Time time; /* milliseconds */ 237 int xkb_type; /* XkbAccessXNotify */ 238 int device; /* device ID */ 239 int detail; /* XkbAXN_* */ 240 int keycode; /* key of event */ 241 int sk_delay; /* current slow keys delay */ 242 int debounce_delay; /* current debounce delay */ 243 } XkbAccessXNotifyEvent; 244 245 typedef struct _XkbExtensionDeviceNotify 246 { 247 int type; /* XkbAnyEvent */ 248 unsigned long serial; /* of last req processed by server */ 249 Bool send_event; /* is this from a SendEvent request? */ 250 Display* display; /* Display the event was read from */ 251 Time time; /* milliseconds */ 252 int xkb_type; /* XkbExtensionDeviceNotify */ 253 int device; /* device ID */ 254 unsigned int reason; /* reason for the event */ 255 unsigned int supported; /* mask of supported features */ 256 unsigned int unsupported; /* mask of unsupported features */ 257 /* that some app tried to use */ 258 int first_btn; /* first button that changed */ 259 int num_btns; /* range of buttons changed */ 260 unsigned int leds_defined; /* indicators with names or maps */ 261 unsigned int led_state; /* current state of the indicators */ 262 int led_class; /* feedback class for led changes */ 263 int led_id; /* feedback id for led changes */ 264 } XkbExtensionDeviceNotifyEvent; 265 266 typedef union _XkbEvent { 267 int type; 268 XkbAnyEvent any; 269 XkbNewKeyboardNotifyEvent new_kbd; 270 XkbMapNotifyEvent map; 271 XkbStateNotifyEvent state; 272 XkbControlsNotifyEvent ctrls; 273 XkbIndicatorNotifyEvent indicators; 274 XkbNamesNotifyEvent names; 275 XkbCompatMapNotifyEvent compat; 276 XkbBellNotifyEvent bell; 277 XkbActionMessageEvent message; 278 XkbAccessXNotifyEvent accessx; 279 XkbExtensionDeviceNotifyEvent device; 280 XEvent core; 281 } XkbEvent; 282 283 typedef struct _XkbKbdDpyState XkbKbdDpyStateRec, *XkbKbdDpyStatePtr; 284 285 /* XkbOpenDisplay error codes */ 286 #define XkbOD_Success 0 287 #define XkbOD_BadLibraryVersion 1 288 #define XkbOD_ConnectionRefused 2 289 #define XkbOD_NonXkbServer 3 290 #define XkbOD_BadServerVersion 4 291 292 /* Values for XlibFlags */ 293 #define XkbLC_ForceLatin1Lookup (1 << 0) 294 #define XkbLC_ConsumeLookupMods (1 << 1) 295 #define XkbLC_AlwaysConsumeShiftAndLock (1 << 2) 296 #define XkbLC_IgnoreNewKeyboards (1 << 3) 297 #define XkbLC_ControlFallback (1 << 4) 298 #define XkbLC_ConsumeKeysOnComposeFail (1 << 29) 299 #define XkbLC_ComposeLED (1 << 30) 300 #define XkbLC_BeepOnComposeFail (1 << 31) 301 302 #define XkbLC_AllComposeControls (0xc0000000) 303 #define XkbLC_AllControls (0xc000001f) 304 305 _XFUNCPROTOBEGIN 306 307 extern Bool XkbIgnoreExtension( 308 Bool /* ignore */ 309 ); 310 311 extern Display* XkbOpenDisplay( 312 char* /* name */, 313 int* /* ev_rtrn */, 314 int* /* err_rtrn */, 315 int* /* major_rtrn */, 316 int* /* minor_rtrn */, 317 int* /* reason */ 318 ); 319 320 extern Bool XkbQueryExtension( 321 Display* /* dpy */, 322 int* /* opcodeReturn */, 323 int* /* eventBaseReturn */, 324 int* /* errorBaseReturn */, 325 int* /* majorRtrn */, 326 int* /* minorRtrn */ 327 ); 328 329 extern Bool XkbUseExtension( 330 Display* /* dpy */, 331 int* /* major_rtrn */, 332 int* /* minor_rtrn */ 333 ); 334 335 extern Bool XkbLibraryVersion( 336 int* /* libMajorRtrn */, 337 int* /* libMinorRtrn */ 338 ); 339 340 extern unsigned int XkbSetXlibControls( 341 Display* /* dpy */, 342 unsigned int /* affect */, 343 unsigned int /* values */ 344 ); 345 346 extern unsigned int XkbGetXlibControls( 347 Display* /* dpy */ 348 ); 349 350 extern unsigned int XkbXlibControlsImplemented(void); 351 352 typedef Atom (*XkbInternAtomFunc)( 353 Display* /* dpy */, 354 _Xconst char* /* name */, 355 Bool /* only_if_exists */ 356 ); 357 358 typedef char* (*XkbGetAtomNameFunc)( 359 Display* /* dpy */, 360 Atom /* atom */ 361 ); 362 363 extern void XkbSetAtomFuncs( 364 XkbInternAtomFunc /* getAtom */, 365 XkbGetAtomNameFunc /* getName */ 366 ); 367 368 extern KeySym XkbKeycodeToKeysym( 369 Display* /* dpy */, 370 #if NeedWidePrototypes 371 unsigned int /* kc */, 372 #else 373 KeyCode /* kc */, 374 #endif 375 int /* group */, 376 int /* level */ 377 ); 378 379 extern unsigned int XkbKeysymToModifiers( 380 Display* /* dpy */, 381 KeySym /* ks */ 382 ); 383 384 extern Bool XkbLookupKeySym( 385 Display* /* dpy */, 386 KeyCode /* keycode */, 387 unsigned int /* modifiers */, 388 unsigned int* /* modifiers_return */, 389 KeySym* /* keysym_return */ 390 ); 391 392 extern int XkbLookupKeyBinding( 393 Display* /* dpy */, 394 KeySym /* sym_rtrn */, 395 unsigned int /* mods */, 396 char* /* buffer */, 397 int /* nbytes */, 398 int* /* extra_rtrn */ 399 ); 400 401 extern Bool XkbTranslateKeyCode( 402 XkbDescPtr /* xkb */, 403 KeyCode /* keycode */, 404 unsigned int /* modifiers */, 405 unsigned int* /* modifiers_return */, 406 KeySym* /* keysym_return */ 407 ); 408 409 extern int XkbTranslateKeySym( 410 Display* /* dpy */, 411 register KeySym* /* sym_return */, 412 unsigned int /* modifiers */, 413 char* /* buffer */, 414 int /* nbytes */, 415 int* /* extra_rtrn */ 416 ); 417 418 extern Bool XkbSetAutoRepeatRate( 419 Display* /* dpy */, 420 unsigned int /* deviceSpec */, 421 unsigned int /* delay */, 422 unsigned int /* interval */ 423 ); 424 425 extern Bool XkbGetAutoRepeatRate( 426 Display* /* dpy */, 427 unsigned int /* deviceSpec */, 428 unsigned int* /* delayRtrn */, 429 unsigned int* /* intervalRtrn */ 430 ); 431 432 extern Bool XkbChangeEnabledControls( 433 Display* /* dpy */, 434 unsigned int /* deviceSpec */, 435 unsigned int /* affect */, 436 unsigned int /* values */ 437 ); 438 439 extern Bool XkbDeviceBell( 440 Display* /* dpy */, 441 Window /* win */, 442 int /* deviceSpec */, 443 int /* bellClass */, 444 int /* bellID */, 445 int /* percent */, 446 Atom /* name */ 447 ); 448 449 extern Bool XkbForceDeviceBell( 450 Display* /* dpy */, 451 int /* deviceSpec */, 452 int /* bellClass */, 453 int /* bellID */, 454 int /* percent */ 455 ); 456 457 extern Bool XkbDeviceBellEvent( 458 Display* /* dpy */, 459 Window /* win */, 460 int /* deviceSpec */, 461 int /* bellClass */, 462 int /* bellID */, 463 int /* percent */, 464 Atom /* name */ 465 ); 466 467 extern Bool XkbBell( 468 Display* /* dpy */, 469 Window /* win */, 470 int /* percent */, 471 Atom /* name */ 472 ); 473 474 extern Bool XkbForceBell( 475 Display* /* dpy */, 476 int /* percent */ 477 ); 478 479 extern Bool XkbBellEvent( 480 Display* /* dpy */, 481 Window /* win */, 482 int /* percent */, 483 Atom /* name */ 484 ); 485 486 extern Bool XkbSelectEvents( 487 Display* /* dpy */, 488 unsigned int /* deviceID */, 489 unsigned int /* affect */, 490 unsigned int /* values */ 491 ); 492 493 extern Bool XkbSelectEventDetails( 494 Display* /* dpy */, 495 unsigned int /* deviceID */, 496 unsigned int /* eventType */, 497 unsigned long /* affect */, 498 unsigned long /* details */ 499 ); 500 501 extern void XkbNoteMapChanges( 502 XkbMapChangesPtr /* old */, 503 XkbMapNotifyEvent* /* new */, 504 unsigned int /* wanted */ 505 ); 506 507 extern void XkbNoteNameChanges( 508 XkbNameChangesPtr /* old */, 509 XkbNamesNotifyEvent* /* new */, 510 unsigned int /* wanted */ 511 ); 512 513 extern Status XkbGetIndicatorState( 514 Display* /* dpy */, 515 unsigned int /* deviceSpec */, 516 unsigned int* /* pStateRtrn */ 517 ); 518 519 extern Status XkbGetDeviceIndicatorState( 520 Display* /* dpy */, 521 unsigned int /* deviceSpec */, 522 unsigned int /* ledClass */, 523 unsigned int /* ledID */, 524 unsigned int* /* pStateRtrn */ 525 ); 526 527 extern Status XkbGetIndicatorMap( 528 Display* /* dpy */, 529 unsigned long /* which */, 530 XkbDescPtr /* desc */ 531 ); 532 533 extern Bool XkbSetIndicatorMap( 534 Display* /* dpy */, 535 unsigned long /* which */, 536 XkbDescPtr /* desc */ 537 ); 538 539 #define XkbNoteIndicatorMapChanges(o, n, w) \ 540 ((o)->map_changes |= ((n)->map_changes & (w))) 541 #define XkbNoteIndicatorStateChanges(o, n, w) \ 542 ((o)->state_changes |= ((n)->state_changes & (w))) 543 #define XkbGetIndicatorMapChanges(d, x, c) \ 544 (XkbGetIndicatorMap((d), (c)->map_changes, x)) 545 #define XkbChangeIndicatorMaps(d, x, c) \ 546 (XkbSetIndicatorMap((d), (c)->map_changes, x)) 547 548 extern Bool XkbGetNamedIndicator( 549 Display* /* dpy */, 550 Atom /* name */, 551 int* /* pNdxRtrn */, 552 Bool* /* pStateRtrn */, 553 XkbIndicatorMapPtr /* pMapRtrn */, 554 Bool* /* pRealRtrn */ 555 ); 556 557 extern Bool XkbGetNamedDeviceIndicator( 558 Display* /* dpy */, 559 unsigned int /* deviceSpec */, 560 unsigned int /* ledClass */, 561 unsigned int /* ledID */, 562 Atom /* name */, 563 int* /* pNdxRtrn */, 564 Bool* /* pStateRtrn */, 565 XkbIndicatorMapPtr /* pMapRtrn */, 566 Bool* /* pRealRtrn */ 567 ); 568 569 extern Bool XkbSetNamedIndicator( 570 Display* /* dpy */, 571 Atom /* name */, 572 Bool /* changeState */, 573 Bool /* state */, 574 Bool /* createNewMap */, 575 XkbIndicatorMapPtr /* pMap */ 576 ); 577 578 extern Bool XkbSetNamedDeviceIndicator( 579 Display* /* dpy */, 580 unsigned int /* deviceSpec */, 581 unsigned int /* ledClass */, 582 unsigned int /* ledID */, 583 Atom /* name */, 584 Bool /* changeState */, 585 Bool /* state */, 586 Bool /* createNewMap */, 587 XkbIndicatorMapPtr /* pMap */ 588 ); 589 590 extern Bool XkbLockModifiers( 591 Display* /* dpy */, 592 unsigned int /* deviceSpec */, 593 unsigned int /* affect */, 594 unsigned int /* values */ 595 ); 596 597 extern Bool XkbLatchModifiers( 598 Display* /* dpy */, 599 unsigned int /* deviceSpec */, 600 unsigned int /* affect */, 601 unsigned int /* values */ 602 ); 603 604 extern Bool XkbLockGroup( 605 Display* /* dpy */, 606 unsigned int /* deviceSpec */, 607 unsigned int /* group */ 608 ); 609 610 extern Bool XkbLatchGroup( 611 Display* /* dpy */, 612 unsigned int /* deviceSpec */, 613 unsigned int /* group */ 614 ); 615 616 extern Bool XkbSetServerInternalMods( 617 Display* /* dpy */, 618 unsigned int /* deviceSpec */, 619 unsigned int /* affectReal */, 620 unsigned int /* realValues */, 621 unsigned int /* affectVirtual */, 622 unsigned int /* virtualValues */ 623 ); 624 625 extern Bool XkbSetIgnoreLockMods( 626 Display* /* dpy */, 627 unsigned int /* deviceSpec */, 628 unsigned int /* affectReal */, 629 unsigned int /* realValues */, 630 unsigned int /* affectVirtual */, 631 unsigned int /* virtualValues */ 632 ); 633 634 extern Bool XkbVirtualModsToReal( 635 XkbDescPtr /* xkb */, 636 unsigned int /* virtual_mask */, 637 unsigned int* /* mask_rtrn */ 638 ); 639 640 extern Bool XkbComputeEffectiveMap( 641 XkbDescPtr /* xkb */, 642 XkbKeyTypePtr /* type */, 643 unsigned char* /* map_rtrn */ 644 ); 645 646 extern Status XkbInitCanonicalKeyTypes( 647 XkbDescPtr /* xkb */, 648 unsigned int /* which */, 649 int /* keypadVMod */ 650 ); 651 652 extern XkbDescPtr XkbAllocKeyboard( 653 void); 654 655 extern void XkbFreeKeyboard( 656 XkbDescPtr /* xkb */, 657 unsigned int /* which */, 658 Bool /* freeDesc */ 659 ); 660 661 extern Status XkbAllocClientMap( 662 XkbDescPtr /* xkb */, 663 unsigned int /* which */, 664 unsigned int /* nTypes */ 665 ); 666 667 extern Status XkbAllocServerMap( 668 XkbDescPtr /* xkb */, 669 unsigned int /* which */, 670 unsigned int /* nActions */ 671 ); 672 673 extern void XkbFreeClientMap( 674 XkbDescPtr /* xkb */, 675 unsigned int /* what */, 676 Bool /* freeMap */ 677 ); 678 679 extern void XkbFreeServerMap( 680 XkbDescPtr /* xkb */, 681 unsigned int /* what */, 682 Bool /* freeMap */ 683 ); 684 685 extern XkbKeyTypePtr XkbAddKeyType( 686 XkbDescPtr /* xkb */, 687 Atom /* name */, 688 int /* map_count */, 689 Bool /* want_preserve */, 690 int /* num_lvls */ 691 ); 692 693 extern Status XkbAllocIndicatorMaps( 694 XkbDescPtr /* xkb */ 695 ); 696 697 extern void XkbFreeIndicatorMaps( 698 XkbDescPtr /* xkb */ 699 ); 700 701 extern XkbDescPtr XkbGetMap( 702 Display* /* dpy */, 703 unsigned int /* which */, 704 unsigned int /* deviceSpec */ 705 ); 706 707 extern Status XkbGetUpdatedMap( 708 Display* /* dpy */, 709 unsigned int /* which */, 710 XkbDescPtr /* desc */ 711 ); 712 713 extern Status XkbGetMapChanges( 714 Display* /* dpy */, 715 XkbDescPtr /* xkb */, 716 XkbMapChangesPtr /* changes */ 717 ); 718 719 extern Status XkbRefreshKeyboardMapping( 720 XkbMapNotifyEvent* /* event */ 721 ); 722 723 extern Status XkbGetKeyTypes( 724 Display* /* dpy */, 725 unsigned int /* first */, 726 unsigned int /* num */, 727 XkbDescPtr /* xkb */ 728 ); 729 730 extern Status XkbGetKeySyms( 731 Display* /* dpy */, 732 unsigned int /* first */, 733 unsigned int /* num */, 734 XkbDescPtr /* xkb */ 735 ); 736 737 extern Status XkbGetKeyActions( 738 Display* /* dpy */, 739 unsigned int /* first */, 740 unsigned int /* num */, 741 XkbDescPtr /* xkb */ 742 ); 743 744 extern Status XkbGetKeyBehaviors( 745 Display* /* dpy */, 746 unsigned int /* firstKey */, 747 unsigned int /* nKeys */, 748 XkbDescPtr /* desc */ 749 ); 750 751 extern Status XkbGetVirtualMods( 752 Display* /* dpy */, 753 unsigned int /* which */, 754 XkbDescPtr /* desc */ 755 ); 756 757 extern Status XkbGetKeyExplicitComponents( 758 Display* /* dpy */, 759 unsigned int /* firstKey */, 760 unsigned int /* nKeys */, 761 XkbDescPtr /* desc */ 762 ); 763 764 extern Status XkbGetKeyModifierMap( 765 Display* /* dpy */, 766 unsigned int /* firstKey */, 767 unsigned int /* nKeys */, 768 XkbDescPtr /* desc */ 769 ); 770 771 extern Status XkbGetKeyVirtualModMap( 772 Display* /* dpy */, 773 unsigned int /* first */, 774 unsigned int /* num */, 775 XkbDescPtr /* xkb */ 776 ); 777 778 extern Status XkbAllocControls( 779 XkbDescPtr /* xkb */, 780 unsigned int /* which*/ 781 ); 782 783 extern void XkbFreeControls( 784 XkbDescPtr /* xkb */, 785 unsigned int /* which */, 786 Bool /* freeMap */ 787 ); 788 789 extern Status XkbGetControls( 790 Display* /* dpy */, 791 unsigned long /* which */, 792 XkbDescPtr /* desc */ 793 ); 794 795 extern Bool XkbSetControls( 796 Display* /* dpy */, 797 unsigned long /* which */, 798 XkbDescPtr /* desc */ 799 ); 800 801 extern void XkbNoteControlsChanges( 802 XkbControlsChangesPtr /* old */, 803 XkbControlsNotifyEvent* /* new */, 804 unsigned int /* wanted */ 805 ); 806 807 #define XkbGetControlsChanges(d, x, c) XkbGetControls(d, (c)->changed_ctrls, x) 808 #define XkbChangeControls(d, x, c) XkbSetControls(d, (c)->changed_ctrls, x) 809 810 extern Status XkbAllocCompatMap( 811 XkbDescPtr /* xkb */, 812 unsigned int /* which */, 813 unsigned int /* nInterpret */ 814 ); 815 816 extern void XkbFreeCompatMap( 817 XkbDescPtr /* xkb */, 818 unsigned int /* which */, 819 Bool /* freeMap */ 820 ); 821 822 extern Status XkbGetCompatMap( 823 Display* /* dpy */, 824 unsigned int /* which */, 825 XkbDescPtr /* xkb */ 826 ); 827 828 extern Bool XkbSetCompatMap( 829 Display* /* dpy */, 830 unsigned int /* which */, 831 XkbDescPtr /* xkb */, 832 Bool /* updateActions */ 833 ); 834 835 extern XkbSymInterpretPtr XkbAddSymInterpret( 836 XkbDescPtr /* xkb */, 837 XkbSymInterpretPtr /* si */, 838 Bool /* updateMap */, 839 XkbChangesPtr /* changes */ 840 ); 841 842 extern Status XkbAllocNames( 843 XkbDescPtr /* xkb */, 844 unsigned int /* which */, 845 int /* nTotalRG */, 846 int /* nTotalAliases */ 847 ); 848 849 extern Status XkbGetNames( 850 Display* /* dpy */, 851 unsigned int /* which */, 852 XkbDescPtr /* desc */ 853 ); 854 855 extern Bool XkbSetNames( 856 Display* /* dpy */, 857 unsigned int /* which */, 858 unsigned int /* firstType */, 859 unsigned int /* nTypes */, 860 XkbDescPtr /* desc */ 861 ); 862 863 extern Bool XkbChangeNames( 864 Display* /* dpy */, 865 XkbDescPtr /* xkb */, 866 XkbNameChangesPtr /* changes */ 867 ); 868 869 extern void XkbFreeNames( 870 XkbDescPtr /* xkb */, 871 unsigned int /* which */, 872 Bool /* freeMap */ 873 ); 874 875 extern Status XkbGetState( 876 Display* /* dpy */, 877 unsigned int /* deviceSpec */, 878 XkbStatePtr /* rtrnState */ 879 ); 880 881 extern Bool XkbSetMap( 882 Display* /* dpy */, 883 unsigned int /* which */, 884 XkbDescPtr /* desc */ 885 ); 886 887 extern Bool XkbChangeMap( 888 Display* /* dpy */, 889 XkbDescPtr /* desc */, 890 XkbMapChangesPtr /* changes */ 891 ); 892 893 extern Bool XkbSetDetectableAutoRepeat( 894 Display* /* dpy */, 895 Bool /* detectable */, 896 Bool* /* supported */ 897 ); 898 899 extern Bool XkbGetDetectableAutoRepeat( 900 Display* /* dpy */, 901 Bool* /* supported */ 902 ); 903 904 extern Bool XkbSetAutoResetControls( 905 Display* /* dpy */, 906 unsigned int /* changes */, 907 unsigned int* /* auto_ctrls */, 908 unsigned int* /* auto_values */ 909 ); 910 911 extern Bool XkbGetAutoResetControls( 912 Display* /* dpy */, 913 unsigned int* /* auto_ctrls */, 914 unsigned int* /* auto_ctrl_values */ 915 ); 916 917 extern Bool XkbSetPerClientControls( 918 Display* /* dpy */, 919 unsigned int /* change */, 920 unsigned int* /* values */ 921 ); 922 923 extern Bool XkbGetPerClientControls( 924 Display* /* dpy */, 925 unsigned int* /* ctrls */ 926 ); 927 928 extern Status XkbCopyKeyType( 929 XkbKeyTypePtr /* from */, 930 XkbKeyTypePtr /* into */ 931 ); 932 933 extern Status XkbCopyKeyTypes( 934 XkbKeyTypePtr /* from */, 935 XkbKeyTypePtr /* into */, 936 int /* num_types */ 937 ); 938 939 extern Status XkbResizeKeyType( 940 XkbDescPtr /* xkb */, 941 int /* type_ndx */, 942 int /* map_count */, 943 Bool /* want_preserve */, 944 int /* new_num_lvls */ 945 ); 946 947 extern KeySym* XkbResizeKeySyms( 948 XkbDescPtr /* desc */, 949 int /* forKey */, 950 int /* symsNeeded */ 951 ); 952 953 extern XkbAction* XkbResizeKeyActions( 954 XkbDescPtr /* desc */, 955 int /* forKey */, 956 int /* actsNeeded */ 957 ); 958 959 extern Status XkbChangeTypesOfKey( 960 XkbDescPtr /* xkb */, 961 int /* key */, 962 int /* num_groups */, 963 unsigned int /* groups */, 964 int* /* newTypes */, 965 XkbMapChangesPtr /* pChanges */ 966 ); 967 968 extern Status XkbChangeKeycodeRange( 969 XkbDescPtr /* xkb */, 970 int /* minKC */, 971 int /* maxKC */, 972 XkbChangesPtr /* changes */ 973 ); 974 975 /***====================================================================***/ 976 977 extern XkbComponentListPtr XkbListComponents( 978 Display* /* dpy */, 979 unsigned int /* deviceSpec */, 980 XkbComponentNamesPtr /* ptrns */, 981 int* /* max_inout */ 982 ); 983 984 extern void XkbFreeComponentList( 985 XkbComponentListPtr /* list */ 986 ); 987 988 extern XkbDescPtr XkbGetKeyboard( 989 Display* /* dpy */, 990 unsigned int /* which */, 991 unsigned int /* deviceSpec */ 992 ); 993 994 extern XkbDescPtr XkbGetKeyboardByName( 995 Display* /* dpy */, 996 unsigned int /* deviceSpec */, 997 XkbComponentNamesPtr /* names */, 998 unsigned int /* want */, 999 unsigned int /* need */, 1000 Bool /* load */ 1001 ); 1002 1003 /***====================================================================***/ 1004 1005 extern int XkbKeyTypesForCoreSymbols( /* returns # of groups */ 1006 XkbDescPtr /* xkb */, /* keyboard device */ 1007 int /* map_width */, /* width of core KeySym array */ 1008 KeySym* /* core_syms */, /* always mapWidth symbols */ 1009 unsigned int /* protected */, /* explicit key types */ 1010 int* /* types_inout */, /* always four type indices */ 1011 KeySym* /* xkb_syms_rtrn */ /* must have enough space */ 1012 ); 1013 1014 extern Bool XkbApplyCompatMapToKey( /* False only on error */ 1015 XkbDescPtr /* xkb */, /* keymap to be edited */ 1016 KeyCode /* key */, /* key to be updated */ 1017 XkbChangesPtr /* changes */ /* resulting changes to map */ 1018 ); 1019 1020 extern Bool XkbUpdateMapFromCore( /* False only on error */ 1021 XkbDescPtr /* xkb */, /* XKB keyboard to be edited */ 1022 KeyCode /* first_key */, /* first changed key */ 1023 int /* num_keys */, /* number of changed keys */ 1024 int /* map_width */, /* width of core keymap */ 1025 KeySym* /* core_keysyms */, /* symbols from core keymap */ 1026 XkbChangesPtr /* changes */ /* resulting changes */ 1027 ); 1028 1029 /***====================================================================***/ 1030 1031 extern XkbDeviceLedInfoPtr XkbAddDeviceLedInfo( 1032 XkbDeviceInfoPtr /* devi */, 1033 unsigned int /* ledClass */, 1034 unsigned int /* ledId */ 1035 ); 1036 1037 extern Status XkbResizeDeviceButtonActions( 1038 XkbDeviceInfoPtr /* devi */, 1039 unsigned int /* newTotal */ 1040 ); 1041 1042 extern XkbDeviceInfoPtr XkbAllocDeviceInfo( 1043 unsigned int /* deviceSpec */, 1044 unsigned int /* nButtons */, 1045 unsigned int /* szLeds */ 1046 ); 1047 1048 extern void XkbFreeDeviceInfo( 1049 XkbDeviceInfoPtr /* devi */, 1050 unsigned int /* which */, 1051 Bool /* freeDevI */ 1052 ); 1053 1054 extern void XkbNoteDeviceChanges( 1055 XkbDeviceChangesPtr /* old */, 1056 XkbExtensionDeviceNotifyEvent* /* new */, 1057 unsigned int /* wanted */ 1058 ); 1059 1060 extern XkbDeviceInfoPtr XkbGetDeviceInfo( 1061 Display* /* dpy */, 1062 unsigned int /* which */, 1063 unsigned int /* deviceSpec */, 1064 unsigned int /* ledClass */, 1065 unsigned int /* ledID */ 1066 ); 1067 1068 extern Status XkbGetDeviceInfoChanges( 1069 Display* /* dpy */, 1070 XkbDeviceInfoPtr /* devi */, 1071 XkbDeviceChangesPtr /* changes */ 1072 ); 1073 1074 extern Status XkbGetDeviceButtonActions( 1075 Display* /* dpy */, 1076 XkbDeviceInfoPtr /* devi */, 1077 Bool /* all */, 1078 unsigned int /* first */, 1079 unsigned int /* nBtns */ 1080 ); 1081 1082 extern Status XkbGetDeviceLedInfo( 1083 Display* /* dpy */, 1084 XkbDeviceInfoPtr /* devi */, 1085 unsigned int /* ledClass (class, XIDflt, XIAll) */, 1086 unsigned int /* ledId (id, XIDflt, XIAll) */, 1087 unsigned int /* which (XkbXI_Indicator{Names,Map}Mask */ 1088 ); 1089 1090 extern Bool XkbSetDeviceInfo( 1091 Display* /* dpy */, 1092 unsigned int /* which */, 1093 XkbDeviceInfoPtr /* devi */ 1094 ); 1095 1096 extern Bool XkbChangeDeviceInfo( 1097 Display* /* dpy */, 1098 XkbDeviceInfoPtr /* desc */, 1099 XkbDeviceChangesPtr /* changes */ 1100 ); 1101 1102 extern Bool XkbSetDeviceLedInfo( 1103 Display* /* dpy */, 1104 XkbDeviceInfoPtr /* devi */, 1105 unsigned int /* ledClass */, 1106 unsigned int /* ledID */, 1107 unsigned int /* which */ 1108 ); 1109 1110 extern Bool XkbSetDeviceButtonActions( 1111 Display* /* dpy */, 1112 XkbDeviceInfoPtr /* devi */, 1113 unsigned int /* first */, 1114 unsigned int /* nBtns */ 1115 ); 1116 1117 /***====================================================================***/ 1118 1119 extern char XkbToControl( 1120 char /* c */ 1121 ); 1122 1123 /***====================================================================***/ 1124 1125 extern Bool XkbSetDebuggingFlags( 1126 Display* /* dpy */, 1127 unsigned int /* mask */, 1128 unsigned int /* flags */, 1129 char* /* msg */, 1130 unsigned int /* ctrls_mask */, 1131 unsigned int /* ctrls */, 1132 unsigned int* /* rtrn_flags */, 1133 unsigned int* /* rtrn_ctrls */ 1134 ); 1135 1136 extern Bool XkbApplyVirtualModChanges( 1137 XkbDescPtr /* xkb */, 1138 unsigned int /* changed */, 1139 XkbChangesPtr /* changes */ 1140 ); 1141 1142 extern Bool XkbUpdateActionVirtualMods( 1143 XkbDescPtr /* xkb */, 1144 XkbAction* /* act */, 1145 unsigned int /* changed */ 1146 ); 1147 1148 extern void XkbUpdateKeyTypeVirtualMods( 1149 XkbDescPtr /* xkb */, 1150 XkbKeyTypePtr /* type */, 1151 unsigned int /* changed */, 1152 XkbChangesPtr /* changes */ 1153 ); 1154 1155 _XFUNCPROTOEND 1156 1157 #endif /* _X11_XKBLIB_H_ */ 1158