diff options
Diffstat (limited to 'X11/TranslateI.h')
-rw-r--r-- | X11/TranslateI.h | 1215 |
1 files changed, 606 insertions, 609 deletions
diff --git a/X11/TranslateI.h b/X11/TranslateI.h index 6cc3099cf..9894c3dd4 100644 --- a/X11/TranslateI.h +++ b/X11/TranslateI.h @@ -1,609 +1,606 @@ -/* $Xorg: TranslateI.h,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */ - -/*********************************************************** - -Copyright 1987, 1988, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -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 -OPEN GROUP 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 name of The Open Group 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 Open Group. - - -Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* $XFree86: xc/lib/Xt/TranslateI.h,v 1.3 2001/12/14 19:56:32 dawes Exp $ */ - -/* - * TranslateI.h - Header file private to translation management - * - * Author: Gabe Beged-Dov, HP - * - * Former Author: Charles Haynes - * Digital Equipment Corporation - * Western Research Laboratory - * Date: Sat Aug 29 1987 - */ - -/*#define REFCNT_TRANSLATIONS*/ -#define CACHE_TRANSLATIONS - -#define TM_NO_MATCH (-2) - -#define _XtRStateTablePair "_XtStateTablePair" - -typedef unsigned char TMByteCard; -typedef unsigned short TMShortCard; -typedef unsigned long TMLongCard; -typedef short TMShortInt; - -typedef struct _TMTypeMatchRec *TMTypeMatch; -typedef struct _TMModifierMatchRec *TMModifierMatch; -typedef struct _TMEventRec *TMEventPtr; - -typedef Boolean (*MatchProc)(TMTypeMatch typeMatch, - TMModifierMatch modMatch, - TMEventPtr eventSeq); - -typedef struct _ModToKeysymTable { - Modifiers mask; - int count; - int idx; -} ModToKeysymTable; - -typedef struct _LateBindings { - unsigned int knot:1; - unsigned int pair:1; - unsigned short ref_count; /* garbage collection */ - KeySym keysym; -} LateBindings, *LateBindingsPtr; - -typedef short ModifierMask; - -typedef struct _ActionsRec *ActionPtr; -typedef struct _ActionsRec { - int idx; /* index into quarkTable to find proc */ - String *params; /* pointer to array of params */ - Cardinal num_params; /* number of params */ - ActionPtr next; /* next action to perform */ -} ActionRec; - -typedef struct _XtStateRec *StatePtr; -typedef struct _XtStateRec { - unsigned int isCycleStart:1; - unsigned int isCycleEnd:1; - TMShortCard typeIndex; - TMShortCard modIndex; - ActionPtr actions; /* rhs list of actions to perform */ - StatePtr nextLevel; -}StateRec; - - -#define XtTableReplace 0 -#define XtTableAugment 1 -#define XtTableOverride 2 -#define XtTableUnmerge 3 - -typedef unsigned int _XtTranslateOp; - -/* - * New Definitions - */ -typedef struct _TMModifierMatchRec{ - TMLongCard modifiers; - TMLongCard modifierMask; - LateBindingsPtr lateModifiers; - Boolean standard; -}TMModifierMatchRec; - -typedef struct _TMTypeMatchRec{ - TMLongCard eventType; - TMLongCard eventCode; - TMLongCard eventCodeMask; - MatchProc matchEvent; -}TMTypeMatchRec; - -typedef struct _TMBranchHeadRec { - unsigned int isSimple:1; - unsigned int hasActions:1; - unsigned int hasCycles:1; - unsigned int more:13; - TMShortCard typeIndex; - TMShortCard modIndex; -}TMBranchHeadRec, *TMBranchHead; - -/* NOTE: elements of this structure must match those of - * TMComplexStateTreeRec and TMParseStateTreeRec. - */ -typedef struct _TMSimpleStateTreeRec{ - unsigned int isSimple:1; - unsigned int isAccelerator:1; - unsigned int mappingNotifyInterest:1; - unsigned int refCount:13; - TMShortCard numBranchHeads; - TMShortCard numQuarks; /* # of entries in quarkTbl */ - TMShortCard unused; /* to ensure same alignment */ - TMBranchHeadRec *branchHeadTbl; - XrmQuark *quarkTbl; /* table of quarkified rhs*/ -}TMSimpleStateTreeRec, *TMSimpleStateTree; - -/* NOTE: elements of this structure must match those of - * TMSimpleStateTreeRec and TMParseStateTreeRec. - */ -typedef struct _TMComplexStateTreeRec{ - unsigned int isSimple:1; - unsigned int isAccelerator:1; - unsigned int mappingNotifyInterest:1; - unsigned int refCount:13; - TMShortCard numBranchHeads; - TMShortCard numQuarks; /* # of entries in quarkTbl */ - TMShortCard numComplexBranchHeads; - TMBranchHeadRec *branchHeadTbl; - XrmQuark *quarkTbl; /* table of quarkified rhs*/ - StatePtr *complexBranchHeadTbl; -}TMComplexStateTreeRec, *TMComplexStateTree; - -/* NOTE: elements of this structure must match those of - * TMSimpleStateTreeRec and TMComplexStateTreeRec. - */ -typedef struct _TMParseStateTreeRec{ - unsigned int isSimple:1; - unsigned int isAccelerator:1; - unsigned int mappingNotifyInterest:1; - unsigned int isStackQuarks:1; - unsigned int isStackBranchHeads:1; - unsigned int isStackComplexBranchHeads:1; - unsigned int unused:10; /* to ensure correct alignment */ - TMShortCard numBranchHeads; - TMShortCard numQuarks; /* # of entries in quarkTbl */ - TMShortCard numComplexBranchHeads; - TMBranchHeadRec *branchHeadTbl; - XrmQuark *quarkTbl; /* table of quarkified rhs*/ - StatePtr *complexBranchHeadTbl; - TMShortCard branchHeadTblSize; - TMShortCard quarkTblSize; /*total size of quarkTbl */ - TMShortCard complexBranchHeadTblSize; - StatePtr head; -}TMParseStateTreeRec, *TMParseStateTree; - -typedef union _TMStateTreeRec{ - TMSimpleStateTreeRec simple; - TMParseStateTreeRec parse; - TMComplexStateTreeRec complex; -}*TMStateTree, **TMStateTreePtr, **TMStateTreeList; - -typedef struct _TMSimpleBindProcsRec { - XtActionProc *procs; -}TMSimpleBindProcsRec, *TMSimpleBindProcs; - -typedef struct _TMComplexBindProcsRec { - Widget widget; /*widgetID to pass to action Proc*/ - XtTranslations aXlations; - XtActionProc *procs; -}TMComplexBindProcsRec, *TMComplexBindProcs; - -typedef struct _TMSimpleBindDataRec { - unsigned int isComplex:1; /* must be first */ - TMSimpleBindProcsRec bindTbl[1]; /* variable length */ -}TMSimpleBindDataRec, *TMSimpleBindData; - -typedef struct _TMComplexBindDataRec { - unsigned int isComplex:1; /* must be first */ - struct _ATranslationData *accel_context; /* for GetValues */ - TMComplexBindProcsRec bindTbl[1]; /* variable length */ -}TMComplexBindDataRec, *TMComplexBindData; - -typedef union _TMBindDataRec{ - TMSimpleBindDataRec simple; - TMComplexBindDataRec complex; -}*TMBindData; - -typedef struct _TranslationData{ - unsigned char hasBindings; /* must be first */ - unsigned char operation; /*replace,augment,override*/ - TMShortCard numStateTrees; - struct _TranslationData *composers[2]; - EventMask eventMask; - TMStateTree stateTreeTbl[1]; /* variable length */ -}TranslationData; - -/* - * ATranslations is returned by GetValues for translations that contain - * accelerators. The TM can differentiate between this and TranslationData - * (that don't have a bindTbl) by looking at the first field (hasBindings) - * of either structure. All ATranslationData structures associated with a - * widget are chained off the BindData record of the widget. - */ -typedef struct _ATranslationData{ - unsigned char hasBindings; /* must be first */ - unsigned char operation; - struct _TranslationData *xlations; /* actual translations */ - struct _ATranslationData *next; /* chain the contexts together */ - TMComplexBindProcsRec bindTbl[1]; /* accelerator bindings */ -}ATranslationData, *ATranslations; - -typedef struct _TMConvertRec { - XtTranslations old; /* table to merge into */ - XtTranslations new; /* table to merge from */ -} TMConvertRec; - -#define _XtEventTimerEventType ((TMLongCard)~0L) -#define KeysymModMask (1L<<27) /* private to TM */ -#define AnyButtonMask (1L<<28) /* private to TM */ - -typedef struct _EventRec { - TMLongCard modifiers; - TMLongCard modifierMask; - LateBindingsPtr lateModifiers; - TMLongCard eventType; - TMLongCard eventCode; - TMLongCard eventCodeMask; - MatchProc matchEvent; - Boolean standard; -} Event; - -typedef struct _EventSeqRec *EventSeqPtr; -typedef struct _EventSeqRec { - Event event; /* X event description */ - StatePtr state; /* private to state table builder */ - EventSeqPtr next; /* next event on line */ - ActionPtr actions; /* r.h.s. list of actions to perform */ -} EventSeqRec; - -typedef EventSeqRec EventRec; -typedef EventSeqPtr EventPtr; - -typedef struct _TMEventRec { - XEvent *xev; - Event event; -}TMEventRec; - -typedef struct _ActionHookRec { - struct _ActionHookRec* next; /* must remain first */ - XtAppContext app; - XtActionHookProc proc; - XtPointer closure; -} ActionHookRec, *ActionHook; - -/* choose a number between 2 and 8 */ -#define TMKEYCACHELOG2 6 -#define TMKEYCACHESIZE (1<<TMKEYCACHELOG2) - -typedef struct _KeyCacheRec { - unsigned char modifiers_return[256]; /* constant per KeyCode, key proc */ - KeyCode keycode[TMKEYCACHESIZE]; - unsigned char modifiers[TMKEYCACHESIZE]; - KeySym keysym[TMKEYCACHESIZE]; -} TMKeyCache; - -typedef struct _TMKeyContextRec { - XEvent *event; - unsigned long serial; - KeySym keysym; - Modifiers modifiers; - TMKeyCache keycache; /* keep this last, to keep offsets to others small */ -} TMKeyContextRec, *TMKeyContext; - -typedef struct _TMGlobalRec{ - TMTypeMatchRec **typeMatchSegmentTbl; - TMShortCard numTypeMatches; - TMShortCard numTypeMatchSegments; - TMShortCard typeMatchSegmentTblSize; - TMModifierMatchRec **modMatchSegmentTbl; - TMShortCard numModMatches; - TMShortCard numModMatchSegments; - TMShortCard modMatchSegmentTblSize; - Boolean newMatchSemantics; -#ifdef TRACE_TM - XtTranslations *tmTbl; - TMShortCard numTms; - TMShortCard tmTblSize; - struct _TMBindCacheRec **bindCacheTbl; - TMShortCard numBindCache; - TMShortCard bindCacheTblSize; - TMShortCard numLateBindings; - TMShortCard numBranchHeads; - TMShortCard numComplexStates; - TMShortCard numComplexActions; -#endif /* TRACE_TM */ -}TMGlobalRec; - -_XFUNCPROTOBEGIN - -extern TMGlobalRec _XtGlobalTM; - -#define TM_MOD_SEGMENT_SIZE 16 -#define TM_TYPE_SEGMENT_SIZE 16 - -#define TMGetTypeMatch(idx) \ - ((TMTypeMatch) \ - &((_XtGlobalTM.typeMatchSegmentTbl[((idx) >> 4)])[(idx) & 15])) -#define TMGetModifierMatch(idx) \ - ((TMModifierMatch) \ - &((_XtGlobalTM.modMatchSegmentTbl[(idx) >> 4])[(idx) & 15])) - -/* Useful Access Macros */ -#define TMNewMatchSemantics() (_XtGlobalTM.newMatchSemantics) -#define TMBranchMore(branch) (branch->more) -#define TMComplexBranchHead(tree, br) \ - (((TMComplexStateTree)tree)->complexBranchHeadTbl[TMBranchMore(br)]) - -#define TMGetComplexBindEntry(bindData, idx) \ - ((TMComplexBindProcs)&(((TMComplexBindData)bindData)->bindTbl[idx])) - -#define TMGetSimpleBindEntry(bindData, idx) \ - ((TMSimpleBindProcs)&(((TMSimpleBindData)bindData)->bindTbl[idx])) - - -#define _InitializeKeysymTables(dpy, pd) \ - if (pd->keysyms == NULL) \ - _XtBuildKeysymTables(dpy, pd) - -/* - * Internal Functions - */ - -extern void _XtPopup( - Widget /* widget */, - XtGrabKind /* grab_kind */, - _XtBoolean /* spring_loaded */ -); - -extern String _XtPrintXlations( - Widget /* w */, - XtTranslations /* xlations */, - Widget /* accelWidget */, - _XtBoolean /* includeRHS */ -); - -extern void _XtRegisterGrabs( - Widget /* widget */ -); - -extern XtPointer _XtInitializeActionData( - struct _XtActionsRec * /* actions */, - Cardinal /* count */, - _XtBoolean /* inPlace */ -); - -extern void _XtAddEventSeqToStateTree( - EventSeqPtr /* eventSeq */, - TMParseStateTree /* stateTree */ -); - -extern Boolean _XtMatchUsingStandardMods( - TMTypeMatch /* typeMatch */, - TMModifierMatch /* modMatch */, - TMEventPtr /* eventSeq */ -); - -extern Boolean _XtMatchUsingDontCareMods( - TMTypeMatch /* typeMatch */, - TMModifierMatch /* modMatch */, - TMEventPtr /* eventSeq */ -); - -extern Boolean _XtRegularMatch( - TMTypeMatch /* typeMatch */, - TMModifierMatch /* modMatch */, - TMEventPtr /* eventSeq */ -); - -extern Boolean _XtMatchAtom( - TMTypeMatch /* typeMatch */, - TMModifierMatch /* modMatch */, - TMEventPtr /* eventSeq */ -); - -extern void _XtTranslateEvent( - Widget /* widget */, - XEvent* /* event */ -); - -#include "CallbackI.h" -#include "EventI.h" -#include "HookObjI.h" -#include "PassivGraI.h" -#include "ThreadsI.h" -#include "InitialI.h" -#include "ResourceI.h" -#include "StringDefs.h" - -extern void _XtBuildKeysymTables(Display *dpy, XtPerDisplay pd); - -#ifndef NO_MIT_HACKS -extern void _XtDisplayTranslations( - Widget /* widget */, - XEvent* /* event */, - String* /* params */, - Cardinal* /* num_params */ -); - -extern void _XtDisplayAccelerators( - Widget /* widget */, - XEvent* /* event */, - String* /* params */, - Cardinal* /* num_params */ -); - -extern void _XtDisplayInstalledAccelerators( - Widget /* widget */, - XEvent* /* event */, - String* /* params */, - Cardinal* /* num_params */ -); -#endif /* ifndef NO_MIT_HACKS */ - -extern void _XtPopupInitialize( - XtAppContext /* app_context */ -); - -extern void _XtBindActions( - Widget /* widget */, - XtTM /* tm_rec */ -); - -extern Boolean _XtComputeLateBindings( - Display* /* dpy */, - LateBindingsPtr /* lateModifiers */, - Modifiers* /* computed */, - Modifiers* /* computedMask */ -); - -extern XtTranslations _XtCreateXlations( - TMStateTree * /* stateTrees */, - TMShortCard /* numStateTrees */, - XtTranslations /* first */, - XtTranslations /* second */ -); - -extern Boolean _XtCvtMergeTranslations( - Display* /* dpy */, - XrmValuePtr /* args */, - Cardinal* /* num_args */, - XrmValuePtr /* from */, - XrmValuePtr /* to */, - XtPointer* /* closure_ret */ -); - -void _XtRemoveStateTreeByIndex( - XtTranslations /* xlations */, - TMShortCard /* i */); - -void _XtFreeTranslations( - XtAppContext /* app */, - XrmValuePtr /* toVal */, - XtPointer /* closure */, - XrmValuePtr /* args */, - Cardinal* /* num_args */ -); - -extern TMShortCard _XtGetModifierIndex( - Event* /* event */ -); - -extern TMShortCard _XtGetQuarkIndex( - TMParseStateTree /* stateTreePtr */, - XrmQuark /* quark */ -); - -extern XtTranslations _XtGetTranslationValue( - Widget /* widget */ -); - -extern TMShortCard _XtGetTypeIndex( - Event* /* event */ -); - -extern void _XtGrabInitialize( - XtAppContext /* app */ -); - -extern void _XtInstallTranslations( - Widget /* widget */ -); - -extern void _XtRemoveTranslations( - Widget /* widget */ -); - -extern void _XtDestroyTMData( - Widget /* widget */ -); - -extern void _XtMergeTranslations( - Widget /* widget */, - XtTranslations /* newXlations */, - _XtTranslateOp /* operation */ -); - -extern void _XtActionInitialize( - XtAppContext /* app */ -); - -extern TMStateTree _XtParseTreeToStateTree( - TMParseStateTree /* parseTree */ -); - -extern String _XtPrintActions( - ActionRec* /* actions */, - XrmQuark* /* quarkTbl */ -); - -extern String _XtPrintState( - TMStateTree /* stateTree */, - TMBranchHead /* branchHead */); - -extern String _XtPrintEventSeq( - EventSeqPtr /* eventSeq */, - Display* /* dpy */ -); - -typedef Boolean (*_XtTraversalProc)( - StatePtr /* state */, - XtPointer /* data */ -); - -extern void _XtTraverseStateTree( - TMStateTree /* tree */, - _XtTraversalProc /* func */, - XtPointer /* data */ -); - -extern void _XtTranslateInitialize( - void -); - -extern void _XtAddTMConverters( - ConverterTable /* table */ -); - -extern void _XtUnbindActions( - Widget /* widget */, - XtTranslations /* xlations */, - TMBindData /* bindData */ -); - -extern void _XtUnmergeTranslations( - Widget /* widget */, - XtTranslations /* xlations */ -); - -/* TMKey.c */ -extern void _XtAllocTMContext(XtPerDisplay pd); - -_XFUNCPROTOEND +/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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
+OPEN GROUP 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 name of The Open Group 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 Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/*
+ * TranslateI.h - Header file private to translation management
+ *
+ * Author: Gabe Beged-Dov, HP
+ *
+ * Former Author: Charles Haynes
+ * Digital Equipment Corporation
+ * Western Research Laboratory
+ * Date: Sat Aug 29 1987
+ */
+
+/*#define REFCNT_TRANSLATIONS*/
+#define CACHE_TRANSLATIONS
+
+#define TM_NO_MATCH (-2)
+
+#define _XtRStateTablePair "_XtStateTablePair"
+
+typedef unsigned char TMByteCard;
+typedef unsigned short TMShortCard;
+typedef unsigned long TMLongCard;
+typedef short TMShortInt;
+
+typedef struct _TMTypeMatchRec *TMTypeMatch;
+typedef struct _TMModifierMatchRec *TMModifierMatch;
+typedef struct _TMEventRec *TMEventPtr;
+
+typedef Boolean (*MatchProc)(TMTypeMatch typeMatch,
+ TMModifierMatch modMatch,
+ TMEventPtr eventSeq);
+
+typedef struct _ModToKeysymTable {
+ Modifiers mask;
+ int count;
+ int idx;
+} ModToKeysymTable;
+
+typedef struct _LateBindings {
+ unsigned int knot:1;
+ unsigned int pair:1;
+ unsigned short ref_count; /* garbage collection */
+ KeySym keysym;
+} LateBindings, *LateBindingsPtr;
+
+typedef short ModifierMask;
+
+typedef struct _ActionsRec *ActionPtr;
+typedef struct _ActionsRec {
+ int idx; /* index into quarkTable to find proc */
+ String *params; /* pointer to array of params */
+ Cardinal num_params; /* number of params */
+ ActionPtr next; /* next action to perform */
+} ActionRec;
+
+typedef struct _XtStateRec *StatePtr;
+typedef struct _XtStateRec {
+ unsigned int isCycleStart:1;
+ unsigned int isCycleEnd:1;
+ TMShortCard typeIndex;
+ TMShortCard modIndex;
+ ActionPtr actions; /* rhs list of actions to perform */
+ StatePtr nextLevel;
+}StateRec;
+
+
+#define XtTableReplace 0
+#define XtTableAugment 1
+#define XtTableOverride 2
+#define XtTableUnmerge 3
+
+typedef unsigned int _XtTranslateOp;
+
+/*
+ * New Definitions
+ */
+typedef struct _TMModifierMatchRec{
+ TMLongCard modifiers;
+ TMLongCard modifierMask;
+ LateBindingsPtr lateModifiers;
+ Boolean standard;
+}TMModifierMatchRec;
+
+typedef struct _TMTypeMatchRec{
+ TMLongCard eventType;
+ TMLongCard eventCode;
+ TMLongCard eventCodeMask;
+ MatchProc matchEvent;
+}TMTypeMatchRec;
+
+typedef struct _TMBranchHeadRec {
+ unsigned int isSimple:1;
+ unsigned int hasActions:1;
+ unsigned int hasCycles:1;
+ unsigned int more:13;
+ TMShortCard typeIndex;
+ TMShortCard modIndex;
+}TMBranchHeadRec, *TMBranchHead;
+
+/* NOTE: elements of this structure must match those of
+ * TMComplexStateTreeRec and TMParseStateTreeRec.
+ */
+typedef struct _TMSimpleStateTreeRec{
+ unsigned int isSimple:1;
+ unsigned int isAccelerator:1;
+ unsigned int mappingNotifyInterest:1;
+ unsigned int refCount:13;
+ TMShortCard numBranchHeads;
+ TMShortCard numQuarks; /* # of entries in quarkTbl */
+ TMShortCard unused; /* to ensure same alignment */
+ TMBranchHeadRec *branchHeadTbl;
+ XrmQuark *quarkTbl; /* table of quarkified rhs*/
+}TMSimpleStateTreeRec, *TMSimpleStateTree;
+
+/* NOTE: elements of this structure must match those of
+ * TMSimpleStateTreeRec and TMParseStateTreeRec.
+ */
+typedef struct _TMComplexStateTreeRec{
+ unsigned int isSimple:1;
+ unsigned int isAccelerator:1;
+ unsigned int mappingNotifyInterest:1;
+ unsigned int refCount:13;
+ TMShortCard numBranchHeads;
+ TMShortCard numQuarks; /* # of entries in quarkTbl */
+ TMShortCard numComplexBranchHeads;
+ TMBranchHeadRec *branchHeadTbl;
+ XrmQuark *quarkTbl; /* table of quarkified rhs*/
+ StatePtr *complexBranchHeadTbl;
+}TMComplexStateTreeRec, *TMComplexStateTree;
+
+/* NOTE: elements of this structure must match those of
+ * TMSimpleStateTreeRec and TMComplexStateTreeRec.
+ */
+typedef struct _TMParseStateTreeRec{
+ unsigned int isSimple:1;
+ unsigned int isAccelerator:1;
+ unsigned int mappingNotifyInterest:1;
+ unsigned int isStackQuarks:1;
+ unsigned int isStackBranchHeads:1;
+ unsigned int isStackComplexBranchHeads:1;
+ unsigned int unused:10; /* to ensure correct alignment */
+ TMShortCard numBranchHeads;
+ TMShortCard numQuarks; /* # of entries in quarkTbl */
+ TMShortCard numComplexBranchHeads;
+ TMBranchHeadRec *branchHeadTbl;
+ XrmQuark *quarkTbl; /* table of quarkified rhs*/
+ StatePtr *complexBranchHeadTbl;
+ TMShortCard branchHeadTblSize;
+ TMShortCard quarkTblSize; /*total size of quarkTbl */
+ TMShortCard complexBranchHeadTblSize;
+ StatePtr head;
+}TMParseStateTreeRec, *TMParseStateTree;
+
+typedef union _TMStateTreeRec{
+ TMSimpleStateTreeRec simple;
+ TMParseStateTreeRec parse;
+ TMComplexStateTreeRec complex;
+}*TMStateTree, **TMStateTreePtr, **TMStateTreeList;
+
+typedef struct _TMSimpleBindProcsRec {
+ XtActionProc *procs;
+}TMSimpleBindProcsRec, *TMSimpleBindProcs;
+
+typedef struct _TMComplexBindProcsRec {
+ Widget widget; /*widgetID to pass to action Proc*/
+ XtTranslations aXlations;
+ XtActionProc *procs;
+}TMComplexBindProcsRec, *TMComplexBindProcs;
+
+typedef struct _TMSimpleBindDataRec {
+ unsigned int isComplex:1; /* must be first */
+ TMSimpleBindProcsRec bindTbl[1]; /* variable length */
+}TMSimpleBindDataRec, *TMSimpleBindData;
+
+typedef struct _TMComplexBindDataRec {
+ unsigned int isComplex:1; /* must be first */
+ struct _ATranslationData *accel_context; /* for GetValues */
+ TMComplexBindProcsRec bindTbl[1]; /* variable length */
+}TMComplexBindDataRec, *TMComplexBindData;
+
+typedef union _TMBindDataRec{
+ TMSimpleBindDataRec simple;
+ TMComplexBindDataRec complex;
+}*TMBindData;
+
+typedef struct _TranslationData{
+ unsigned char hasBindings; /* must be first */
+ unsigned char operation; /*replace,augment,override*/
+ TMShortCard numStateTrees;
+ struct _TranslationData *composers[2];
+ EventMask eventMask;
+ TMStateTree stateTreeTbl[1]; /* variable length */
+}TranslationData;
+
+/*
+ * ATranslations is returned by GetValues for translations that contain
+ * accelerators. The TM can differentiate between this and TranslationData
+ * (that don't have a bindTbl) by looking at the first field (hasBindings)
+ * of either structure. All ATranslationData structures associated with a
+ * widget are chained off the BindData record of the widget.
+ */
+typedef struct _ATranslationData{
+ unsigned char hasBindings; /* must be first */
+ unsigned char operation;
+ struct _TranslationData *xlations; /* actual translations */
+ struct _ATranslationData *next; /* chain the contexts together */
+ TMComplexBindProcsRec bindTbl[1]; /* accelerator bindings */
+}ATranslationData, *ATranslations;
+
+typedef struct _TMConvertRec {
+ XtTranslations old; /* table to merge into */
+ XtTranslations new; /* table to merge from */
+} TMConvertRec;
+
+#define _XtEventTimerEventType ((TMLongCard)~0L)
+#define KeysymModMask (1L<<27) /* private to TM */
+#define AnyButtonMask (1L<<28) /* private to TM */
+
+typedef struct _EventRec {
+ TMLongCard modifiers;
+ TMLongCard modifierMask;
+ LateBindingsPtr lateModifiers;
+ TMLongCard eventType;
+ TMLongCard eventCode;
+ TMLongCard eventCodeMask;
+ MatchProc matchEvent;
+ Boolean standard;
+} Event;
+
+typedef struct _EventSeqRec *EventSeqPtr;
+typedef struct _EventSeqRec {
+ Event event; /* X event description */
+ StatePtr state; /* private to state table builder */
+ EventSeqPtr next; /* next event on line */
+ ActionPtr actions; /* r.h.s. list of actions to perform */
+} EventSeqRec;
+
+typedef EventSeqRec EventRec;
+typedef EventSeqPtr EventPtr;
+
+typedef struct _TMEventRec {
+ XEvent *xev;
+ Event event;
+}TMEventRec;
+
+typedef struct _ActionHookRec {
+ struct _ActionHookRec* next; /* must remain first */
+ XtAppContext app;
+ XtActionHookProc proc;
+ XtPointer closure;
+} ActionHookRec, *ActionHook;
+
+/* choose a number between 2 and 8 */
+#define TMKEYCACHELOG2 6
+#define TMKEYCACHESIZE (1<<TMKEYCACHELOG2)
+
+typedef struct _KeyCacheRec {
+ unsigned char modifiers_return[256]; /* constant per KeyCode, key proc */
+ KeyCode keycode[TMKEYCACHESIZE];
+ unsigned char modifiers[TMKEYCACHESIZE];
+ KeySym keysym[TMKEYCACHESIZE];
+} TMKeyCache;
+
+typedef struct _TMKeyContextRec {
+ XEvent *event;
+ unsigned long serial;
+ KeySym keysym;
+ Modifiers modifiers;
+ TMKeyCache keycache; /* keep this last, to keep offsets to others small */
+} TMKeyContextRec, *TMKeyContext;
+
+typedef struct _TMGlobalRec{
+ TMTypeMatchRec **typeMatchSegmentTbl;
+ TMShortCard numTypeMatches;
+ TMShortCard numTypeMatchSegments;
+ TMShortCard typeMatchSegmentTblSize;
+ TMModifierMatchRec **modMatchSegmentTbl;
+ TMShortCard numModMatches;
+ TMShortCard numModMatchSegments;
+ TMShortCard modMatchSegmentTblSize;
+ Boolean newMatchSemantics;
+#ifdef TRACE_TM
+ XtTranslations *tmTbl;
+ TMShortCard numTms;
+ TMShortCard tmTblSize;
+ struct _TMBindCacheRec **bindCacheTbl;
+ TMShortCard numBindCache;
+ TMShortCard bindCacheTblSize;
+ TMShortCard numLateBindings;
+ TMShortCard numBranchHeads;
+ TMShortCard numComplexStates;
+ TMShortCard numComplexActions;
+#endif /* TRACE_TM */
+}TMGlobalRec;
+
+_XFUNCPROTOBEGIN
+
+extern TMGlobalRec _XtGlobalTM;
+
+#define TM_MOD_SEGMENT_SIZE 16
+#define TM_TYPE_SEGMENT_SIZE 16
+
+#define TMGetTypeMatch(idx) \
+ ((TMTypeMatch) \
+ &((_XtGlobalTM.typeMatchSegmentTbl[((idx) >> 4)])[(idx) & 15]))
+#define TMGetModifierMatch(idx) \
+ ((TMModifierMatch) \
+ &((_XtGlobalTM.modMatchSegmentTbl[(idx) >> 4])[(idx) & 15]))
+
+/* Useful Access Macros */
+#define TMNewMatchSemantics() (_XtGlobalTM.newMatchSemantics)
+#define TMBranchMore(branch) (branch->more)
+#define TMComplexBranchHead(tree, br) \
+ (((TMComplexStateTree)tree)->complexBranchHeadTbl[TMBranchMore(br)])
+
+#define TMGetComplexBindEntry(bindData, idx) \
+ ((TMComplexBindProcs)&(((TMComplexBindData)bindData)->bindTbl[idx]))
+
+#define TMGetSimpleBindEntry(bindData, idx) \
+ ((TMSimpleBindProcs)&(((TMSimpleBindData)bindData)->bindTbl[idx]))
+
+
+#define _InitializeKeysymTables(dpy, pd) \
+ if (pd->keysyms == NULL) \
+ _XtBuildKeysymTables(dpy, pd)
+
+/*
+ * Internal Functions
+ */
+
+extern void _XtPopup(
+ Widget /* widget */,
+ XtGrabKind /* grab_kind */,
+ _XtBoolean /* spring_loaded */
+);
+
+extern String _XtPrintXlations(
+ Widget /* w */,
+ XtTranslations /* xlations */,
+ Widget /* accelWidget */,
+ _XtBoolean /* includeRHS */
+);
+
+extern void _XtRegisterGrabs(
+ Widget /* widget */
+);
+
+extern XtPointer _XtInitializeActionData(
+ struct _XtActionsRec * /* actions */,
+ Cardinal /* count */,
+ _XtBoolean /* inPlace */
+);
+
+extern void _XtAddEventSeqToStateTree(
+ EventSeqPtr /* eventSeq */,
+ TMParseStateTree /* stateTree */
+);
+
+extern Boolean _XtMatchUsingStandardMods(
+ TMTypeMatch /* typeMatch */,
+ TMModifierMatch /* modMatch */,
+ TMEventPtr /* eventSeq */
+);
+
+extern Boolean _XtMatchUsingDontCareMods(
+ TMTypeMatch /* typeMatch */,
+ TMModifierMatch /* modMatch */,
+ TMEventPtr /* eventSeq */
+);
+
+extern Boolean _XtRegularMatch(
+ TMTypeMatch /* typeMatch */,
+ TMModifierMatch /* modMatch */,
+ TMEventPtr /* eventSeq */
+);
+
+extern Boolean _XtMatchAtom(
+ TMTypeMatch /* typeMatch */,
+ TMModifierMatch /* modMatch */,
+ TMEventPtr /* eventSeq */
+);
+
+extern void _XtTranslateEvent(
+ Widget /* widget */,
+ XEvent* /* event */
+);
+
+#include "CallbackI.h"
+#include "EventI.h"
+#include "HookObjI.h"
+#include "PassivGraI.h"
+#include "ThreadsI.h"
+#include "InitialI.h"
+#include "ResourceI.h"
+#include "StringDefs.h"
+
+extern void _XtBuildKeysymTables(Display *dpy, XtPerDisplay pd);
+
+#ifndef NO_MIT_HACKS
+extern void _XtDisplayTranslations(
+ Widget /* widget */,
+ XEvent* /* event */,
+ String* /* params */,
+ Cardinal* /* num_params */
+);
+
+extern void _XtDisplayAccelerators(
+ Widget /* widget */,
+ XEvent* /* event */,
+ String* /* params */,
+ Cardinal* /* num_params */
+);
+
+extern void _XtDisplayInstalledAccelerators(
+ Widget /* widget */,
+ XEvent* /* event */,
+ String* /* params */,
+ Cardinal* /* num_params */
+);
+#endif /* ifndef NO_MIT_HACKS */
+
+extern void _XtPopupInitialize(
+ XtAppContext /* app_context */
+);
+
+extern void _XtBindActions(
+ Widget /* widget */,
+ XtTM /* tm_rec */
+);
+
+extern Boolean _XtComputeLateBindings(
+ Display* /* dpy */,
+ LateBindingsPtr /* lateModifiers */,
+ Modifiers* /* computed */,
+ Modifiers* /* computedMask */
+);
+
+extern XtTranslations _XtCreateXlations(
+ TMStateTree * /* stateTrees */,
+ TMShortCard /* numStateTrees */,
+ XtTranslations /* first */,
+ XtTranslations /* second */
+);
+
+extern Boolean _XtCvtMergeTranslations(
+ Display* /* dpy */,
+ XrmValuePtr /* args */,
+ Cardinal* /* num_args */,
+ XrmValuePtr /* from */,
+ XrmValuePtr /* to */,
+ XtPointer* /* closure_ret */
+);
+
+void _XtRemoveStateTreeByIndex(
+ XtTranslations /* xlations */,
+ TMShortCard /* i */);
+
+void _XtFreeTranslations(
+ XtAppContext /* app */,
+ XrmValuePtr /* toVal */,
+ XtPointer /* closure */,
+ XrmValuePtr /* args */,
+ Cardinal* /* num_args */
+);
+
+extern TMShortCard _XtGetModifierIndex(
+ Event* /* event */
+);
+
+extern TMShortCard _XtGetQuarkIndex(
+ TMParseStateTree /* stateTreePtr */,
+ XrmQuark /* quark */
+);
+
+extern XtTranslations _XtGetTranslationValue(
+ Widget /* widget */
+);
+
+extern TMShortCard _XtGetTypeIndex(
+ Event* /* event */
+);
+
+extern void _XtGrabInitialize(
+ XtAppContext /* app */
+);
+
+extern void _XtInstallTranslations(
+ Widget /* widget */
+);
+
+extern void _XtRemoveTranslations(
+ Widget /* widget */
+);
+
+extern void _XtDestroyTMData(
+ Widget /* widget */
+);
+
+extern void _XtMergeTranslations(
+ Widget /* widget */,
+ XtTranslations /* newXlations */,
+ _XtTranslateOp /* operation */
+);
+
+extern void _XtActionInitialize(
+ XtAppContext /* app */
+);
+
+extern TMStateTree _XtParseTreeToStateTree(
+ TMParseStateTree /* parseTree */
+);
+
+extern String _XtPrintActions(
+ ActionRec* /* actions */,
+ XrmQuark* /* quarkTbl */
+);
+
+extern String _XtPrintState(
+ TMStateTree /* stateTree */,
+ TMBranchHead /* branchHead */);
+
+extern String _XtPrintEventSeq(
+ EventSeqPtr /* eventSeq */,
+ Display* /* dpy */
+);
+
+typedef Boolean (*_XtTraversalProc)(
+ StatePtr /* state */,
+ XtPointer /* data */
+);
+
+extern void _XtTraverseStateTree(
+ TMStateTree /* tree */,
+ _XtTraversalProc /* func */,
+ XtPointer /* data */
+);
+
+extern void _XtTranslateInitialize(
+ void
+);
+
+extern void _XtAddTMConverters(
+ ConverterTable /* table */
+);
+
+extern void _XtUnbindActions(
+ Widget /* widget */,
+ XtTranslations /* xlations */,
+ TMBindData /* bindData */
+);
+
+extern void _XtUnmergeTranslations(
+ Widget /* widget */,
+ XtTranslations /* xlations */
+);
+
+/* TMKey.c */
+extern void _XtAllocTMContext(XtPerDisplay pd);
+
+_XFUNCPROTOEND
|