XKBlib.h revision 61b2299d
11ab64890Smrg/* $Xorg: XKBlib.h,v 1.6 2000/08/17 19:45:03 cpqbld Exp $ */
21ab64890Smrg/************************************************************
31ab64890SmrgCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
41ab64890Smrg
51ab64890SmrgPermission to use, copy, modify, and distribute this
61ab64890Smrgsoftware and its documentation for any purpose and without
71ab64890Smrgfee is hereby granted, provided that the above copyright
81ab64890Smrgnotice appear in all copies and that both that copyright
91ab64890Smrgnotice and this permission notice appear in supporting
1061b2299dSmrgdocumentation, and that the name of Silicon Graphics not be
1161b2299dSmrgused in advertising or publicity pertaining to distribution
121ab64890Smrgof the software without specific prior written permission.
1361b2299dSmrgSilicon Graphics makes no representation about the suitability
141ab64890Smrgof this software for any purpose. It is provided "as is"
151ab64890Smrgwithout any express or implied warranty.
161ab64890Smrg
1761b2299dSmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
1861b2299dSmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
191ab64890SmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
2061b2299dSmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
2161b2299dSmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
2261b2299dSmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
231ab64890SmrgOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
241ab64890SmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE.
251ab64890Smrg
261ab64890Smrg********************************************************/
271ab64890Smrg/* $XFree86: xc/lib/X11/XKBlib.h,v 3.5 2003/04/17 02:06:31 dawes Exp $ */
281ab64890Smrg
291ab64890Smrg#ifndef _XKBLIB_H_
301ab64890Smrg#define _XKBLIB_H_
311ab64890Smrg
321ab64890Smrg#include <X11/Xlib.h>
331ab64890Smrg#include <X11/extensions/XKBstr.h>
341ab64890Smrg
351ab64890Smrgtypedef struct _XkbAnyEvent {
361ab64890Smrg	int 		type;		/* XkbAnyEvent */
371ab64890Smrg	unsigned long 	serial;		/* # of last req processed by server */
381ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
391ab64890Smrg	Display *	display;	/* Display the event was read from */
401ab64890Smrg	Time 		time;		/* milliseconds */
411ab64890Smrg	int 		xkb_type;	/* XKB event minor code */
421ab64890Smrg	unsigned int 	device;		/* device ID */
431ab64890Smrg} XkbAnyEvent;
441ab64890Smrg
451ab64890Smrgtypedef struct _XkbNewKeyboardNotify {
461ab64890Smrg	int 		type;		/* XkbAnyEvent */
471ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
481ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
491ab64890Smrg	Display *	display;	/* Display the event was read from */
501ab64890Smrg	Time 		time;		/* milliseconds */
511ab64890Smrg	int 		xkb_type;	/* XkbNewKeyboardNotify */
521ab64890Smrg	int	 	device;		/* device ID */
531ab64890Smrg	int	 	old_device;	/* device ID of previous keyboard */
541ab64890Smrg	int	 	min_key_code;	/* minimum key code */
551ab64890Smrg	int		max_key_code;	/* maximum key code */
561ab64890Smrg	int	 	old_min_key_code;/* min key code of previous kbd */
571ab64890Smrg	int		old_max_key_code;/* max key code of previous kbd */
581ab64890Smrg	unsigned int	changed;	/* changed aspects of the keyboard */
591ab64890Smrg	char	 	req_major;	/* major and minor opcode of req */
601ab64890Smrg	char	 	req_minor;	/* that caused change, if applicable */
611ab64890Smrg} XkbNewKeyboardNotifyEvent;
621ab64890Smrg
631ab64890Smrgtypedef struct _XkbMapNotifyEvent {
641ab64890Smrg	int 		type;		/* XkbAnyEvent */
651ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
661ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request */
671ab64890Smrg	Display *	display;	/* Display the event was read from */
681ab64890Smrg	Time 		time;		/* milliseconds */
691ab64890Smrg	int 		xkb_type;	/* XkbMapNotify */
701ab64890Smrg	int 		device;		/* device ID */
711ab64890Smrg	unsigned int 	changed;	/* fields which have been changed */
721ab64890Smrg	unsigned int 	flags;		/* reserved */
731ab64890Smrg	int 		first_type;	/* first changed key type */
741ab64890Smrg	int 		num_types;	/* number of changed key types */
751ab64890Smrg	KeyCode		min_key_code;
761ab64890Smrg	KeyCode		max_key_code;
771ab64890Smrg	KeyCode		first_key_sym;
781ab64890Smrg	KeyCode		first_key_act;
791ab64890Smrg	KeyCode		first_key_behavior;
801ab64890Smrg	KeyCode		first_key_explicit;
8161b2299dSmrg	KeyCode		first_modmap_key;
821ab64890Smrg	KeyCode		first_vmodmap_key;
831ab64890Smrg	int		num_key_syms;
841ab64890Smrg	int		num_key_acts;
851ab64890Smrg	int		num_key_behaviors;
861ab64890Smrg	int		num_key_explicit;
871ab64890Smrg	int 		num_modmap_keys;
881ab64890Smrg	int 		num_vmodmap_keys;
891ab64890Smrg	unsigned int 	vmods;		/* mask of changed virtual mods */
901ab64890Smrg} XkbMapNotifyEvent;
911ab64890Smrg
921ab64890Smrgtypedef struct _XkbStateNotifyEvent {
931ab64890Smrg	int 		type;		/* XkbAnyEvent */
941ab64890Smrg	unsigned long 	serial;		/* # of last req processed by server */
951ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
961ab64890Smrg	Display *	display;	/* Display the event was read from */
971ab64890Smrg	Time 		time;		/* milliseconds */
981ab64890Smrg	int 		xkb_type;	/* XkbStateNotify */
991ab64890Smrg	int 		device;		/* device ID */
1001ab64890Smrg	unsigned int 	changed;	/* mask of changed state components */
1011ab64890Smrg	int 		group;		/* keyboard group */
1021ab64890Smrg	int 		base_group;	/* base keyboard group */
1031ab64890Smrg	int 		latched_group;	/* latched keyboard group */
1041ab64890Smrg	int 		locked_group;	/* locked keyboard group */
1051ab64890Smrg	unsigned int	mods;		/* modifier state */
1061ab64890Smrg	unsigned int 	base_mods;	/* base modifier state */
1071ab64890Smrg	unsigned int	latched_mods;	/* latched modifiers */
1081ab64890Smrg	unsigned int	locked_mods;	/* locked modifiers */
1091ab64890Smrg	int 		compat_state;	/* compatibility state */
1101ab64890Smrg	unsigned char	grab_mods;	/* mods used for grabs */
1111ab64890Smrg	unsigned char	compat_grab_mods;/* grab mods for non-XKB clients */
1121ab64890Smrg	unsigned char	lookup_mods;	/* mods sent to clients */
1131ab64890Smrg	unsigned char	compat_lookup_mods; /* mods sent to non-XKB clients */
1141ab64890Smrg	int 		ptr_buttons;	/* pointer button state */
1151ab64890Smrg	KeyCode		keycode;	/* keycode that caused the change */
1161ab64890Smrg	char 		event_type;	/* KeyPress or KeyRelease */
1171ab64890Smrg	char 		req_major;	/* Major opcode of request */
1181ab64890Smrg	char 		req_minor;	/* Minor opcode of request */
1191ab64890Smrg} XkbStateNotifyEvent;
1201ab64890Smrg
1211ab64890Smrgtypedef struct _XkbControlsNotify {
1221ab64890Smrg	int 		type;		/* XkbAnyEvent */
1231ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
1241ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
1251ab64890Smrg	Display *	display;	/* Display the event was read from */
1261ab64890Smrg	Time 		time;		/* milliseconds */
1271ab64890Smrg	int 		xkb_type;	/* XkbControlsNotify */
1281ab64890Smrg	int 		device;		/* device ID */
1291ab64890Smrg	unsigned int	changed_ctrls;	/* controls with changed sub-values */
1301ab64890Smrg	unsigned int 	enabled_ctrls;	/* controls currently enabled */
1311ab64890Smrg	unsigned int	enabled_ctrl_changes;/* controls just {en,dis}abled */
1321ab64890Smrg	int 		num_groups;	/* total groups on keyboard */
1331ab64890Smrg	KeyCode		keycode;	/* key that caused change or 0 */
1341ab64890Smrg	char 		event_type;	/* type of event that caused change */
1351ab64890Smrg	char 		req_major;	/* if keycode==0, major and minor */
1361ab64890Smrg	char 		req_minor;	/* opcode of req that caused change */
1371ab64890Smrg} XkbControlsNotifyEvent;
1381ab64890Smrg
1391ab64890Smrgtypedef struct _XkbIndicatorNotify {
1401ab64890Smrg	int 		type;		/* XkbAnyEvent */
1411ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
1421ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
1431ab64890Smrg	Display *	display;	/* Display the event was read from */
1441ab64890Smrg	Time 		time;		/* milliseconds */
1451ab64890Smrg	int 		xkb_type;	/* XkbIndicatorNotify */
1461ab64890Smrg	int 		device;		/* device ID */
1471ab64890Smrg	unsigned int	changed;	/* indicators with new state or map */
1481ab64890Smrg	unsigned int	state;	 	/* current state of all indicators */
1491ab64890Smrg} XkbIndicatorNotifyEvent;
1501ab64890Smrg
1511ab64890Smrgtypedef struct _XkbNamesNotify {
1521ab64890Smrg	int 		type;		/* XkbAnyEvent */
1531ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
1541ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
1551ab64890Smrg	Display *	display;	/* Display the event was read from */
1561ab64890Smrg	Time 		time;		/* milliseconds */
1571ab64890Smrg	int 		xkb_type;	/* XkbNamesNotify */
1581ab64890Smrg	int	 	device;		/* device ID */
1591ab64890Smrg	unsigned int 	changed;	/* names that have changed */
1601ab64890Smrg	int	 	first_type;	/* first key type with new name */
1611ab64890Smrg	int	 	num_types;	/* number of key types with new names */
1621ab64890Smrg	int	 	first_lvl;	/* first key type new new level names */
1631ab64890Smrg	int	 	num_lvls;	/* # of key types w/new level names */
1641ab64890Smrg	int	 	num_aliases;	/* total number of key aliases*/
1651ab64890Smrg	int	 	num_radio_groups;/* total number of radio groups */
1661ab64890Smrg	unsigned int 	changed_vmods;	/* virtual modifiers with new names */
1671ab64890Smrg	unsigned int 	changed_groups;	/* groups with new names */
1681ab64890Smrg	unsigned int 	changed_indicators;/* indicators with new names */
1691ab64890Smrg	int		first_key;	/* first key with new name */
1701ab64890Smrg	int		num_keys;	/* number of keys with new names */
1711ab64890Smrg} XkbNamesNotifyEvent;
1721ab64890Smrg
1731ab64890Smrgtypedef struct _XkbCompatMapNotify {
1741ab64890Smrg	int 		type;		/* XkbAnyEvent */
1751ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
1761ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
1771ab64890Smrg	Display *	display;	/* Display the event was read from */
1781ab64890Smrg	Time 		time;		/* milliseconds */
1791ab64890Smrg	int 		xkb_type;	/* XkbCompatMapNotify */
1801ab64890Smrg	int	 	device;		/* device ID */
1811ab64890Smrg	unsigned int 	changed_groups; /* groups with new compat maps */
1821ab64890Smrg	int	 	first_si;	/* first new symbol interp */
1831ab64890Smrg	int	 	num_si;		/* number of new symbol interps */
1841ab64890Smrg	int	 	num_total_si;	/* total # of symbol interps */
1851ab64890Smrg} XkbCompatMapNotifyEvent;
1861ab64890Smrg
1871ab64890Smrgtypedef struct _XkbBellNotify {
1881ab64890Smrg	int 		type;		/* XkbAnyEvent */
1891ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
1901ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
1911ab64890Smrg	Display *	display;	/* Display the event was read from */
1921ab64890Smrg	Time 		time;		/* milliseconds */
1931ab64890Smrg	int 		xkb_type;	/* XkbBellNotify */
1941ab64890Smrg	int	 	device;		/* device ID */
1951ab64890Smrg	int	 	percent;	/* requested volume as a % of maximum */
1961ab64890Smrg	int	 	pitch;		/* requested pitch in Hz */
1971ab64890Smrg	int	 	duration;	/* requested duration in useconds */
1981ab64890Smrg	int	 	bell_class;	/* (input extension) feedback class */
1991ab64890Smrg	int	 	bell_id;	/* (input extension) ID of feedback */
2001ab64890Smrg	Atom 		name;		/* "name" of requested bell */
2011ab64890Smrg	Window 		window;		/* window associated with event */
2021ab64890Smrg	Bool		event_only;	/* "event only" requested */
2031ab64890Smrg} XkbBellNotifyEvent;
2041ab64890Smrg
2051ab64890Smrgtypedef struct _XkbActionMessage {
2061ab64890Smrg	int 		type;		/* XkbAnyEvent */
2071ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
2081ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
2091ab64890Smrg	Display *	display;	/* Display the event was read from */
2101ab64890Smrg	Time 		time;		/* milliseconds */
2111ab64890Smrg	int 		xkb_type;	/* XkbActionMessage */
2121ab64890Smrg	int	 	device;		/* device ID */
2131ab64890Smrg	KeyCode		keycode;	/* key that generated the event */
2141ab64890Smrg	Bool 		press;		/* true if act caused by key press */
2151ab64890Smrg	Bool 		key_event_follows;/* true if key event also generated */
2161ab64890Smrg	int		group;		/* effective group */
2171ab64890Smrg	unsigned int	mods;		/* effective mods */
21861b2299dSmrg	char 		message[XkbActionMessageLength+1];
2191ab64890Smrg					/* message -- leave space for NUL */
2201ab64890Smrg} XkbActionMessageEvent;
2211ab64890Smrg
2221ab64890Smrgtypedef struct _XkbAccessXNotify {
2231ab64890Smrg	int 		type;		/* XkbAnyEvent */
2241ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
2251ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
2261ab64890Smrg	Display *	display;	/* Display the event was read from */
2271ab64890Smrg	Time 		time;		/* milliseconds */
2281ab64890Smrg	int 		xkb_type;	/* XkbAccessXNotify */
2291ab64890Smrg	int	 	device;		/* device ID */
2301ab64890Smrg	int	 	detail;		/* XkbAXN_* */
2311ab64890Smrg	int	 	keycode;	/* key of event */
2321ab64890Smrg	int	 	sk_delay;	/* current slow keys delay */
2331ab64890Smrg	int		debounce_delay;	/* current debounce delay */
2341ab64890Smrg} XkbAccessXNotifyEvent;
2351ab64890Smrg
2361ab64890Smrgtypedef struct _XkbExtensionDeviceNotify {
2371ab64890Smrg	int 		type;		/* XkbAnyEvent */
2381ab64890Smrg	unsigned long 	serial;		/* of last req processed by server */
2391ab64890Smrg	Bool 		send_event;	/* is this from a SendEvent request? */
2401ab64890Smrg	Display *	display;	/* Display the event was read from */
2411ab64890Smrg	Time 		time;		/* milliseconds */
2421ab64890Smrg	int 		xkb_type;	/* XkbExtensionDeviceNotify */
2431ab64890Smrg	int	 	device;		/* device ID */
24461b2299dSmrg	unsigned int	reason;		/* reason for the event */
24561b2299dSmrg	unsigned int	supported;	/* mask of supported features */
2461ab64890Smrg	unsigned int	unsupported;	/* mask of unsupported features */
2471ab64890Smrg					/* that some app tried to use */
2481ab64890Smrg	int	 	first_btn;	/* first button that changed */
2491ab64890Smrg	int	 	num_btns;	/* range of buttons changed */
2501ab64890Smrg	unsigned int	leds_defined;   /* indicators with names or maps */
2511ab64890Smrg	unsigned int	led_state;	/* current state of the indicators */
2521ab64890Smrg	int		led_class;	/* feedback class for led changes */
2531ab64890Smrg	int		led_id;   	/* feedback id for led changes */
2541ab64890Smrg} XkbExtensionDeviceNotifyEvent;
2551ab64890Smrg
2561ab64890Smrgtypedef union _XkbEvent {
2571ab64890Smrg	int				type;
2581ab64890Smrg	XkbAnyEvent			any;
2591ab64890Smrg	XkbNewKeyboardNotifyEvent	new_kbd;
2601ab64890Smrg	XkbMapNotifyEvent		map;
2611ab64890Smrg	XkbStateNotifyEvent		state;
2621ab64890Smrg	XkbControlsNotifyEvent		ctrls;
2631ab64890Smrg	XkbIndicatorNotifyEvent 	indicators;
2641ab64890Smrg	XkbNamesNotifyEvent		names;
2651ab64890Smrg	XkbCompatMapNotifyEvent		compat;
2661ab64890Smrg	XkbBellNotifyEvent		bell;
2671ab64890Smrg	XkbActionMessageEvent		message;
2681ab64890Smrg	XkbAccessXNotifyEvent		accessx;
2691ab64890Smrg	XkbExtensionDeviceNotifyEvent 	device;
2701ab64890Smrg	XEvent				core;
2711ab64890Smrg} XkbEvent;
2721ab64890Smrg
2731ab64890Smrgtypedef struct	_XkbKbdDpyState	XkbKbdDpyStateRec,*XkbKbdDpyStatePtr;
2741ab64890Smrg
2751ab64890Smrg	/* XkbOpenDisplay error codes */
2761ab64890Smrg#define	XkbOD_Success		0
2771ab64890Smrg#define	XkbOD_BadLibraryVersion	1
2781ab64890Smrg#define	XkbOD_ConnectionRefused	2
2791ab64890Smrg#define	XkbOD_NonXkbServer	3
2801ab64890Smrg#define	XkbOD_BadServerVersion	4
2811ab64890Smrg
2821ab64890Smrg	/* Values for XlibFlags */
2831ab64890Smrg#define	XkbLC_ForceLatin1Lookup		(1<<0)
2841ab64890Smrg#define	XkbLC_ConsumeLookupMods		(1<<1)
2851ab64890Smrg#define	XkbLC_AlwaysConsumeShiftAndLock (1<<2)
2861ab64890Smrg#define	XkbLC_IgnoreNewKeyboards	(1<<3)
2871ab64890Smrg#define	XkbLC_ControlFallback		(1<<4)
2881ab64890Smrg#define	XkbLC_ConsumeKeysOnComposeFail	(1<<29)
2891ab64890Smrg#define	XkbLC_ComposeLED		(1<<30)
2901ab64890Smrg#define	XkbLC_BeepOnComposeFail		(1<<31)
2911ab64890Smrg
2921ab64890Smrg#define	XkbLC_AllComposeControls	(0xc0000000)
2931ab64890Smrg#define	XkbLC_AllControls		(0xc000001f)
2941ab64890Smrg
2951ab64890Smrg_XFUNCPROTOBEGIN
2961ab64890Smrg
2971ab64890Smrgextern	Bool	XkbIgnoreExtension(
2981ab64890Smrg	Bool			/* ignore */
2991ab64890Smrg);
3001ab64890Smrg
3011ab64890Smrgextern	Display *XkbOpenDisplay(
3021ab64890Smrg	char *			/* name */,
3031ab64890Smrg	int *			/* ev_rtrn */,
3041ab64890Smrg	int *			/* err_rtrn */,
3051ab64890Smrg	int *			/* major_rtrn */,
3061ab64890Smrg	int *			/* minor_rtrn */,
3071ab64890Smrg	int *			/* reason */
3081ab64890Smrg);
3091ab64890Smrg
3101ab64890Smrgextern	Bool	XkbQueryExtension(
3111ab64890Smrg	Display *		/* dpy */,
3121ab64890Smrg	int *			/* opcodeReturn */,
3131ab64890Smrg	int *			/* eventBaseReturn */,
3141ab64890Smrg	int *			/* errorBaseReturn */,
3151ab64890Smrg	int *			/* majorRtrn */,
3161ab64890Smrg	int *			/* minorRtrn */
3171ab64890Smrg);
3181ab64890Smrg
3191ab64890Smrgextern	Bool	XkbUseExtension(
3201ab64890Smrg	Display *		/* dpy */,
3211ab64890Smrg	int *			/* major_rtrn */,
3221ab64890Smrg	int *			/* minor_rtrn */
3231ab64890Smrg);
3241ab64890Smrg
3251ab64890Smrgextern	Bool	XkbLibraryVersion(
3261ab64890Smrg	int *			/* libMajorRtrn */,
3271ab64890Smrg	int *			/* libMinorRtrn */
3281ab64890Smrg);
3291ab64890Smrg
3301ab64890Smrgextern	unsigned int	XkbSetXlibControls(
3311ab64890Smrg	Display*		/* dpy */,
3321ab64890Smrg	unsigned int		/* affect */,
3331ab64890Smrg	unsigned int		/* values */
3341ab64890Smrg);
3351ab64890Smrg
3361ab64890Smrgextern	unsigned int	XkbGetXlibControls(
3371ab64890Smrg	Display*		/* dpy */
3381ab64890Smrg);
3391ab64890Smrg
3401ab64890Smrgextern	unsigned int	XkbXlibControlsImplemented(void);
3411ab64890Smrg
3421ab64890Smrgtypedef	Atom	(*XkbInternAtomFunc)(
3431ab64890Smrg	Display *		/* dpy */,
3441ab64890Smrg	_Xconst char *		/* name */,
3451ab64890Smrg	Bool			/* only_if_exists */
3461ab64890Smrg);
3471ab64890Smrg
3481ab64890Smrgtypedef char *	(*XkbGetAtomNameFunc)(
3491ab64890Smrg	Display *		/* dpy */,
3501ab64890Smrg	Atom			/* atom */
3511ab64890Smrg);
3521ab64890Smrg
3531ab64890Smrgextern void		XkbSetAtomFuncs(
3541ab64890Smrg	XkbInternAtomFunc	/* getAtom */,
3551ab64890Smrg	XkbGetAtomNameFunc	/* getName */
3561ab64890Smrg);
3571ab64890Smrg
3581ab64890Smrgextern	KeySym XkbKeycodeToKeysym(
3591ab64890Smrg		Display *	/* dpy */,
3601ab64890Smrg#if NeedWidePrototypes
3611ab64890Smrg		 unsigned int 	/* kc */,
3621ab64890Smrg#else
3631ab64890Smrg		 KeyCode 	/* kc */,
3641ab64890Smrg#endif
3651ab64890Smrg		 int 		/* group */,
3661ab64890Smrg		 int		/* level */
3671ab64890Smrg);
3681ab64890Smrg
3691ab64890Smrgextern	unsigned int	XkbKeysymToModifiers(
3701ab64890Smrg    Display *			/* dpy */,
3711ab64890Smrg    KeySym 			/* ks */
3721ab64890Smrg);
3731ab64890Smrg
3741ab64890Smrgextern	Bool		XkbLookupKeySym(
3751ab64890Smrg    Display *			/* dpy */,
3761ab64890Smrg    KeyCode 			/* keycode */,
3771ab64890Smrg    unsigned int 		/* modifiers */,
3781ab64890Smrg    unsigned int *		/* modifiers_return */,
3791ab64890Smrg    KeySym *			/* keysym_return */
3801ab64890Smrg);
3811ab64890Smrg
3821ab64890Smrgextern	int		XkbLookupKeyBinding(
3831ab64890Smrg    Display *			/* dpy */,
3841ab64890Smrg    KeySym 			/* sym_rtrn */,
3851ab64890Smrg    unsigned int 		/* mods */,
3861ab64890Smrg    char *			/* buffer */,
3871ab64890Smrg    int 			/* nbytes */,
3881ab64890Smrg    int * 			/* extra_rtrn */
3891ab64890Smrg);
3901ab64890Smrg
3911ab64890Smrgextern	Bool		XkbTranslateKeyCode(
3921ab64890Smrg    XkbDescPtr			/* xkb */,
3931ab64890Smrg    KeyCode 			/* keycode */,
3941ab64890Smrg    unsigned int 		/* modifiers */,
3951ab64890Smrg    unsigned int *		/* modifiers_return */,
3961ab64890Smrg    KeySym *			/* keysym_return */
3971ab64890Smrg);
3981ab64890Smrg
3991ab64890Smrgextern	int		XkbTranslateKeySym(
4001ab64890Smrg    Display *			/* dpy */,
4011ab64890Smrg    register KeySym *		/* sym_return */,
4021ab64890Smrg    unsigned int 		/* modifiers */,
4031ab64890Smrg    char *			/* buffer */,
4041ab64890Smrg    int 			/* nbytes */,
4051ab64890Smrg    int *			/* extra_rtrn */
4061ab64890Smrg);
4071ab64890Smrg
4081ab64890Smrgextern	Bool	XkbSetAutoRepeatRate(
4091ab64890Smrg	Display *		/* dpy */,
4101ab64890Smrg	unsigned int		/* deviceSpec */,
4111ab64890Smrg	unsigned int		/* delay */,
4121ab64890Smrg	unsigned int		/* interval */
4131ab64890Smrg);
4141ab64890Smrg
4151ab64890Smrgextern	Bool	XkbGetAutoRepeatRate(
4161ab64890Smrg	Display *		/* dpy */,
4171ab64890Smrg	unsigned int		/* deviceSpec */,
4181ab64890Smrg	unsigned int *		/* delayRtrn */,
4191ab64890Smrg	unsigned int *		/* intervalRtrn */
4201ab64890Smrg);
4211ab64890Smrg
4221ab64890Smrgextern	Bool	XkbChangeEnabledControls(
4231ab64890Smrg	Display *		/* dpy */,
4241ab64890Smrg	unsigned int		/* deviceSpec */,
4251ab64890Smrg	unsigned int		/* affect */,
4261ab64890Smrg	unsigned int		/* values */
4271ab64890Smrg);
4281ab64890Smrg
4291ab64890Smrgextern	Bool	XkbDeviceBell(
4301ab64890Smrg	Display *		/* dpy */,
4311ab64890Smrg	Window			/* win */,
4321ab64890Smrg	int			/* deviceSpec */,
4331ab64890Smrg	int			/* bellClass */,
4341ab64890Smrg	int			/* bellID */,
4351ab64890Smrg	int			/* percent */,
4361ab64890Smrg	Atom			/* name */
4371ab64890Smrg);
4381ab64890Smrg
4391ab64890Smrgextern	Bool	XkbForceDeviceBell(
4401ab64890Smrg	Display *		/* dpy */,
4411ab64890Smrg	int			/* deviceSpec */,
4421ab64890Smrg	int			/* bellClass */,
4431ab64890Smrg	int			/* bellID */,
4441ab64890Smrg	int			/* percent */
4451ab64890Smrg);
4461ab64890Smrg
4471ab64890Smrgextern	Bool	XkbDeviceBellEvent(
4481ab64890Smrg	Display *		/* dpy */,
4491ab64890Smrg	Window			/* win */,
4501ab64890Smrg	int			/* deviceSpec */,
4511ab64890Smrg	int			/* bellClass */,
4521ab64890Smrg	int			/* bellID */,
4531ab64890Smrg	int			/* percent */,
4541ab64890Smrg	Atom			/* name */
4551ab64890Smrg);
4561ab64890Smrg
4571ab64890Smrgextern	Bool	XkbBell(
4581ab64890Smrg	Display *		/* dpy */,
4591ab64890Smrg	Window			/* win */,
4601ab64890Smrg	int			/* percent */,
4611ab64890Smrg	Atom			/* name */
4621ab64890Smrg);
4631ab64890Smrg
4641ab64890Smrgextern	Bool	XkbForceBell(
4651ab64890Smrg	Display *		/* dpy */,
4661ab64890Smrg	int			/* percent */
4671ab64890Smrg);
4681ab64890Smrg
4691ab64890Smrgextern	Bool	XkbBellEvent(
4701ab64890Smrg	Display *		/* dpy */,
4711ab64890Smrg	Window			/* win */,
4721ab64890Smrg	int			/* percent */,
4731ab64890Smrg	Atom			/* name */
4741ab64890Smrg);
4751ab64890Smrg
4761ab64890Smrgextern	Bool	XkbSelectEvents(
4771ab64890Smrg	Display *		/* dpy */,
4781ab64890Smrg	unsigned int		/* deviceID */,
4791ab64890Smrg	unsigned int 		/* affect */,
4801ab64890Smrg	unsigned int 		/* values */
4811ab64890Smrg);
4821ab64890Smrg
4831ab64890Smrgextern	Bool	XkbSelectEventDetails(
4841ab64890Smrg	Display *		/* dpy */,
4851ab64890Smrg	unsigned int 		/* deviceID */,
4861ab64890Smrg	unsigned int 		/* eventType */,
4871ab64890Smrg	unsigned long 		/* affect */,
4881ab64890Smrg	unsigned long 		/* details */
4891ab64890Smrg);
4901ab64890Smrg
4911ab64890Smrgextern	void	XkbNoteMapChanges(
4921ab64890Smrg    XkbMapChangesPtr		/* old */,
4931ab64890Smrg    XkbMapNotifyEvent	*	/* new */,
4941ab64890Smrg    unsigned int	 	/* wanted */
4951ab64890Smrg);
4961ab64890Smrg
4971ab64890Smrgextern	void	XkbNoteNameChanges(
4981ab64890Smrg    XkbNameChangesPtr		/* old */,
4991ab64890Smrg    XkbNamesNotifyEvent	*	/* new */,
5001ab64890Smrg    unsigned int	 	/* wanted */
5011ab64890Smrg);
5021ab64890Smrg
5031ab64890Smrgextern	Status	XkbGetIndicatorState(
5041ab64890Smrg	Display *		/* dpy */,
5051ab64890Smrg	unsigned int		/* deviceSpec */,
5061ab64890Smrg	unsigned int *		/* pStateRtrn */
5071ab64890Smrg);
5081ab64890Smrg
5091ab64890Smrgextern	Status	XkbGetDeviceIndicatorState(
5101ab64890Smrg	Display *		/* dpy */,
5111ab64890Smrg	unsigned int		/* deviceSpec */,
5121ab64890Smrg	unsigned int		/* ledClass */,
5131ab64890Smrg	unsigned int		/* ledID */,
5141ab64890Smrg	unsigned int *		/* pStateRtrn */
5151ab64890Smrg);
5161ab64890Smrg
5171ab64890Smrgextern	Status	 XkbGetIndicatorMap(
5181ab64890Smrg	Display *		/* dpy */,
5191ab64890Smrg	unsigned long		/* which */,
5201ab64890Smrg	XkbDescPtr		/* desc */
5211ab64890Smrg);
5221ab64890Smrg
5231ab64890Smrgextern	Bool	 XkbSetIndicatorMap(
5241ab64890Smrg	Display *		/* dpy */,
5251ab64890Smrg	unsigned long 		/* which */,
5261ab64890Smrg	XkbDescPtr		/* desc */
5271ab64890Smrg);
5281ab64890Smrg
5291ab64890Smrg#define	XkbNoteIndicatorMapChanges(o,n,w) \
5301ab64890Smrg				((o)->map_changes|=((n)->map_changes&(w)))
5311ab64890Smrg#define	XkbNoteIndicatorStateChanges(o,n,w)\
5321ab64890Smrg				((o)->state_changes|=((n)->state_changes&(w)))
5331ab64890Smrg#define	XkbGetIndicatorMapChanges(d,x,c) \
53461b2299dSmrg				(XkbGetIndicatorMap((d),(c)->map_changes,x))
5351ab64890Smrg#define	XkbChangeIndicatorMaps(d,x,c) \
5361ab64890Smrg				(XkbSetIndicatorMap((d),(c)->map_changes,x))
5371ab64890Smrg
5381ab64890Smrgextern	Bool	XkbGetNamedIndicator(
5391ab64890Smrg	Display *		/* dpy */,
5401ab64890Smrg	Atom			/* name */,
5411ab64890Smrg	int *			/* pNdxRtrn */,
5421ab64890Smrg	Bool *			/* pStateRtrn */,
5431ab64890Smrg	XkbIndicatorMapPtr	/* pMapRtrn */,
5441ab64890Smrg	Bool *			/* pRealRtrn */
5451ab64890Smrg);
5461ab64890Smrg
5471ab64890Smrgextern	Bool	XkbGetNamedDeviceIndicator(
5481ab64890Smrg	Display *		/* dpy */,
5491ab64890Smrg	unsigned int		/* deviceSpec */,
5501ab64890Smrg	unsigned int		/* ledClass */,
5511ab64890Smrg	unsigned int		/* ledID */,
5521ab64890Smrg	Atom			/* name */,
5531ab64890Smrg	int *			/* pNdxRtrn */,
5541ab64890Smrg	Bool *			/* pStateRtrn */,
5551ab64890Smrg	XkbIndicatorMapPtr	/* pMapRtrn */,
5561ab64890Smrg	Bool *			/* pRealRtrn */
5571ab64890Smrg);
5581ab64890Smrg
5591ab64890Smrgextern	Bool	XkbSetNamedIndicator(
5601ab64890Smrg	Display *		/* dpy */,
5611ab64890Smrg	Atom			/* name */,
5621ab64890Smrg	Bool			/* changeState */,
5631ab64890Smrg	Bool 			/* state */,
5641ab64890Smrg	Bool			/* createNewMap */,
5651ab64890Smrg	XkbIndicatorMapPtr	/* pMap */
5661ab64890Smrg);
5671ab64890Smrg
5681ab64890Smrgextern	Bool	XkbSetNamedDeviceIndicator(
5691ab64890Smrg	Display *		/* dpy */,
5701ab64890Smrg	unsigned int		/* deviceSpec */,
5711ab64890Smrg	unsigned int		/* ledClass */,
5721ab64890Smrg	unsigned int		/* ledID */,
5731ab64890Smrg	Atom			/* name */,
5741ab64890Smrg	Bool			/* changeState */,
5751ab64890Smrg	Bool 			/* state */,
5761ab64890Smrg	Bool			/* createNewMap */,
5771ab64890Smrg	XkbIndicatorMapPtr	/* pMap */
5781ab64890Smrg);
5791ab64890Smrg
5801ab64890Smrgextern	Bool	XkbLockModifiers(
5811ab64890Smrg	Display *		/* dpy */,
5821ab64890Smrg	unsigned int 		/* deviceSpec */,
5831ab64890Smrg	unsigned int 		/* affect */,
5841ab64890Smrg	unsigned int 		/* values */
5851ab64890Smrg);
5861ab64890Smrg
5871ab64890Smrgextern	Bool	XkbLatchModifiers(
5881ab64890Smrg	Display *		/* dpy */,
5891ab64890Smrg	unsigned int 		/* deviceSpec */,
5901ab64890Smrg	unsigned int 		/* affect */,
5911ab64890Smrg	unsigned int 		/* values */
5921ab64890Smrg);
5931ab64890Smrg
5941ab64890Smrgextern	Bool	XkbLockGroup(
5951ab64890Smrg	Display *		/* dpy */,
5961ab64890Smrg	unsigned int 		/* deviceSpec */,
5971ab64890Smrg	unsigned int 		/* group */
5981ab64890Smrg);
5991ab64890Smrg
6001ab64890Smrgextern	Bool	XkbLatchGroup(
6011ab64890Smrg	Display *		/* dpy */,
6021ab64890Smrg	unsigned int 		/* deviceSpec */,
6031ab64890Smrg	unsigned int 		/* group */
6041ab64890Smrg);
6051ab64890Smrg
6061ab64890Smrgextern	Bool	XkbSetServerInternalMods(
6071ab64890Smrg	Display *		/* dpy */,
6081ab64890Smrg	unsigned int 		/* deviceSpec */,
6091ab64890Smrg	unsigned int 		/* affectReal */,
6101ab64890Smrg	unsigned int 		/* realValues */,
6111ab64890Smrg	unsigned int		/* affectVirtual */,
6121ab64890Smrg	unsigned int		/* virtualValues */
6131ab64890Smrg);
6141ab64890Smrg
6151ab64890Smrgextern	Bool	XkbSetIgnoreLockMods(
6161ab64890Smrg	Display *		/* dpy */,
6171ab64890Smrg	unsigned int 		/* deviceSpec */,
6181ab64890Smrg	unsigned int 		/* affectReal */,
6191ab64890Smrg	unsigned int 		/* realValues */,
6201ab64890Smrg	unsigned int		/* affectVirtual */,
6211ab64890Smrg	unsigned int		/* virtualValues */
6221ab64890Smrg);
6231ab64890Smrg
6241ab64890Smrg
6251ab64890Smrgextern	Bool	XkbVirtualModsToReal(
6261ab64890Smrg	XkbDescPtr		/* xkb */,
6271ab64890Smrg	unsigned int		/* virtual_mask */,
6281ab64890Smrg	unsigned int *		/* mask_rtrn */
6291ab64890Smrg);
6301ab64890Smrg
6311ab64890Smrgextern	Bool	XkbComputeEffectiveMap(
6321ab64890Smrg	XkbDescPtr 		/* xkb */,
6331ab64890Smrg	XkbKeyTypePtr		/* type */,
6341ab64890Smrg	unsigned char *		/* map_rtrn */
6351ab64890Smrg);
6361ab64890Smrg
6371ab64890Smrgextern	Status XkbInitCanonicalKeyTypes(
6381ab64890Smrg    XkbDescPtr			/* xkb */,
6391ab64890Smrg    unsigned int		/* which */,
6401ab64890Smrg    int				/* keypadVMod */
6411ab64890Smrg);
6421ab64890Smrg
6431ab64890Smrgextern	XkbDescPtr XkbAllocKeyboard(
6441ab64890Smrg	void
6451ab64890Smrg);
6461ab64890Smrg
6471ab64890Smrgextern	void	XkbFreeKeyboard(
6481ab64890Smrg	XkbDescPtr		/* xkb */,
6491ab64890Smrg	unsigned int		/* which */,
6501ab64890Smrg	Bool			/* freeDesc */
6511ab64890Smrg);
6521ab64890Smrg
6531ab64890Smrgextern	Status XkbAllocClientMap(
6541ab64890Smrg	XkbDescPtr		/* xkb */,
6551ab64890Smrg	unsigned int		/* which */,
6561ab64890Smrg	unsigned int		/* nTypes */
6571ab64890Smrg);
6581ab64890Smrg
6591ab64890Smrgextern	Status XkbAllocServerMap(
6601ab64890Smrg	XkbDescPtr		/* xkb */,
6611ab64890Smrg	unsigned int		/* which */,
6621ab64890Smrg	unsigned int		/* nActions */
6631ab64890Smrg);
6641ab64890Smrg
6651ab64890Smrgextern	void	XkbFreeClientMap(
6661ab64890Smrg    XkbDescPtr			/* xkb */,
6671ab64890Smrg    unsigned int		/* what */,
6681ab64890Smrg    Bool			/* freeMap */
6691ab64890Smrg);
6701ab64890Smrg
6711ab64890Smrgextern	void	XkbFreeServerMap(
6721ab64890Smrg    XkbDescPtr			/* xkb */,
6731ab64890Smrg    unsigned int		/* what */,
6741ab64890Smrg    Bool			/* freeMap */
6751ab64890Smrg);
6761ab64890Smrg
6771ab64890Smrgextern	XkbKeyTypePtr	XkbAddKeyType(
6781ab64890Smrg    XkbDescPtr			/* xkb */,
6791ab64890Smrg    Atom			/* name */,
6801ab64890Smrg    int				/* map_count */,
6811ab64890Smrg    Bool			/* want_preserve */,
6821ab64890Smrg    int				/* num_lvls */
6831ab64890Smrg);
6841ab64890Smrg
6851ab64890Smrgextern	Status XkbAllocIndicatorMaps(
6861ab64890Smrg	XkbDescPtr		/* xkb */
6871ab64890Smrg);
6881ab64890Smrg
6891ab64890Smrgextern	void XkbFreeIndicatorMaps(
6901ab64890Smrg    XkbDescPtr			/* xkb */
6911ab64890Smrg);
6921ab64890Smrg
6931ab64890Smrgextern	XkbDescPtr XkbGetMap(
6941ab64890Smrg	Display *		/* dpy */,
6951ab64890Smrg	unsigned int 		/* which */,
6961ab64890Smrg	unsigned int 		/* deviceSpec */
6971ab64890Smrg);
6981ab64890Smrg
6991ab64890Smrgextern	Status	XkbGetUpdatedMap(
7001ab64890Smrg	Display *		/* dpy */,
7011ab64890Smrg	unsigned int 		/* which */,
7021ab64890Smrg	XkbDescPtr		/* desc */
7031ab64890Smrg);
7041ab64890Smrg
7051ab64890Smrgextern	Status	XkbGetMapChanges(
7061ab64890Smrg    Display *			/* dpy */,
7071ab64890Smrg    XkbDescPtr			/* xkb */,
7081ab64890Smrg    XkbMapChangesPtr		/* changes */
7091ab64890Smrg);
7101ab64890Smrg
7111ab64890Smrg
7121ab64890Smrgextern	Status	XkbRefreshKeyboardMapping(
7131ab64890Smrg    XkbMapNotifyEvent *		/* event */
7141ab64890Smrg);
7151ab64890Smrg
7161ab64890Smrgextern	Status	XkbGetKeyTypes(
7171ab64890Smrg    Display *			/* dpy */,
7181ab64890Smrg    unsigned int		/* first */,
7191ab64890Smrg    unsigned int 		/* num */,
7201ab64890Smrg    XkbDescPtr			/* xkb */
7211ab64890Smrg);
7221ab64890Smrg
7231ab64890Smrgextern	Status	XkbGetKeySyms(
7241ab64890Smrg    Display *			/* dpy */,
7251ab64890Smrg    unsigned int		/* first */,
7261ab64890Smrg    unsigned int		/* num */,
7271ab64890Smrg    XkbDescPtr			/* xkb */
7281ab64890Smrg);
7291ab64890Smrg
7301ab64890Smrgextern	Status	XkbGetKeyActions(
7311ab64890Smrg    Display *			/* dpy */,
7321ab64890Smrg    unsigned int 		/* first */,
7331ab64890Smrg    unsigned int 		/* num */,
7341ab64890Smrg    XkbDescPtr			/* xkb */
7351ab64890Smrg);
7361ab64890Smrg
7371ab64890Smrgextern	Status	XkbGetKeyBehaviors(
7381ab64890Smrg	Display *		/* dpy */,
7391ab64890Smrg	unsigned int 		/* firstKey */,
7401ab64890Smrg	unsigned int		/* nKeys */,
7411ab64890Smrg	XkbDescPtr		/* desc */
7421ab64890Smrg);
7431ab64890Smrg
7441ab64890Smrgextern	Status	XkbGetVirtualMods(
7451ab64890Smrg	Display *		/* dpy */,
7461ab64890Smrg	unsigned int 		/* which */,
7471ab64890Smrg	XkbDescPtr		/* desc */
7481ab64890Smrg);
7491ab64890Smrg
7501ab64890Smrgextern	Status	XkbGetKeyExplicitComponents(
7511ab64890Smrg	Display *		/* dpy */,
7521ab64890Smrg	unsigned int 		/* firstKey */,
7531ab64890Smrg	unsigned int		/* nKeys */,
7541ab64890Smrg	XkbDescPtr		/* desc */
7551ab64890Smrg);
7561ab64890Smrg
7571ab64890Smrgextern	Status	XkbGetKeyModifierMap(
7581ab64890Smrg	Display *		/* dpy */,
7591ab64890Smrg	unsigned int 		/* firstKey */,
7601ab64890Smrg	unsigned int		/* nKeys */,
7611ab64890Smrg	XkbDescPtr		/* desc */
7621ab64890Smrg);
7631ab64890Smrg
7641ab64890Smrgextern	Status	XkbGetKeyVirtualModMap(
7651ab64890Smrg	Display *		/* dpy */,
7661ab64890Smrg	unsigned int		/* first */,
7671ab64890Smrg	unsigned int		/* num */,
7681ab64890Smrg	XkbDescPtr		/* xkb */
7691ab64890Smrg);
7701ab64890Smrg
7711ab64890Smrgextern	Status	XkbAllocControls(
7721ab64890Smrg	XkbDescPtr		/* xkb */,
7731ab64890Smrg	unsigned int		/* which*/
7741ab64890Smrg);
7751ab64890Smrg
7761ab64890Smrgextern	void	XkbFreeControls(
7771ab64890Smrg	XkbDescPtr		/* xkb */,
7781ab64890Smrg	unsigned int		/* which */,
7791ab64890Smrg	Bool			/* freeMap */
7801ab64890Smrg);
7811ab64890Smrg
7821ab64890Smrgextern	Status	XkbGetControls(
7831ab64890Smrg	Display *		/* dpy */,
7841ab64890Smrg	unsigned long		/* which */,
7851ab64890Smrg	XkbDescPtr		/* desc */
7861ab64890Smrg);
7871ab64890Smrg
7881ab64890Smrgextern	Bool	XkbSetControls(
7891ab64890Smrg	Display *		/* dpy */,
7901ab64890Smrg	unsigned long		/* which */,
7911ab64890Smrg	XkbDescPtr		/* desc */
7921ab64890Smrg);
7931ab64890Smrg
7941ab64890Smrgextern	void	XkbNoteControlsChanges(
7951ab64890Smrg    XkbControlsChangesPtr	/* old */,
7961ab64890Smrg    XkbControlsNotifyEvent *	/* new */,
7971ab64890Smrg    unsigned int	 	/* wanted */
7981ab64890Smrg);
7991ab64890Smrg
8001ab64890Smrg#define	XkbGetControlsChanges(d,x,c)	XkbGetControls(d,(c)->changed_ctrls,x)
8011ab64890Smrg#define	XkbChangeControls(d,x,c)	XkbSetControls(d,(c)->changed_ctrls,x)
8021ab64890Smrg
8031ab64890Smrgextern	Status	XkbAllocCompatMap(
8041ab64890Smrg    XkbDescPtr			/* xkb */,
8051ab64890Smrg    unsigned int		/* which */,
8061ab64890Smrg    unsigned int		/* nInterpret */
8071ab64890Smrg);
8081ab64890Smrg
8091ab64890Smrgextern	void	XkbFreeCompatMap(
8101ab64890Smrg    XkbDescPtr			/* xkb */,
8111ab64890Smrg    unsigned int		/* which */,
8121ab64890Smrg    Bool			/* freeMap */
8131ab64890Smrg);
8141ab64890Smrg
8151ab64890Smrgextern Status XkbGetCompatMap(
8161ab64890Smrg	Display *		/* dpy */,
8171ab64890Smrg	unsigned int 		/* which */,
8181ab64890Smrg	XkbDescPtr 		/* xkb */
8191ab64890Smrg);
8201ab64890Smrg
8211ab64890Smrgextern Bool XkbSetCompatMap(
8221ab64890Smrg	Display *		/* dpy */,
8231ab64890Smrg	unsigned int 		/* which */,
8241ab64890Smrg	XkbDescPtr 		/* xkb */,
8251ab64890Smrg	Bool			/* updateActions */
8261ab64890Smrg);
8271ab64890Smrg
8281ab64890Smrgextern	XkbSymInterpretPtr XkbAddSymInterpret(
8291ab64890Smrg	XkbDescPtr		/* xkb */,
8301ab64890Smrg	XkbSymInterpretPtr	/* si */,
8311ab64890Smrg	Bool			/* updateMap */,
8321ab64890Smrg	XkbChangesPtr		/* changes */
8331ab64890Smrg);
8341ab64890Smrg
8351ab64890Smrgextern	Status XkbAllocNames(
8361ab64890Smrg	XkbDescPtr		/* xkb */,
8371ab64890Smrg	unsigned int		/* which */,
8381ab64890Smrg	int			/* nTotalRG */,
8391ab64890Smrg	int			/* nTotalAliases */
8401ab64890Smrg);
8411ab64890Smrg
8421ab64890Smrgextern	Status	XkbGetNames(
8431ab64890Smrg	Display *		/* dpy */,
8441ab64890Smrg	unsigned int		/* which */,
8451ab64890Smrg	XkbDescPtr		/* desc */
8461ab64890Smrg);
8471ab64890Smrg
8481ab64890Smrgextern	Bool	XkbSetNames(
8491ab64890Smrg	Display *		/* dpy */,
8501ab64890Smrg	unsigned int		/* which */,
8511ab64890Smrg	unsigned int		/* firstType */,
8521ab64890Smrg	unsigned int		/* nTypes */,
8531ab64890Smrg	XkbDescPtr		/* desc */
8541ab64890Smrg);
8551ab64890Smrg
8561ab64890Smrgextern	Bool	XkbChangeNames(
8571ab64890Smrg	Display *		/* dpy */,
8581ab64890Smrg	XkbDescPtr		/* xkb */,
8591ab64890Smrg	XkbNameChangesPtr	/* changes */
8601ab64890Smrg);
8611ab64890Smrg
8621ab64890Smrgextern	void XkbFreeNames(
8631ab64890Smrg	XkbDescPtr		/* xkb */,
8641ab64890Smrg	unsigned int		/* which */,
8651ab64890Smrg	Bool			/* freeMap */
8661ab64890Smrg);
8671ab64890Smrg
8681ab64890Smrg
8691ab64890Smrgextern	Status	XkbGetState(
8701ab64890Smrg	Display *		/* dpy */,
8711ab64890Smrg	unsigned int 		/* deviceSpec */,
8721ab64890Smrg	XkbStatePtr		/* rtrnState */
8731ab64890Smrg);
8741ab64890Smrg
8751ab64890Smrgextern	Bool	XkbSetMap(
8761ab64890Smrg	Display *		/* dpy */,
8771ab64890Smrg	unsigned int		/* which */,
8781ab64890Smrg	XkbDescPtr		/* desc */
8791ab64890Smrg);
8801ab64890Smrg
8811ab64890Smrgextern	Bool	XkbChangeMap(
8821ab64890Smrg	Display*		/* dpy */,
8831ab64890Smrg	XkbDescPtr		/* desc */,
8841ab64890Smrg	XkbMapChangesPtr	/* changes */
8851ab64890Smrg);
8861ab64890Smrg
8871ab64890Smrgextern	Bool	XkbSetDetectableAutoRepeat(
8881ab64890Smrg	Display *		/* dpy */,
8891ab64890Smrg	Bool			/* detectable */,
8901ab64890Smrg	Bool *			/* supported */
8911ab64890Smrg);
8921ab64890Smrg
8931ab64890Smrgextern	Bool	XkbGetDetectableAutoRepeat(
8941ab64890Smrg	Display *		/* dpy */,
8951ab64890Smrg	Bool *			/* supported */
8961ab64890Smrg);
8971ab64890Smrg
8981ab64890Smrgextern	Bool	XkbSetAutoResetControls(
8991ab64890Smrg    Display *			/* dpy */,
9001ab64890Smrg    unsigned int 		/* changes */,
9011ab64890Smrg    unsigned int *		/* auto_ctrls */,
9021ab64890Smrg    unsigned int *		/* auto_values */
9031ab64890Smrg);
9041ab64890Smrg
9051ab64890Smrgextern	Bool	XkbGetAutoResetControls(
9061ab64890Smrg    Display *			/* dpy */,
9071ab64890Smrg    unsigned int *		/* auto_ctrls */,
9081ab64890Smrg    unsigned int *		/* auto_ctrl_values */
9091ab64890Smrg);
9101ab64890Smrg
9111ab64890Smrgextern	Bool	XkbSetPerClientControls(
9121ab64890Smrg    Display *			/* dpy */,
9131ab64890Smrg    unsigned int		/* change */,
9141ab64890Smrg    unsigned int *		/* values */
9151ab64890Smrg);
9161ab64890Smrg
9171ab64890Smrgextern	Bool	XkbGetPerClientControls(
9181ab64890Smrg    Display *			/* dpy */,
9191ab64890Smrg    unsigned int *		/* ctrls */
9201ab64890Smrg);
9211ab64890Smrg
9221ab64890Smrgextern Status XkbCopyKeyType(
9231ab64890Smrg    XkbKeyTypePtr	/* from */,
9241ab64890Smrg    XkbKeyTypePtr	/* into */
9251ab64890Smrg);
9261ab64890Smrg
9271ab64890Smrgextern Status XkbCopyKeyTypes(
9281ab64890Smrg    XkbKeyTypePtr	/* from */,
9291ab64890Smrg    XkbKeyTypePtr	/* into */,
9301ab64890Smrg    int			/* num_types */
9311ab64890Smrg);
9321ab64890Smrg
9331ab64890Smrgextern	Status	XkbResizeKeyType(
9341ab64890Smrg    XkbDescPtr		/* xkb */,
9351ab64890Smrg    int			/* type_ndx */,
9361ab64890Smrg    int			/* map_count */,
9371ab64890Smrg    Bool		/* want_preserve */,
9381ab64890Smrg    int			/* new_num_lvls */
9391ab64890Smrg);
9401ab64890Smrg
9411ab64890Smrgextern	KeySym *XkbResizeKeySyms(
9421ab64890Smrg	XkbDescPtr		/* desc */,
9431ab64890Smrg	int 			/* forKey */,
9441ab64890Smrg	int 			/* symsNeeded */
9451ab64890Smrg);
9461ab64890Smrg
9471ab64890Smrgextern	XkbAction *XkbResizeKeyActions(
9481ab64890Smrg	XkbDescPtr		/* desc */,
9491ab64890Smrg	int 			/* forKey */,
9501ab64890Smrg	int 			/* actsNeeded */
9511ab64890Smrg);
9521ab64890Smrg
9531ab64890Smrgextern	Status XkbChangeTypesOfKey(
9541ab64890Smrg	XkbDescPtr		/* xkb */,
9551ab64890Smrg	int 			/* key */,
9561ab64890Smrg	int			/* num_groups */,
9571ab64890Smrg	unsigned int		/* groups */,
9581ab64890Smrg	int *			/* newTypes */,
9591ab64890Smrg	XkbMapChangesPtr	/* pChanges */
9601ab64890Smrg);
9611ab64890Smrg
9621ab64890Smrgextern  Status   XkbChangeKeycodeRange(
9631ab64890Smrg	XkbDescPtr		/* xkb */,
9641ab64890Smrg	int			/* minKC */,
9651ab64890Smrg	int			/* maxKC */,
9661ab64890Smrg	XkbChangesPtr		/* changes */
9671ab64890Smrg);
9681ab64890Smrg
9691ab64890Smrg/***====================================================================***/
9701ab64890Smrg
9711ab64890Smrgextern	XkbComponentListPtr	XkbListComponents(
9721ab64890Smrg	Display *		/* dpy */,
9731ab64890Smrg	unsigned int		/* deviceSpec */,
9741ab64890Smrg	XkbComponentNamesPtr	/* ptrns */,
9751ab64890Smrg	int *			/* max_inout */
9761ab64890Smrg);
9771ab64890Smrg
9781ab64890Smrgextern	void XkbFreeComponentList(
9791ab64890Smrg	XkbComponentListPtr	/* list */
9801ab64890Smrg);
9811ab64890Smrg
9821ab64890Smrgextern	XkbDescPtr XkbGetKeyboard(
9831ab64890Smrg	Display *		/* dpy */,
9841ab64890Smrg	unsigned int 		/* which */,
9851ab64890Smrg	unsigned int 		/* deviceSpec */
9861ab64890Smrg);
9871ab64890Smrg
9881ab64890Smrgextern XkbDescPtr XkbGetKeyboardByName(
9891ab64890Smrg    Display *			/* dpy */,
9901ab64890Smrg    unsigned int		/* deviceSpec */,
9911ab64890Smrg    XkbComponentNamesPtr	/* names */,
9921ab64890Smrg    unsigned int 		/* want */,
9931ab64890Smrg    unsigned int 		/* need */,
9941ab64890Smrg    Bool			/* load */
9951ab64890Smrg);
9961ab64890Smrg
9971ab64890Smrg/***====================================================================***/
9981ab64890Smrg
9991ab64890Smrgextern	int	XkbKeyTypesForCoreSymbols(	/* returns # of groups */
10001ab64890Smrg    XkbDescPtr	/* xkb */,			/* keyboard device */
10011ab64890Smrg    int		/* map_width */,		/* width of core KeySym array */
10021ab64890Smrg    KeySym *	/* core_syms */,		/* always mapWidth symbols */
10031ab64890Smrg    unsigned int	/* protected */,	/* explicit key types */
10041ab64890Smrg    int *	/* types_inout */,		/* always four type indices */
10051ab64890Smrg    KeySym * 	/* xkb_syms_rtrn */		/* must have enough space */
10061ab64890Smrg);
10071ab64890Smrg
10081ab64890Smrgextern	Bool	XkbApplyCompatMapToKey(	/* False only on error */
10091ab64890Smrg    XkbDescPtr		/* xkb */,		/* keymap to be edited */
10101ab64890Smrg    KeyCode		/* key */,		/* key to be updated */
10111ab64890Smrg    XkbChangesPtr	/* changes */		/* resulting changes to map */
10121ab64890Smrg);
10131ab64890Smrg
10141ab64890Smrgextern	Bool	XkbUpdateMapFromCore( /* False only on error */
10151ab64890Smrg    XkbDescPtr		/* xkb */,		/* XKB keyboard to be edited */
10161ab64890Smrg    KeyCode		/* first_key */,	/* first changed key */
10171ab64890Smrg    int			/* num_keys */, 	/* number of changed keys */
10181ab64890Smrg    int			/* map_width */,	/* width of core keymap */
10191ab64890Smrg    KeySym *		/* core_keysyms */,	/* symbols from core keymap */
10201ab64890Smrg    XkbChangesPtr	/* changes */		/* resulting changes */
10211ab64890Smrg);
10221ab64890Smrg
10231ab64890Smrg/***====================================================================***/
10241ab64890Smrg
10251ab64890Smrgextern	XkbDeviceLedInfoPtr	XkbAddDeviceLedInfo(
10261ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
10271ab64890Smrg	unsigned int		/* ledClass */,
10281ab64890Smrg	unsigned int		/* ledId */
10291ab64890Smrg);
10301ab64890Smrg
10311ab64890Smrgextern	Status			XkbResizeDeviceButtonActions(
10321ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
10331ab64890Smrg	unsigned int		/* newTotal */
10341ab64890Smrg);
10351ab64890Smrg
10361ab64890Smrgextern	XkbDeviceInfoPtr	XkbAllocDeviceInfo(
10371ab64890Smrg	unsigned int		/* deviceSpec */,
10381ab64890Smrg	unsigned int		/* nButtons */,
10391ab64890Smrg	unsigned int		/* szLeds */
10401ab64890Smrg);
10411ab64890Smrg
10421ab64890Smrgextern	void XkbFreeDeviceInfo(
10431ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
10441ab64890Smrg	unsigned int		/* which */,
10451ab64890Smrg	Bool			/* freeDevI */
10461ab64890Smrg);
10471ab64890Smrg
10481ab64890Smrgextern	void	XkbNoteDeviceChanges(
10491ab64890Smrg    XkbDeviceChangesPtr			/* old */,
10501ab64890Smrg    XkbExtensionDeviceNotifyEvent *	/* new */,
10511ab64890Smrg    unsigned int	 		/* wanted */
10521ab64890Smrg);
10531ab64890Smrg
10541ab64890Smrgextern	XkbDeviceInfoPtr XkbGetDeviceInfo(
10551ab64890Smrg	Display *		/* dpy */,
10561ab64890Smrg	unsigned int 		/* which */,
10571ab64890Smrg	unsigned int		/* deviceSpec */,
10581ab64890Smrg	unsigned int		/* ledClass */,
10591ab64890Smrg	unsigned int		/* ledID */
10601ab64890Smrg);
10611ab64890Smrg
10621ab64890Smrgextern	Status	XkbGetDeviceInfoChanges(
10631ab64890Smrg	Display *		/* dpy */,
10641ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
10651ab64890Smrg	XkbDeviceChangesPtr 	/* changes */
10661ab64890Smrg);
10671ab64890Smrg
10681ab64890Smrgextern	Status	XkbGetDeviceButtonActions(
10691ab64890Smrg	Display *		/* dpy */,
10701ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
10711ab64890Smrg	Bool			/* all */,
10721ab64890Smrg	unsigned int		/* first */,
10731ab64890Smrg	unsigned int		/* nBtns */
10741ab64890Smrg);
10751ab64890Smrg
10761ab64890Smrgextern	Status	XkbGetDeviceLedInfo(
10771ab64890Smrg	Display *		/* dpy */,
10781ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
10791ab64890Smrg	unsigned int		/* ledClass (class, XIDflt, XIAll) */,
10801ab64890Smrg	unsigned int		/* ledId (id, XIDflt, XIAll) */,
10811ab64890Smrg	unsigned int		/* which (XkbXI_Indicator{Names,Map}Mask */
10821ab64890Smrg);
10831ab64890Smrg
10841ab64890Smrgextern	Bool	XkbSetDeviceInfo(
10851ab64890Smrg	Display *		/* dpy */,
10861ab64890Smrg	unsigned int		/* which */,
10871ab64890Smrg	XkbDeviceInfoPtr	/* devi */
10881ab64890Smrg);
10891ab64890Smrg
10901ab64890Smrgextern	Bool	XkbChangeDeviceInfo(
10911ab64890Smrg	Display*		/* dpy */,
10921ab64890Smrg	XkbDeviceInfoPtr	/* desc */,
10931ab64890Smrg	XkbDeviceChangesPtr	/* changes */
10941ab64890Smrg);
10951ab64890Smrg
10961ab64890Smrgextern  Bool XkbSetDeviceLedInfo(
10971ab64890Smrg	Display *		/* dpy */,
10981ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
10991ab64890Smrg	unsigned int 		/* ledClass */,
11001ab64890Smrg	unsigned int		/* ledID */,
11011ab64890Smrg	unsigned int		/* which */
11021ab64890Smrg);
11031ab64890Smrg
11041ab64890Smrgextern	Bool XkbSetDeviceButtonActions(
11051ab64890Smrg	Display *		/* dpy */,
11061ab64890Smrg	XkbDeviceInfoPtr	/* devi */,
11071ab64890Smrg	unsigned int		/* first */,
11081ab64890Smrg	unsigned int		/* nBtns */
11091ab64890Smrg);
11101ab64890Smrg
11111ab64890Smrg/***====================================================================***/
11121ab64890Smrg
11131ab64890Smrgextern	char	XkbToControl(
11141ab64890Smrg	char		/* c */
11151ab64890Smrg);
11161ab64890Smrg
11171ab64890Smrg/***====================================================================***/
11181ab64890Smrg
11191ab64890Smrgextern	Bool XkbSetDebuggingFlags(
11201ab64890Smrg    Display *		/* dpy */,
11211ab64890Smrg    unsigned int	/* mask */,
11221ab64890Smrg    unsigned int	/* flags */,
11231ab64890Smrg    char *		/* msg */,
11241ab64890Smrg    unsigned int	/* ctrls_mask */,
11251ab64890Smrg    unsigned int	/* ctrls */,
11261ab64890Smrg    unsigned int *	/* rtrn_flags */,
11271ab64890Smrg    unsigned int *	/* rtrn_ctrls */
11281ab64890Smrg);
11291ab64890Smrg
11301ab64890Smrgextern	Bool XkbApplyVirtualModChanges(
11311ab64890Smrg   XkbDescPtr		/* xkb */,
11321ab64890Smrg   unsigned int		/* changed */,
11331ab64890Smrg   XkbChangesPtr	/* changes */
11341ab64890Smrg);
11351ab64890Smrg
11361ab64890Smrgextern Bool XkbUpdateActionVirtualMods(
11371ab64890Smrg	XkbDescPtr		/* xkb */,
11381ab64890Smrg	XkbAction *		/* act */,
11391ab64890Smrg	unsigned int		/* changed */
11401ab64890Smrg);
11411ab64890Smrg
11421ab64890Smrgextern void XkbUpdateKeyTypeVirtualMods(
11431ab64890Smrg	XkbDescPtr		/* xkb */,
11441ab64890Smrg	XkbKeyTypePtr		/* type */,
11451ab64890Smrg	unsigned int		/* changed */,
11461ab64890Smrg	XkbChangesPtr		/* changes */
11471ab64890Smrg);
11481ab64890Smrg
11491ab64890Smrg_XFUNCPROTOEND
11501ab64890Smrg
11511ab64890Smrg#endif /* _XKBLIB_H_ */
1152