1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync/************************************************************
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncPermission to use, copy, modify, and distribute this
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncsoftware and its documentation for any purpose and without
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncfee is hereby granted, provided that the above copyright
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncnotice appear in all copies and that both that copyright
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncnotice and this permission notice appear in supporting
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncdocumentation, and that the name of Silicon Graphics not be
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncused in advertising or publicity pertaining to distribution
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncof the software without specific prior written permission.
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncSilicon Graphics makes no representation about the suitability
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncof this software for any purpose. It is provided "as is"
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncwithout any express or implied warranty.
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsyncTHE USE OR PERFORMANCE OF THIS SOFTWARE.
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync********************************************************/
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#ifndef _XKBSTR_H_
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define _XKBSTR_H_
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#include <X11/extensions/XKB.h>
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbIntTo2Chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#if defined(WORD64) && defined(UNSIGNEDBITFIELDS)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define Xkb2CharsToInt(h,l) ((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)):\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (int)(((h)<<8)|(l)&0x7fff))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#else
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define Xkb2CharsToInt(h,l) ((short)(((h)<<8)|(l)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#endif
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * Common data structures and access macros
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbStateRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char group;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char locked_group;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short base_group;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short latched_group;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char base_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char latched_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char locked_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char compat_state;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char grab_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char compat_grab_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char lookup_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char compat_lookup_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short ptr_buttons;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbStateRec,*XkbStatePtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbModLocks(s) ((s)->locked_mods)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbStateMods(s) ((s)->base_mods|(s)->latched_mods|XkbModLocks(s))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbGroupLock(s) ((s)->locked_group)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbMods {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mask; /* effective mods */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char real_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short vmods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbModsRec,*XkbModsPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbKTMapEntry {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Bool active;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char level;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModsRec mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbKTMapEntryRec,*XkbKTMapEntryPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbKeyType {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModsRec mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_levels;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char map_count;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbKTMapEntryPtr map;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModsPtr preserve;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom name;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom * level_names;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbKeyTypeRec, *XkbKeyTypePtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbNumGroups(g) ((g)&0x0f)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbOutOfRangeGroupInfo(g) ((g)&0xf0)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbOutOfRangeGroupAction(g) ((g)&0xc0)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbOutOfRangeGroupNumber(g) (((g)&0x30)>>4)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * Structures and access macros used primarily by the server
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbBehavior {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char data;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbBehavior;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbAnyActionDataSize 7
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbAnyAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char data[XkbAnyActionDataSize];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbAnyAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbModAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mask;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char real_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods1;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods2;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbModAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbModActionVMods(a) \
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((short)(((a)->vmods1<<8)|((a)->vmods2)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSetModActionVMods(a,v) \
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbGroupAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char group_XXX;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbGroupAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSAGroup(a) (XkbCharToInt((a)->group_XXX))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSASetGroup(a,g) ((a)->group_XXX=(g))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbISOAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mask;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char real_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char group_XXX;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char affect;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods1;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods2;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbISOAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbPtrAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char high_XXX;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char low_XXX;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char high_YYY;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char low_YYY;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbPtrAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbPtrActionX(a) (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbPtrActionY(a) (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbPtrBtnAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char count;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char button;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbPtrBtnAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbPtrDfltAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char affect;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char valueXXX;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbPtrDfltAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSAPtrDfltValue(a) (XkbCharToInt((a)->valueXXX))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSASetPtrDfltValue(a,c) ((a)->valueXXX= ((c)&0xff))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbSwitchScreenAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char screenXXX;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbSwitchScreenAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSAScreen(a) (XkbCharToInt((a)->screenXXX))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSASetScreen(a,s) ((a)->screenXXX= ((s)&0xff))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbCtrlsAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char ctrls3;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char ctrls2;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char ctrls1;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char ctrls0;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbCtrlsAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbActionSetCtrls(a,c) (((a)->ctrls3=(((c)>>24)&0xff)),\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((a)->ctrls2=(((c)>>16)&0xff)),\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((a)->ctrls1=(((c)>>8)&0xff)),\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((a)->ctrls0=((c)&0xff)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (((unsigned int)(a)->ctrls2)<<16)|\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (((unsigned int)(a)->ctrls1)<<8)|\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((unsigned int)((a)->ctrls0)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbMessageAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char message[6];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbMessageAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbRedirectKeyAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char new_key;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mods_mask;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods_mask0;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods_mask1;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods0;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods1;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbRedirectKeyAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((unsigned int)(a)->vmods0))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((a)->vmods_mask0=((m)&0xff)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((unsigned int)(a)->vmods_mask0))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((a)->vmods_mask0=((m)&0xff)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbDeviceBtnAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char count;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char button;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char device;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbDeviceBtnAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbDeviceValuatorAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char device;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char v1_what;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char v1_ndx;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char v1_value;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char v2_what;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char v2_ndx;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char v2_value;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbDeviceValuatorAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef union _XkbAction {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbAnyAction any;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModAction mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbGroupAction group;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbISOAction iso;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbPtrAction ptr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbPtrBtnAction btn;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbPtrDfltAction dflt;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbSwitchScreenAction screen;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbCtrlsAction ctrls;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbMessageAction msg;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbRedirectKeyAction redirect;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbDeviceBtnAction devbtn;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbDeviceValuatorAction devval;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbAction;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbControls {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mk_dflt_btn;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_groups;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char groups_wrap;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModsRec internal;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModsRec ignore_lock;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int enabled_ctrls;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short repeat_delay;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short repeat_interval;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short slow_keys_delay;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short debounce_delay;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short mk_delay;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short mk_interval;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short mk_time_to_max;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short mk_max_speed;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync short mk_curve;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short ax_options;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short ax_timeout;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short axt_opts_mask;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short axt_opts_values;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int axt_ctrls_mask;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int axt_ctrls_values;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char per_key_repeat[XkbPerKeyBitArraySize];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbControlsRec, *XkbControlsPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbAX_AnyFeedback(c) ((c)->enabled_ctrls&XkbAccessXFeedbackMask)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbAX_NeedOption(c,w) ((c)->ax_options&(w))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbAX_NeedFeedback(c,w) (XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbServerMapRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_acts;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short size_acts;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbAction *acts;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbBehavior *behaviors;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short *key_acts;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#if defined(__cplusplus) || defined(c_plusplus)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /* explicit is a C++ reserved word */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char *c_explicit;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#else
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char *explicit;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#endif
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char vmods[XkbNumVirtualMods];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short *vmodmap;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbServerMapRec, *XkbServerMapPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]])
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * Structures and access macros used primarily by clients
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbSymMapRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char kt_index[XkbNumKbdGroups];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char group_info;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char width;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short offset;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbSymMapRec, *XkbSymMapPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbClientMapRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char size_types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbKeyTypePtr types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short size_syms;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_syms;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeySym *syms;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbSymMapPtr key_sym_map;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char *modmap;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbClientMapRec, *XkbClientMapPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeyGroupInfo(m,k) ((m)->key_sym_map[k].group_info)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeyNumGroups(m,k) (XkbNumGroups((m)->key_sym_map[k].group_info))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3])
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeyType(m,k,g) (&(m)->types[XkbCMKeyTypeIndex(m,k,g)])
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeySymsOffset(m,k) ((m)->key_sym_map[k].offset)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbCMKeySymsPtr(m,k) (&(m)->syms[XkbCMKeySymsOffset(m,k)])
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * Compatibility structures and access macros
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbSymInterpretRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeySym sym;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char match;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char virtual_mod;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbAnyAction act;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbSymInterpretRec,*XkbSymInterpretPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbCompatMapRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbSymInterpretPtr sym_interpret;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModsRec groups[XkbNumKbdGroups];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_si;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short size_si;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbCompatMapRec, *XkbCompatMapPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbIndicatorMapRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char which_groups;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char groups;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char which_mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbModsRec mods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int ctrls;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbIndicatorMapRec, *XkbIndicatorMapPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (((i)->which_groups&&(i)->groups)||\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((i)->which_mods&&(i)->mods.mask)||\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((i)->ctrls)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((i)->which_mods)||((i)->ctrls))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbIndicatorRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned long phys_indicators;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbIndicatorMapRec maps[XkbNumIndicators];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbIndicatorRec,*XkbIndicatorPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbKeyNameRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char name[XkbKeyNameLength];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbKeyNameRec,*XkbKeyNamePtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbKeyAliasRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char real[XkbKeyNameLength];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char alias[XkbKeyNameLength];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbKeyAliasRec,*XkbKeyAliasPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * Names for everything
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbNamesRec {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom keycodes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom geometry;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom symbols;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom compat;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom vmods[XkbNumVirtualMods];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom indicators[XkbNumIndicators];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom groups[XkbNumKbdGroups];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbKeyNamePtr keys;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbKeyAliasPtr key_aliases;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom *radio_groups;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom phys_symbols;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_keys;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_key_aliases;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_rg;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbNamesRec,*XkbNamesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbGeometry *XkbGeometryPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * Tie it all together into one big keyboard description
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbDesc {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync struct _XDisplay * dpy;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short device_spec;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode min_key_code;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode max_key_code;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbControlsPtr ctrls;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbServerMapPtr server;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbClientMapPtr map;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbIndicatorPtr indicators;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbNamesPtr names;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbCompatMapPtr compat;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbGeometryPtr geom;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbDescRec, *XkbDescPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyKeyTypeIndex(d,k,g) (XkbCMKeyTypeIndex((d)->map,k,g))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyKeyType(d,k,g) (XkbCMKeyType((d)->map,k,g))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyGroupWidth(d,k,g) (XkbCMKeyGroupWidth((d)->map,k,g))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyGroupsWidth(d,k) (XkbCMKeyGroupsWidth((d)->map,k))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyGroupInfo(d,k) (XkbCMKeyGroupInfo((d)->map,(k)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyNumGroups(d,k) (XkbCMKeyNumGroups((d)->map,(k)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyNumSyms(d,k) (XkbCMKeyNumSyms((d)->map,(k)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeySymsPtr(d,k) (XkbCMKeySymsPtr((d)->map,(k)))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n])
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeySymEntry(d,k,sl,g) \
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyAction(d,k,n) \
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyActionEntry(d,k,sl,g) \
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync (XkbKeyHasActions(d,k)?\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbKeyAction(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))):NULL)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyHasActions(d,k) ((d)->server->key_acts[k]!=0)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbKeycodeInRange(d,k) (((k)>=(d)->min_key_code)&&\
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync ((k)<=(d)->max_key_code))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbNumKeys(d) ((d)->max_key_code-(d)->min_key_code+1)
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * The following structures can be used to track changes
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * to a keyboard device
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbMapChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short changed;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode min_key_code;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode max_key_code;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char first_type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode first_key_sym;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_key_syms;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode first_key_act;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_key_acts;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode first_key_behavior;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_key_behaviors;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode first_key_explicit;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_key_explicit;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode first_modmap_key;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_modmap_keys;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync KeyCode first_vmodmap_key;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_vmodmap_keys;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char pad;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short vmods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbMapChangesRec,*XkbMapChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbControlsChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int changed_ctrls;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int enabled_ctrls_changes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Bool num_groups_changed;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbControlsChangesRec,*XkbControlsChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbIndicatorChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int state_changes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int map_changes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbIndicatorChangesRec,*XkbIndicatorChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbNameChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int changed;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char first_type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char first_lvl;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_lvls;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_aliases;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_rg;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char first_key;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char num_keys;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short changed_vmods;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned long changed_indicators;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char changed_groups;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbNameChangesRec,*XkbNameChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbCompatChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned char changed_groups;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short first_si;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_si;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbCompatChangesRec,*XkbCompatChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short device_spec;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short state_changes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbMapChangesRec map;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbControlsChangesRec ctrls;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbIndicatorChangesRec indicators;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbNameChangesRec names;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbCompatChangesRec compat;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbChangesRec, *XkbChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * These data structures are used to construct a keymap from
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * a set of components or to list components in the server
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * database.
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbComponentNames {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * keymap;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * keycodes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * compat;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * symbols;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * geometry;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbComponentNamesRec, *XkbComponentNamesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbComponentName {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short flags;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * name;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbComponentNameRec,*XkbComponentNamePtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbComponentList {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync int num_keymaps;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync int num_keycodes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync int num_types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync int num_compat;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync int num_symbols;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync int num_geometry;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbComponentNamePtr keymaps;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbComponentNamePtr keycodes;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbComponentNamePtr types;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbComponentNamePtr compat;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbComponentNamePtr symbols;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbComponentNamePtr geometry;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbComponentListRec, *XkbComponentListPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync /*
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * The following data structures describe and track changes to a
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync * non-keyboard extension device
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbDeviceLedInfo {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short led_class;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short led_id;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int phys_indicators;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int maps_present;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int names_present;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int state;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom names[XkbNumIndicators];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbIndicatorMapRec maps[XkbNumIndicators];
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbDeviceLedInfoRec,*XkbDeviceLedInfoPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbDeviceInfo {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync char * name;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Atom type;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short device_spec;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync Bool has_own_state;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short supported;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short unsupported;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_btns;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbAction * btn_acts;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short sz_leds;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_leds;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short dflt_kbd_fb;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short dflt_led_fb;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbDeviceLedInfoPtr leds;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbDeviceInfoRec,*XkbDeviceInfoPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbXI_DevHasBtnActs(d) (((d)->num_btns>0)&&((d)->btn_acts!=NULL))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbXI_LegalDevBtn(d,b) (XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#define XkbXI_DevHasLeds(d) (((d)->num_leds>0)&&((d)->leds!=NULL))
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbDeviceLedChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short led_class;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short led_id;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int defined; /* names or maps changed */
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync struct _XkbDeviceLedChanges *next;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbDeviceLedChangesRec,*XkbDeviceLedChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsynctypedef struct _XkbDeviceChanges {
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned int changed;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short first_btn;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync unsigned short num_btns;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync XkbDeviceLedChangesRec leds;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync
1131579cf38ac46158dd0da1cfac260914b1ed0dvboxsync#endif /* _XKBSTR_H_ */