61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef _XKBRULES_H_
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _XKBRULES_H_ 1
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/************************************************************
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Permission to use, copy, modify, and distribute this
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync software and its documentation for any purpose and without
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync fee is hereby granted, provided that the above copyright
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync notice appear in all copies and that both that copyright
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync notice and this permission notice appear in supporting
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync documentation, and that the name of Silicon Graphics not be
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync used in advertising or publicity pertaining to distribution
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync of the software without specific prior written permission.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Silicon Graphics makes no representation about the suitability
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync of this software for any purpose. It is provided "as is"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync without any express or implied warranty.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync THE USE OR PERFORMANCE OF THIS SOFTWARE.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ********************************************************/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/***====================================================================***/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _XkbRMLVOSet {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *rules;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *model;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *layout;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *variant;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *options;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XkbRMLVOSet;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _XkbRF_VarDefs {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *model;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *layout;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *variant;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *options;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XkbRF_VarDefsRec, *XkbRF_VarDefsPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _XkbRF_Rule {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int number;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int layout_num;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int variant_num;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *model;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *layout;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *variant;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *option;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /* yields */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *keycodes;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *symbols;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *types;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *compat;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *geometry;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned flags;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XkbRF_RuleRec, *XkbRF_RulePtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _XkbRF_Group {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int number;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *name;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *words;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XkbRF_GroupRec, *XkbRF_GroupPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define XkbRF_PendingMatch (1L<<1)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define XkbRF_Option (1L<<2)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define XkbRF_Append (1L<<3)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define XkbRF_Normal (1L<<4)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define XkbRF_Invalid (1L<<5)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _XkbRF_Rules {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short sz_rules;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short num_rules;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XkbRF_RulePtr rules;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short sz_groups;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short num_groups;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XkbRF_GroupPtr groups;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XkbRF_RulesRec, *XkbRF_RulesPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/***====================================================================***/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync_XFUNCPROTOBEGIN
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* Seems preferable to dragging xkbstr.h in. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync struct _XkbComponentNames;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT Bool XkbRF_GetComponents(XkbRF_RulesPtr /* rules */ ,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XkbRF_VarDefsPtr /* var_defs */ ,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync struct _XkbComponentNames * /* names */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT Bool XkbRF_LoadRules(FILE * /* file */ ,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XkbRF_RulesPtr /* rules */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT Bool XkbRF_LoadRulesByName(char * /* base */ ,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char * /* locale */ ,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XkbRF_RulesPtr /* rules */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/***====================================================================***/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT XkbRF_RulesPtr XkbRF_Create(void);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool /* freeRules */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/***====================================================================***/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _XKB_RF_NAMES_PROP_ATOM "_XKB_RULES_NAMES"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _XKB_RF_NAMES_PROP_MAXLEN 1024
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync_XFUNCPROTOEND
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif /* _XKBRULES_H_ */