162 lines
5.0 KiB
C
162 lines
5.0 KiB
C
/*
|
|
Copyright 2009 Dan Nicholson
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
copy of this software and associated documentation files (the "Software"),
|
|
to deal in the Software without restriction, including without limitation
|
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
and/or sell copies of the Software, and to permit persons to whom the
|
|
Software is furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
Except as contained in this notice, the names of the authors or their
|
|
institutions shall not be used in advertising or otherwise to promote the
|
|
sale, use or other dealings in this Software without prior written
|
|
authorization from the authors.
|
|
*/
|
|
|
|
#ifndef _XKBRULES_H_
|
|
#define _XKBRULES_H_
|
|
|
|
#include <stdio.h>
|
|
#include <X11/X.h>
|
|
#include <X11/Xdefs.h>
|
|
#include "X11/extensions/XKBcommon.h"
|
|
|
|
|
|
/* From filecommon */
|
|
|
|
#define XkbXKMFile 0
|
|
#define XkbCFile 1
|
|
#define XkbXKBFile 2
|
|
#define XkbMessage 3
|
|
|
|
#define XkbMapDefined (1 << 0)
|
|
#define XkbStateDefined (1 << 1)
|
|
|
|
/***====================================================================***/
|
|
|
|
#define _XkbSuccess 0
|
|
#define _XkbErrMissingNames 1
|
|
#define _XkbErrMissingTypes 2
|
|
#define _XkbErrMissingReqTypes 3
|
|
#define _XkbErrMissingSymbols 4
|
|
#define _XkbErrMissingVMods 5
|
|
#define _XkbErrMissingIndicators 6
|
|
#define _XkbErrMissingCompatMap 7
|
|
#define _XkbErrMissingSymInterps 8
|
|
#define _XkbErrMissingGeometry 9
|
|
#define _XkbErrIllegalDoodad 10
|
|
#define _XkbErrIllegalTOCType 11
|
|
#define _XkbErrIllegalContents 12
|
|
#define _XkbErrEmptyFile 13
|
|
#define _XkbErrFileNotFound 14
|
|
#define _XkbErrFileCannotOpen 15
|
|
#define _XkbErrBadValue 16
|
|
#define _XkbErrBadMatch 17
|
|
#define _XkbErrBadTypeName 18
|
|
#define _XkbErrBadTypeWidth 19
|
|
#define _XkbErrBadFileType 20
|
|
#define _XkbErrBadFileVersion 21
|
|
#define _XkbErrBadFileFormat 22
|
|
#define _XkbErrBadAlloc 23
|
|
#define _XkbErrBadLength 24
|
|
#define _XkbErrXReqFailure 25
|
|
#define _XkbErrBadImplementation 26
|
|
|
|
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;
|
|
|
|
#define _XKB_RF_NAMES_PROP_ATOM "_XKB_RULES_NAMES"
|
|
#define _XKB_RF_NAMES_PROP_MAXLEN 1024
|
|
|
|
/* Action structures used in the server */
|
|
|
|
extern Bool
|
|
XkbcRF_GetComponents(XkbRF_RulesPtr rules, XkbRF_VarDefsPtr defs,
|
|
struct xkb_component_names * names);
|
|
|
|
extern Bool
|
|
XkbcRF_LoadRules(FILE *file, XkbRF_RulesPtr rules);
|
|
|
|
extern void
|
|
XkbcRF_Free(XkbRF_RulesPtr rules, Bool freeRules);
|
|
|
|
#endif /* _XKBRULES_H_ */
|