38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/************************************************************
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncPermission to use, copy, modify, and distribute this
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncsoftware and its documentation for any purpose and without
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncfee is hereby granted, provided that the above copyright
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncnotice appear in all copies and that both that copyright
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncnotice and this permission notice appear in supporting
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdocumentation, and that the name of Silicon Graphics not be
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncused in advertising or publicity pertaining to distribution
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncof the software without specific prior written permission.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncSilicon Graphics makes no representation about the suitability
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncof this software for any purpose. It is provided "as is"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncwithout any express or implied warranty.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncTHE USE OR PERFORMANCE OF THIS SOFTWARE.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync********************************************************/
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define XkbCharToInt(v) ((int) ((v) & 0x80 ? ((v) | (~0xff)) : ((v) & 0x7f)))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define XkbIntTo2Chars(i, h, l) ((h) = (i >> 8) & 0xff, (l) = (i) & 0xff)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Common data structures and access macros
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* FIXME: Why are base + latched short and not char?? */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned short base_group; /* physically ... down? */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned char compat_state; /* mods + group for core state */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* grab mods = all depressed and latched mods, _not_ locked mods */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned char grab_mods; /* grab mods minus internal mods */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned char compat_grab_mods; /* grab mods + group for core state,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync but not locked groups if
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync IgnoreGroupLocks set */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* effective mods = all mods (depressed, latched, locked) */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned char lookup_mods; /* effective mods minus internal mods */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned char compat_lookup_mods; /* effective mods + group */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned short ptr_buttons; /* core pointer buttons */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group)
((unsigned int) (a)->ctrls0))
((unsigned int)(a)->vmods0))
((unsigned int)(a)->vmods_mask0))
XkbAX_NeedOption((c), (w)))
unsigned char *explicit;
XkbCMKeyNumGroups((m), (k)))
(i)->ctrls))
(i)->ctrls)
(XkbKeyHasActions((d), (k)) ? \
NULL)
(k) <= (d)->max_key_code)