// typedef struct _XkbRF_VarDefs {
// 	char *			model;
// 	char *			layout;
// 	char *			variant;
// 	char *			options;
// 	unsigned short		sz_extra;
// 	unsigned short		num_extra;
// 	char *			extra_names;
// 	char **			extra_values;
// } XkbRF_VarDefsRec,*XkbRF_VarDefsPtr;
// typedef struct _XkbRF_VarDesc {
// 	char *			name;
// 	char *			desc;
// } XkbRF_VarDescRec, *XkbRF_VarDescPtr;
// typedef struct _XkbRF_DescribeVars {
// 	int			sz_desc;
// 	int			num_desc;
// 	XkbRF_VarDescPtr	desc;
// } XkbRF_DescribeVarsRec,*XkbRF_DescribeVarsPtr;
// typedef struct _XkbRF_Rule {
// 	int			number;
//         int			layout_num;
//         int			variant_num;
// 	char *			model;
// 	char *			layout;
// 	char *			variant;
// 	char *			option;
// 	/* yields */
// 	char *			keycodes;
// 	char *			symbols;
// 	char *			types;
// 	char *			compat;
// 	char *			geometry;
// 	char *			keymap;
// 	unsigned		flags;
// } XkbRF_RuleRec,*XkbRF_RulePtr;
// typedef struct _XkbRF_Group {
// 	int			number;
// 	char *			name;
// 	char *			words;
// } XkbRF_GroupRec, *XkbRF_GroupPtr;
// #define	XkbRF_PendingMatch	(1L<<1)
// #define	XkbRF_Option		(1L<<2)
// #define	XkbRF_Append		(1L<<3)
// #define	XkbRF_Normal		(1L<<4)
// #define	XkbRF_Invalid		(1L<<5)
// typedef struct _XkbRF_Rules {
// 	XkbRF_DescribeVarsRec	models;
// 	XkbRF_DescribeVarsRec	layouts;
// 	XkbRF_DescribeVarsRec	variants;
// 	XkbRF_DescribeVarsRec	options;
// 	unsigned short		sz_extra;
// 	unsigned short		num_extra;
// 	char **			extra_names;
// 	XkbRF_DescribeVarsPtr	extra;
// 	unsigned short		sz_rules;
// 	unsigned short		num_rules;
// 	XkbRF_RulePtr		rules;
// 	unsigned short		sz_groups;
// 	unsigned short		num_groups;
//         XkbRF_GroupPtr		groups;
// } XkbRF_RulesRec, *XkbRF_RulesPtr;
// /***====================================================================***/
// _XFUNCPROTOBEGIN
// extern Bool	XkbRF_GetComponents(
//     XkbRF_RulesPtr		/* rules */,
//     XkbRF_VarDefsPtr		/* var_defs */,
//     XkbComponentNamesPtr	/* names */
// );
// extern XkbRF_RulePtr	XkbRF_AddRule(
//     XkbRF_RulesPtr	/* rules */
// );
// extern XkbRF_GroupPtr XkbRF_AddGroup(XkbRF_RulesPtr  rules);
// extern Bool	XkbRF_LoadRules(
//     FILE *		/* file */,
//     XkbRF_RulesPtr	/* rules */
// );
// extern Bool XkbRF_LoadRulesByName(
//     char *		/* base */,
//     char *		/* locale */,
//     XkbRF_RulesPtr	/* rules */
// );
// /***====================================================================***/
// extern XkbRF_VarDescPtr	XkbRF_AddVarDesc(
//     XkbRF_DescribeVarsPtr	/* vars */
// );
// extern XkbRF_VarDescPtr	XkbRF_AddVarDescCopy(
//     XkbRF_DescribeVarsPtr	/* vars */,
//     XkbRF_VarDescPtr		/* copy_from */
// );
// extern XkbRF_DescribeVarsPtr XkbRF_AddVarToDescribe(
//     XkbRF_RulesPtr		/* rules */,
//     char *			/* name */
// );
// extern Bool	XkbRF_LoadDescriptions(
//     FILE *		/* file */,
//     XkbRF_RulesPtr	/* rules */
// );
// extern Bool XkbRF_LoadDescriptionsByName(
//     char *		/* base */,
//     char *		/* locale */,
//     XkbRF_RulesPtr	/* rules */
// );
// extern XkbRF_RulesPtr XkbRF_Load(
//     char *		/* base */,
//     char *		/* locale */,
//     Bool		/* wantDesc */,
//     Bool		/* wantRules */
// );
// extern XkbRF_RulesPtr XkbRF_Create(
//     int			/* sz_rules */,
//     int			/* sz_extra */
// );
// /***====================================================================***/
// extern void XkbRF_Free(
//     XkbRF_RulesPtr	/* rules */,
//     Bool		/* freeRules */
// );
// /***====================================================================***/
// #define	_XKB_RF_NAMES_PROP_ATOM		"_XKB_RULES_NAMES"
// #define	_XKB_RF_NAMES_PROP_MAXLEN	1024
// #ifndef XKB_IN_SERVER
// extern Bool XkbRF_GetNamesProp(
//    Display *		/* dpy */,
//    char **		/* rules_file_rtrn */,
//    XkbRF_VarDefsPtr	/* var_defs_rtrn */
// );
// extern Bool XkbRF_SetNamesProp(
//    Display *		/* dpy */,
//    char *		/* rules_file */,
//    XkbRF_VarDefsPtr	/* var_defs */
// );
// #endif
// _XFUNCPROTOEND
// #endif /* _XKBRULES_H_ */