github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xcb/include/X11/XKBlib.h (about)

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