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