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