Blame tests/Auto/lib/Synth/xislib.h

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
*/ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
*/ 
Packit b099d7
/*   $XConsortium: xislib.h /main/10 1996/10/30 11:34:43 drk $ */
Packit b099d7
/***********************************************************************
Packit b099d7
  	@(#)xislib.h	1.46     Date:03/18/91                        
Packit b099d7
  	Author: TAT
Packit b099d7
	History:
Packit b099d7
            01/05/89 TAT Initial implementation
Packit b099d7
            04/09/90 TAT Major Update with X11R4; remove syncs
Packit b099d7
            04/23/90 TAT Reorganize to input synth bare essentials and move
Packit b099d7
                         all else to mvs library
Packit b099d7
            05/30/90 SJS add to sccs
Packit b099d7
            06/01/90 PSN add defines for key, button & modifier combination
Packit b099d7
            06/05/90 PSN add prototype for new pi xisGetDragDist()
Packit b099d7
            06/07/90 PSN add prototype for new pi xisIsMouseButtonDown()
Packit b099d7
            07/02/90 SJS more key codes
Packit b099d7
            07/03/90 PSN Fixed key code defines to make it easy to insert new
Packit b099d7
			 key codes any where in the list
Packit b099d7
            08/09/90 SJS Use key code that are vendor independent.
Packit b099d7
                         Move prototypes to xis_protos.h
Packit b099d7
            12/06/90 PSN Added global to keep track of natural pointer mode
Packit b099d7
			 (OwnerGrabMode) so that, IS does not grab pointer
Packit b099d7
			 incorrectly.
Packit b099d7
	Calls:
Packit b099d7
Packit b099d7
	Summary:
Packit b099d7
            Follows below
Packit b099d7
************************************************************************/
Packit b099d7
/*************************************************************     
Packit b099d7
    MOTIF INPUT SYNTHESIS UTILITIES DEFINITIONS (INCLUDE FILE)
Packit b099d7
Packit b099d7
*************************************************************/
Packit b099d7
/************************************************************
Packit b099d7
    
Packit b099d7
  DESCRIPTION:
Packit b099d7
Packit b099d7
    This module contains structure definitions preprocessor
Packit b099d7
    definitions and globals which are defined for use with
Packit b099d7
    the xislib.c module.
Packit b099d7
Packit b099d7
    In xislib.c the preprocessor constant 
Packit b099d7
    DECLARE_XISLIB_GLOBALS_HERE is defined which causes the
Packit b099d7
    generation of storage defining code for globals here
Packit b099d7
    where in all other places that this file is included 
Packit b099d7
    which does not define this constant only references to
Packit b099d7
    these globals are made.
Packit b099d7
Packit b099d7
    Also, it is assumed that your C compiler handles ANSI-C
Packit b099d7
    prototype function declarations (where additional type
Packit b099d7
    checking can be done on your parameters). Where this 
Packit b099d7
    is not the case, precede inclusion of this file with
Packit b099d7
    NOT_ANSI_C defined or just put its definition in your
Packit b099d7
    cc command line.
Packit b099d7
Packit b099d7
**********************************************************/
Packit b099d7
Packit b099d7
#ifndef XISLIB
Packit b099d7
#define XISLIB
Packit b099d7
Packit b099d7
#include <stdio.h>
Packit b099d7
#include <ctype.h>
Packit b099d7
#include <math.h>
Packit b099d7
Packit b099d7
#include <X11/Xlib.h>
Packit b099d7
#include <X11/Xproto.h>
Packit b099d7
Packit b099d7
#include <X11/Intrinsic.h>
Packit b099d7
Packit b099d7
#include "mvs_defines.h" 
Packit b099d7
Packit b099d7
/************* define xisGLOBAL, xisINIT, PARAMS *****************************/
Packit b099d7
Packit b099d7
#ifdef DECLARE_XISLIB_GLOBALS_HERE
Packit b099d7
#define xisGLOBAL  
Packit b099d7
#define xisINIT(x) = x
Packit b099d7
#else
Packit b099d7
#define xisGLOBAL extern
Packit b099d7
#define xisINIT(x)
Packit b099d7
#endif
Packit b099d7
Packit b099d7

Packit b099d7
/******************************************************************************
Packit b099d7
                GLOBAL DISPLAY AND APPLICATION CONTEXT INFO
Packit b099d7
******************************************************************************/
Packit b099d7
Packit b099d7
  xisGLOBAL XtAppContext xisAppContext xisINIT(NULL);
Packit b099d7
                                            /* Application's Xt context       */
Packit b099d7
Packit b099d7
  xisGLOBAL Display *xisDisplay xisINIT(NULL);
Packit b099d7
                                            /* Display test is connected to   */
Packit b099d7
Packit b099d7
  xisGLOBAL int xisScreen;                  /* Default screen number          */
Packit b099d7
  xisGLOBAL Window xisRootWindow;           /* Root window on default screen  */
Packit b099d7
Packit b099d7
  /* NOTE: This version of the input synthesis utils runs only on 1 screen    */
Packit b099d7
Packit b099d7
  xisGLOBAL Window xisSyncWindow xisINIT(0L);
Packit b099d7
                                            /* Used in xisProcessEvents       */
Packit b099d7
                                            /* to sync WM,Server,and Client   */
Packit b099d7
Packit b099d7
  xisGLOBAL Window xisDummyFocusWindow xisINIT(0L);
Packit b099d7
                                            /* Used to set focus away from app*/
Packit b099d7
Packit b099d7
  xisGLOBAL Time xisLastEventTime xisINIT(0);          
Packit b099d7
                                            /* X-server most recent event time*/
Packit b099d7
Packit b099d7
  xisGLOBAL Time xisLastButtonPressTime xisINIT(0);    
Packit b099d7
                                            /* X-server most recent b.prs time*/
Packit b099d7
Packit b099d7
  xisGLOBAL Time xisMultiClickTime xisINIT(0);         
Packit b099d7
                                            /* Max time between button clicks */
Packit b099d7
Packit b099d7
  xisGLOBAL short xisUseSyntheticTime xisINIT(0);          
Packit b099d7
                                            /* True = synthesize event times  */
Packit b099d7
Packit b099d7
  xisGLOBAL Time xisSyntheticTime xisINIT(0);
Packit b099d7
                                            /* Fake X-server time in millisecs*/
Packit b099d7
Packit b099d7
  xisGLOBAL void (*xisTraceMsg)(  )  xisINIT(NULL); 
Packit b099d7
                                            /* Trace message func like printf */
Packit b099d7
Packit b099d7
  xisGLOBAL void (*xisWarningMsg)() xisINIT(NULL);
Packit b099d7
                                            /* Warning message func like print*/
Packit b099d7
Packit b099d7
  xisGLOBAL void (*xisErrorMsg)() xisINIT(NULL);
Packit b099d7
                                            /* Error message func like printf */
Packit b099d7
Packit b099d7
  xisGLOBAL int xisTerminateTestFlag xisINIT(0);
Packit b099d7
                                            /* Set true when user does ctrl-C */
Packit b099d7

Packit b099d7
/******************************************************************************
Packit b099d7
                OBJECT DECLARATION
Packit b099d7
******************************************************************************/
Packit b099d7
Packit b099d7
Packit b099d7
  typedef struct _XisObjectIdRecord {
Packit b099d7
      Widget            widget;
Packit b099d7
      Window            window;
Packit b099d7
      int               object_type;
Packit b099d7
      int               instance;
Packit b099d7
      Window            window_under_parent; /* If Shell, set to window    */
Packit b099d7
                                             /* under root, else set to    */
Packit b099d7
                                             /* same window as in id.window*/
Packit b099d7
Packit b099d7
      /* From here to end of record is for XQueryTree info caching */ 
Packit b099d7
Packit b099d7
      Window            root_window;       /* For multi-screen tests */
Packit b099d7
      Window            parent_window;
Packit b099d7
      unsigned int      num_children;
Packit b099d7
      Window            *children_windows; /* In stack order from bot to top */
Packit b099d7
  } XisObjectIdRecord;
Packit b099d7
Packit b099d7
  typedef void (*XisInformExpectedActionsProc)();
Packit b099d7
Packit b099d7
  typedef struct _XisObjectRecord {
Packit b099d7
    XisObjectIdRecord            id;
Packit b099d7
    int                          id_code;  /* small unique portable int id */
Packit b099d7
    int                          in_use;
Packit b099d7
    int                          x,y,width,height;
Packit b099d7
    int                          visibility_state;
Packit b099d7
    unsigned long                your_event_mask;
Packit b099d7
    unsigned long                do_not_propagate_mask;
Packit b099d7
    struct _XisObjectRecord      *parent;
Packit b099d7
    struct _XisObjectRecord      *first_child;
Packit b099d7
    struct _XisObjectRecord      *next_sibling;
Packit b099d7
    XisInformExpectedActionsProc proc_InformExpectedActions;
Packit b099d7
  } XisObjectRecord;
Packit b099d7
Packit b099d7
# define MAX_NUM_OBJECTS 5000
Packit b099d7
  xisGLOBAL XisObjectRecord xisObjects[MAX_NUM_OBJECTS] xisINIT({ 0 });
Packit b099d7
  xisGLOBAL int xisMaxObjectNum xisINIT(0);
Packit b099d7
Packit b099d7
# define NULL_Object (XisObjectRecord *)NULL
Packit b099d7
Packit b099d7
  xisGLOBAL int xisNumObjectTypes xisINIT(0);
Packit b099d7
Packit b099d7
  xisGLOBAL void (*xisGenerateObjects)(/*root_obj*/) xisINIT(NULL);
Packit b099d7
  xisGLOBAL char *(*xisGetObjectTypeName)(/* int object_type */) xisINIT(NULL);
Packit b099d7
  xisGLOBAL char *(*xisGetWidgetClassName)(/* Widget widget */) xisINIT(NULL);
Packit b099d7
  xisGLOBAL Widget (*xisWindowToWidget)(/* Window window */) xisINIT(NULL);
Packit b099d7
Packit b099d7

Packit b099d7
/******************************************************************************
Packit b099d7
                DEFINE InformExpectedActions FUNCTION POINTER
Packit b099d7
******************************************************************************/
Packit b099d7
Packit b099d7
/* XIS Inform Record contains information which is valid only during a call  */
Packit b099d7
/* of an InformExpectedAction function.  It is made global so that all of the*/
Packit b099d7
/* xis state querying commands can access this information without explicitly*/
Packit b099d7
/* passing it as a parameter (each routine needs only a portion of all these */
Packit b099d7
/* fields).                                                                  */
Packit b099d7
 
Packit b099d7
typedef struct _XisInformRecord {
Packit b099d7
    /* These fields are always valid */
Packit b099d7
    int             is_valid;           /* True when info here is valid      */
Packit b099d7
    int             event_code;         /* The event_code passed to InfExpAct*/
Packit b099d7
    XisObjectRecord *current_obj;       /* The current obj w/InformExpectActi*/
Packit b099d7
    XisObjectRecord *action_obj;        /* The object where the action ocured*/
Packit b099d7
    XisObjectRecord *pointer_obj;       /* The object the pointer is over    */
Packit b099d7
Packit b099d7
    /* These fields are usable only by Enter/Leave events                    */
Packit b099d7
    XisObjectRecord *leave_obj;         /* The object being left             */
Packit b099d7
    XisObjectRecord *enter_obj;         /* The object to be entered          */
Packit b099d7
Packit b099d7
    /* These fields depend on which event occurred (see below) */
Packit b099d7
    unsigned int    modifier_key_status;/* The modifier keys held down       */
Packit b099d7
    int             button_num;         /* The button which did something    */
Packit b099d7
    int             key_code;           /* The xis keycode which did something*/
Packit b099d7
    int             edge_code;          /* The top,bot,left,rght edge crossed*/
Packit b099d7
    int             num_clicks;         /* The number of key/button clicks   */
Packit b099d7
    int             del_x,del_y;        /* Change in pntr position for motion*/
Packit b099d7
    int             new_width,new_height;/* Resized size                     */
Packit b099d7
} XisInformRecord;
Packit b099d7
Packit b099d7
xisGLOBAL XisInformRecord xisInform;
Packit b099d7
Packit b099d7
Packit b099d7
/* POSSIBLE EVENT CODE VALUES */      /* Relavent xisInform record fields     */
Packit b099d7
Packit b099d7
# define EventMouseButtonDown       0 /* modifiers,button_num                 */
Packit b099d7
# define EventMouseButtonUp         1 /* modifiers,button_num                 */
Packit b099d7
# define EventMouseButtonMultiClick 2 /* modifiers,button_num,num_clicks      */
Packit b099d7
# define EventKeyClick              3 /* modifiers,key_code                   */
Packit b099d7
# define EventPointerEnter          4 /* edge_code                            */
Packit b099d7
# define EventPointerLeave          5 /* edge_code                            */
Packit b099d7
# define EventFocusIn               6 /* none                                 */
Packit b099d7
# define EventFocusOut              7 /* none                                 */
Packit b099d7
# define EventExpose                8 /* none                                 */
Packit b099d7
# define EventDestroy               9 /* none                                 */
Packit b099d7
# define EventMap                  10 /* none                                 */
Packit b099d7
# define EventUnmap                11 /* none                                 */
Packit b099d7
# define EventKeyPress             12 /* modifiers,key_code                   */
Packit b099d7
# define EventKeyRelease           13 /* modifiers,key_code                   */
Packit b099d7
# define EventPointerMotion        14 /* del_x,del_y                          */
Packit b099d7
# define EventResize               15 /* new_width, new_height                */
Packit b099d7
# define MAXEVENT                  16
Packit b099d7
Packit b099d7
Packit b099d7
/* POSSIBLE MODIFIER KEY CODE MASKS */
Packit b099d7
Packit b099d7
  /*
Packit b099d7
     Use those already define in X.h:
Packit b099d7
Packit b099d7
     ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask
Packit b099d7
  */
Packit b099d7
Packit b099d7
Packit b099d7
/* POSSIBLE BUTTON NUM CODES */
Packit b099d7
Packit b099d7
  /*
Packit b099d7
     Use those already defined in X.h: 
Packit b099d7
     
Packit b099d7
     Button1, Button2, Button3, Button4, Button5
Packit b099d7
  */ 
Packit b099d7
 
Packit b099d7
Packit b099d7
/* POSSIBLE EDGE CODE VALUES */
Packit b099d7
Packit b099d7
#define UndefinedEdge  0
Packit b099d7
#define TopEdge        1
Packit b099d7
#define BottomEdge     2
Packit b099d7
#define LeftEdge       3
Packit b099d7
#define RightEdge      4
Packit b099d7
Packit b099d7

Packit b099d7
/******************************************************************************
Packit b099d7
                MOUSE POINTER AND BUTTON MANAGEMENT DECLARATIONS
Packit b099d7
******************************************************************************/
Packit b099d7
Packit b099d7
  xisGLOBAL int xisSavePointerX;         /* Position of pointer rel. to root  */
Packit b099d7
  xisGLOBAL int xisSavePointerY;         /* when xisSavePointer() was called. */
Packit b099d7
Packit b099d7
  xisGLOBAL int xisPointerSaved xisINIT(0); /* Flag indicating pntr was saved.*/
Packit b099d7
Packit b099d7
  xisGLOBAL int xisPointerGrabbed xisINIT(0);/* Flag indicating pntr is grabed*/
Packit b099d7
  xisGLOBAL Window xisGrabPointerWindow; /* Window where pointer was grabbed. */
Packit b099d7
  xisGLOBAL Window xisGrabPointerSubwindow; /* Subwindow where button was pressed. */
Packit b099d7
Packit b099d7
  xisGLOBAL Window xisSaveFocusWindow;   /* Keyboard focus window.            */
Packit b099d7
  xisGLOBAL int xisSaveFocusRevert;      /* Keyboard focus revert flag.       */
Packit b099d7
Packit b099d7
#ifndef DECLARE_XISLIB_GLOBALS_HERE
Packit b099d7
  xisGLOBAL unsigned int xisMouseButtonMask[]; /* Maps button num to mask */
Packit b099d7
#else
Packit b099d7
  xisGLOBAL unsigned int xisMouseButtonMask[6] = 
Packit b099d7
    { 0, Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask };
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#ifndef DECLARE_XISLIB_GLOBALS_HERE
Packit b099d7
  xisGLOBAL unsigned int xisMouseButtonDetail[]; /* Maps button num to detail */
Packit b099d7
#else 
Packit b099d7
  xisGLOBAL unsigned int xisMouseButtonDetail[6] = 
Packit b099d7
    { 0, Button1, Button2, Button3, Button4, Button5 };
Packit b099d7
#endif
Packit b099d7
Packit b099d7
/* Move pointer direction codes */
Packit b099d7
Packit b099d7
#define MoveAny        0
Packit b099d7
#define MoveLeft       1
Packit b099d7
#define MoveRight      2
Packit b099d7
#define MoveUp         3
Packit b099d7
#define MoveDown       4
Packit b099d7
Packit b099d7
/* Keep track of last selected widget (where button pressed) */
Packit b099d7
Packit b099d7
  xisGLOBAL XisObjectRecord *xisSelectedObject   xisINIT(NULL);
Packit b099d7
Packit b099d7

Packit b099d7
/******************************************************************************
Packit b099d7
                KEYBOARD SYNTHESIS DECLARATIONS
Packit b099d7
******************************************************************************/
Packit b099d7
Packit b099d7
#define MAX_KEY_NAME 32
Packit b099d7
Packit b099d7
/* Define keys which can be put in detail on KeyPress,KeyRelease events */
Packit b099d7
Packit b099d7
#define _KeyNone   		0
Packit b099d7
#define _KeyActivate 		(_KeyNone+1)
Packit b099d7
#define _KeyAddMode  		(_KeyActivate+1)
Packit b099d7
#define _KeyBackSpace    	(_KeyAddMode+1)
Packit b099d7
#define _KeyBeginLine   	(_KeyBackSpace+1)
Packit b099d7
#define _KeyCancel  		(_KeyBeginLine+1)
Packit b099d7
#define _KeyClear   		(_KeyCancel+1)
Packit b099d7
#define _KeyCopy   		(_KeyClear+1)
Packit b099d7
#define _KeyCut   		(_KeyCopy+1)
Packit b099d7
#define _KeyDelete 		(_KeyCut+1)
Packit b099d7
#define _KeyDown    		(_KeyDelete+1)
Packit b099d7
#define _KeyEndLine             (_KeyDown+1)
Packit b099d7
#define _KeyEnter		(_KeyEndLine+1)
Packit b099d7
#define _KeyEscape      	(_KeyEnter+1)
Packit b099d7
#define _KeyHelp     		(_KeyEscape+1)
Packit b099d7
#define _KeyInsert     		(_KeyHelp+1)
Packit b099d7
#define _KeyLeft     		(_KeyInsert+1)
Packit b099d7
#define _KeyMenu     		(_KeyLeft+1)
Packit b099d7
#define _KeyMenuBar     	(_KeyMenu+1)
Packit b099d7
#define _KeyPageDown     	(_KeyMenuBar+1)
Packit b099d7
#define _KeyPageUp     		(_KeyPageDown+1)
Packit b099d7
#define _KeyPaste     		(_KeyPageUp+1)
Packit b099d7
#define _KeyPrimaryPaste     	(_KeyPaste+1)
Packit b099d7
#define _KeyQuickPaste     	(_KeyPrimaryPaste+1)
Packit b099d7
#define _KeyReturn  		(_KeyQuickPaste+1)
Packit b099d7
#define _KeyRight     		(_KeyReturn+1)
Packit b099d7
#define _KeySelect     		(_KeyRight+1)
Packit b099d7
#define _KeySpace     		(_KeySelect+1)
Packit b099d7
#define _KeyTab     		(_KeySpace+1)
Packit b099d7
#define _KeyUndo     		(_KeyTab+1)
Packit b099d7
#define _KeyUp     		(_KeyUndo+1)
Packit b099d7
#define _Keya     		(_KeyUp+1)
Packit b099d7
#define _Keyb     		(_Keya+1)
Packit b099d7
#define _Keyc     		(_Keyb+1)
Packit b099d7
#define _Keyd     		(_Keyc+1)
Packit b099d7
#define _Keye     		(_Keyd+1)
Packit b099d7
#define _Keyf     		(_Keye+1)
Packit b099d7
#define _Keyg     		(_Keyf+1)
Packit b099d7
#define _Keyh     		(_Keyg+1)
Packit b099d7
#define _Keyi     		(_Keyh+1)
Packit b099d7
#define _Keyj        		(_Keyi+1)
Packit b099d7
#define _Keyk        		(_Keyj+1)
Packit b099d7
#define _Keyl        		(_Keyk+1)
Packit b099d7
#define _Keym        		(_Keyl+1)
Packit b099d7
#define _Keyn        		(_Keym+1)
Packit b099d7
#define _Keyo        		(_Keyn+1)
Packit b099d7
#define _Keyp        		(_Keyo+1)
Packit b099d7
#define _Keyq        		(_Keyp+1)
Packit b099d7
#define _Keyr        		(_Keyq+1)
Packit b099d7
#define _Keys        		(_Keyr+1)
Packit b099d7
#define _Keyt        		(_Keys+1)
Packit b099d7
#define _Keyu        		(_Keyt+1)
Packit b099d7
#define _Keyv        		(_Keyu+1)
Packit b099d7
#define _Keyw        		(_Keyv+1)
Packit b099d7
#define _Keyx        		(_Keyw+1)
Packit b099d7
#define _Keyy        		(_Keyx+1)
Packit b099d7
#define _Keyz        		(_Keyy+1)
Packit b099d7
#define _KeyBackSlash  		(_Keyz+1)
Packit b099d7
#define _KeySlash  		(_KeyBackSlash+1)
Packit b099d7
#define _KeyBraceRight		(_KeySlash+1)
Packit b099d7
#define _KeyBraceLeft		(_KeyBraceRight+1)
Packit b099d7
#define _KeyBracketRight	(_KeyBraceLeft+1)
Packit b099d7
#define _KeyBracketLeft		(_KeyBracketRight+1)
Packit b099d7
Packit b099d7
#define _Key1			(_KeyBracketLeft+1)
Packit b099d7
#define _Key2			(_Key1+1)
Packit b099d7
#define _Key3			(_Key2+1)
Packit b099d7
#define _Key4			(_Key3+1)
Packit b099d7
#define _Key5			(_Key4+1)
Packit b099d7
#define _Key6			(_Key5+1)
Packit b099d7
#define _Key7			(_Key6+1)
Packit b099d7
#define _Key8			(_Key7+1)
Packit b099d7
#define _Key9			(_Key8+1)
Packit b099d7
#define _Key0			(_Key9+1)
Packit b099d7
Packit b099d7
#define _MaxKey   	        (_Key0+1) 
Packit b099d7
Packit b099d7
Packit b099d7
#define NoModifierKeys 0
Packit b099d7
 
Packit b099d7
#define KeyNone		NoModifierKeys,		_KeyNone
Packit b099d7
#define KeyActivate	NoModifierKeys,		_KeyActivate
Packit b099d7
#define KeyAddMode	NoModifierKeys,		_KeyAddMode
Packit b099d7
#define KeyBackSpace	NoModifierKeys,		_KeyBackSpace
Packit b099d7
#define KeyBackTab	ShiftMask,		_KeyTab
Packit b099d7
#define KeyBeginData	ControlMask,		_KeyBeginLine
Packit b099d7
#define KeyBeginLine	NoModifierKeys,		_KeyBeginLine
Packit b099d7
#define KeyCancel	NoModifierKeys,		_KeyCancel
Packit b099d7
#define KeyClear	NoModifierKeys,		_KeyClear
Packit b099d7
#define KeyCopy		NoModifierKeys,		_KeyCopy
Packit b099d7
#define KeyCut		NoModifierKeys,		_KeyCut
Packit b099d7
#define KeyDelete	NoModifierKeys,		_KeyDelete
Packit b099d7
#define KeyDeselectAll	ControlMask,		_KeyBackSlash
Packit b099d7
#define KeyDown		NoModifierKeys,		_KeyDown
Packit b099d7
#define KeyEndData	ControlMask,		_KeyEndLine
Packit b099d7
#define KeyEndLine	NoModifierKeys,		_KeyEndLine
Packit b099d7
#define KeyEnter	NoModifierKeys,		_KeyEnter
Packit b099d7
#define KeyEscape	NoModifierKeys,		_KeyEscape
Packit b099d7
#define KeyExtend	ShiftMask,              _KeySelect
Packit b099d7
#define KeyHelp		NoModifierKeys,		_KeyHelp
Packit b099d7
#define KeyInsert	NoModifierKeys,		_KeyInsert
Packit b099d7
#define KeyLeft		NoModifierKeys,		_KeyLeft
Packit b099d7
#define KeyMenu		NoModifierKeys,		_KeyMenu
Packit b099d7
#define KeyMenuBar	NoModifierKeys,		_KeyMenuBar
Packit b099d7
#define KeyNextField	NoModifierKeys,		_KeyTab
Packit b099d7
#define KeyNextMenu	ControlMask,		_KeyDown
Packit b099d7
#define KeyPageDown	NoModifierKeys,		_KeyPageDown
Packit b099d7
#define KeyPageLeft	ControlMask,		_KeyPageUp
Packit b099d7
#define KeyPageRight	ControlMask,		_KeyPageDown
Packit b099d7
#define KeyPageUp	NoModifierKeys,		_KeyPageUp
Packit b099d7
#define KeyPaste	NoModifierKeys,		_KeyPaste
Packit b099d7
#define KeyPrevField	ShiftMask,		_KeyTab
Packit b099d7
#define KeyPrevMenu	ControlMask,		_KeyUp
Packit b099d7
#define KeyPrimaryCopy	ControlMask,	        _KeyPrimaryPaste
Packit b099d7
#define KeyPrimaryCut	Mod1Mask,               _KeyPrimaryPaste
Packit b099d7
#define KeyPrimaryPaste	NoModifierKeys,		_KeyPrimaryPaste
Packit b099d7
#define KeyQuickCopy	ControlMask,		_KeyQuickPaste
Packit b099d7
#define KeyQuickCut	Mod1Mask,		_KeyQuickPaste
Packit b099d7
#define KeyQuickExtend	ShiftMask,	        _KeyQuickPaste
Packit b099d7
#define KeyQuickPaste	NoModifierKeys,		_KeyQuickPaste
Packit b099d7
#define KeyReselect	ControlMask|ShiftMask,	_KeySelect
Packit b099d7
#define KeyRestore	ControlMask|ShiftMask,	_KeyInsert
Packit b099d7
#define KeyRight	NoModifierKeys,		_KeyRight
Packit b099d7
#define KeySelect	NoModifierKeys,		_KeySelect
Packit b099d7
#define KeySelectAll	ControlMask,		_KeySlash
Packit b099d7
#define KeySpace	NoModifierKeys,		_KeySpace
Packit b099d7
#define KeyTab		NoModifierKeys,		_KeyTab
Packit b099d7
#define KeyUndo		NoModifierKeys,		_KeyUndo
Packit b099d7
#define KeyUp		NoModifierKeys,		_KeyUp
Packit b099d7
#define KeyBackSlash	NoModifierKeys,		_KeyBackSlash
Packit b099d7
#define KeySlash	NoModifierKeys,		_KeySlash
Packit b099d7
#define KeyReturn	NoModifierKeys,		_KeyReturn
Packit b099d7
#define KeyBraceRight	NoModifierKeys,		_KeyBraceRight
Packit b099d7
#define KeyBraceLeft	NoModifierKeys,		_KeyBraceLeft
Packit b099d7
#define KeyBracketRight	NoModifierKeys,		_KeyBracketRight
Packit b099d7
#define KeyBracketLeft	NoModifierKeys,		_KeyBracketLeft
Packit b099d7
#define Key1		NoModifierKeys,		_Key1
Packit b099d7
#define Key2		NoModifierKeys,		_Key2
Packit b099d7
#define Key3		NoModifierKeys,		_Key3
Packit b099d7
#define Key4		NoModifierKeys,		_Key4
Packit b099d7
#define Key5		NoModifierKeys,		_Key5
Packit b099d7
#define Key6		NoModifierKeys,		_Key6
Packit b099d7
#define Key7		NoModifierKeys,		_Key7
Packit b099d7
#define Key8		NoModifierKeys,		_Key8
Packit b099d7
#define Key9		NoModifierKeys,		_Key9
Packit b099d7
#define Key0		NoModifierKeys,		_Key0
Packit b099d7
Packit b099d7
#define KeyExclamation	ShiftMask,		_Key1
Packit b099d7
#define KeyAt		ShiftMask,		_Key2
Packit b099d7
#define KeyNumberSign	ShiftMask,		_Key3
Packit b099d7
#define KeyDollar	ShiftMask,		_Key4
Packit b099d7
#define KeyPercent	ShiftMask,		_Key5
Packit b099d7
#define KeyCaret	ShiftMask,		_Key6
Packit b099d7
#define KeyAmpersand	ShiftMask,		_Key7
Packit b099d7
#define KeyAsterisk	ShiftMask,		_Key8
Packit b099d7
#define KeyParenLeft	ShiftMask,		_Key9
Packit b099d7
#define KeyParenRight	ShiftMask,		_Key0
Packit b099d7
Packit b099d7
#define Keya 	NoModifierKeys, 	_Keya
Packit b099d7
#define Keyb 	NoModifierKeys, 	_Keyb
Packit b099d7
#define Keyc 	NoModifierKeys, 	_Keyc
Packit b099d7
#define Keyd 	NoModifierKeys, 	_Keyd
Packit b099d7
#define Keye 	NoModifierKeys, 	_Keye
Packit b099d7
#define Keyf 	NoModifierKeys, 	_Keyf
Packit b099d7
#define Keyg 	NoModifierKeys, 	_Keyg
Packit b099d7
#define Keyh 	NoModifierKeys, 	_Keyh
Packit b099d7
#define Keyi 	NoModifierKeys, 	_Keyi
Packit b099d7
#define Keyj 	NoModifierKeys, 	_Keyj
Packit b099d7
#define Keyk 	NoModifierKeys, 	_Keyk
Packit b099d7
#define Keyl 	NoModifierKeys, 	_Keyl
Packit b099d7
#define Keym 	NoModifierKeys, 	_Keym
Packit b099d7
#define Keyn 	NoModifierKeys, 	_Keyn
Packit b099d7
#define Keyo 	NoModifierKeys, 	_Keyo
Packit b099d7
#define Keyp 	NoModifierKeys, 	_Keyp
Packit b099d7
#define Keyq 	NoModifierKeys, 	_Keyq
Packit b099d7
#define Keyr 	NoModifierKeys, 	_Keyr
Packit b099d7
#define Keys 	NoModifierKeys, 	_Keys
Packit b099d7
#define Keyt 	NoModifierKeys, 	_Keyt
Packit b099d7
#define Keyu 	NoModifierKeys, 	_Keyu
Packit b099d7
#define Keyv 	NoModifierKeys, 	_Keyv
Packit b099d7
#define Keyw 	NoModifierKeys, 	_Keyw
Packit b099d7
#define Keyx 	NoModifierKeys, 	_Keyx
Packit b099d7
#define Keyy 	NoModifierKeys, 	_Keyy
Packit b099d7
#define Keyz 	NoModifierKeys, 	_Keyz
Packit b099d7
Packit b099d7
#define Btn1   		NoModifierKeys, 	Button1
Packit b099d7
#define Btn2   		NoModifierKeys, 	Button2
Packit b099d7
#define Btn3   		NoModifierKeys, 	Button3
Packit b099d7
#define Btn4   		NoModifierKeys, 	Button4
Packit b099d7
#define Btn5   		NoModifierKeys, 	Button5
Packit b099d7
Packit b099d7
#define CtrlBtn1   	ControlMask, 		Button1
Packit b099d7
#define CtrlBtn2   	ControlMask, 		Button2
Packit b099d7
#define CtrlBtn3   	ControlMask, 		Button3
Packit b099d7
#define CtrlBtn4   	ControlMask, 		Button4
Packit b099d7
#define CtrlBtn5   	ControlMask, 		Button5
Packit b099d7
Packit b099d7
#define ShiftBtn1   	ShiftMask, 		Button1
Packit b099d7
#define ShiftBtn2   	ShiftMask, 		Button2
Packit b099d7
#define ShiftBtn3   	ShiftMask, 		Button3
Packit b099d7
#define ShiftBtn4   	ShiftMask, 		Button4
Packit b099d7
#define ShiftBtn5   	ShiftMask, 		Button5
Packit b099d7
Packit b099d7
Packit b099d7
/* Here is where we define the special combinations of shifted and 
Packit b099d7
   control keys. The cases here are enough the cover all of the 
Packit b099d7
   text and list widgets. 
Packit b099d7
*/
Packit b099d7
Packit b099d7
Packit b099d7
#define KeyShiftEndData      ShiftMask|ControlMask,         _KeyEndLine
Packit b099d7
#define KeyShiftBeginData    ShiftMask|ControlMask,         _KeyBeginLine
Packit b099d7
#define KeyShiftUp           ShiftMask,                     _KeyUp
Packit b099d7
#define KeyShiftDown         ShiftMask,                     _KeyDown
Packit b099d7
#define KeyShiftBeginLine    ShiftMask,                     _KeyBeginLine
Packit b099d7
#define KeyShiftEndLine      ShiftMask,                     _KeyEndLine
Packit b099d7
#define KeyShiftActivate     ShiftMask,                     _KeyActivate
Packit b099d7
#define KeyCtrlRight        ControlMask,                   _KeyRight
Packit b099d7
#define KeyCtrlLeft         ControlMask,                   _KeyLeft
Packit b099d7
#define KeyCtrlBeginLine    ControlMask,                   _KeyBeginLine
Packit b099d7
#define KeyCtrlEndLine      ControlMask,                   _KeyEndLine
Packit b099d7
#define KeyCtrlSlash        ControlMask,                   _KeySlash
Packit b099d7
#define KeyCtrlBackSlash    ControlMask,                   _KeyBackSlash
Packit b099d7
#define KeyCtrlDown         ControlMask,                   _KeyDown
Packit b099d7
#define KeyCtrlUp           ControlMask,                   _KeyUp
Packit b099d7
#define KeyCtrlSelect       ControlMask,                   _KeySelect
Packit b099d7
#define KeyShiftLeft         ShiftMask,                     _KeyLeft
Packit b099d7
#define KeyShiftPageDown     ShiftMask,                     _KeyPageDown
Packit b099d7
#define KeyShiftPageUp       ShiftMask,                     _KeyPageUp
Packit b099d7
#define KeyShiftRight        ShiftMask,                     _KeyRight
Packit b099d7
#define KeyShiftCtrlDown    ShiftMask|ControlMask,         _KeyDown
Packit b099d7
#define KeyShiftCtrlLeft    ShiftMask|ControlMask,         _KeyLeft
Packit b099d7
#define KeyShiftCtrlRight   ShiftMask|ControlMask,         _KeyRight
Packit b099d7
#define KeyShiftCtrlUp      ShiftMask|ControlMask,         _KeyUp
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/* Key Symbol Names                                                      */
Packit b099d7
/* KeySyms are X's way of naming keys. Valid KeySym names are listed in  */
Packit b099d7
/* <X11/keysymdef.h> by removing the XK_ prefix from each name.          */
Packit b099d7
Packit b099d7
typedef struct {
Packit b099d7
    char      key_name[MAX_KEY_NAME];
Packit b099d7
    int       def_num;
Packit b099d7
    KeyCode   code;
Packit b099d7
    Modifiers modifier ;
Packit b099d7
}  xisKeySymStruct;
Packit b099d7
Packit b099d7
#ifndef DECLARE_XISLIB_GLOBALS_HERE
Packit b099d7
xisGLOBAL xisKeySymStruct xisKeySymName[];
Packit b099d7
#else
Packit b099d7
xisGLOBAL xisKeySymStruct xisKeySymName[_MaxKey+1] = {
Packit b099d7
 /* this next key must be this !!!  */
Packit b099d7
{/*KeyNone   	   */ "",		 _KeyNone,	0, 0	},
Packit b099d7
{/*KeyActivate     */ "osfActivate",     _KeyActivate,	0, 0	},
Packit b099d7
{/*KeyAddMode      */ "osfAddMode",      _KeyAddMode,	0, 0	},
Packit b099d7
{/*KeyBackSpace    */ "osfBackSpace",    _KeyBackSpace, 0, 0	},
Packit b099d7
{/*KeyBeginLine    */ "osfBeginLine",    _KeyBeginLine, 0, 0	},
Packit b099d7
{/*KeyCancel       */ "osfCancel",	 _KeyCancel,	0, 0	},
Packit b099d7
{/*KeyClear        */ "osfClear",	 _KeyClear,	0, 0	},
Packit b099d7
{/*KeyCopy         */ "osfCopy",	 _KeyCopy,	0, 0	},
Packit b099d7
{/*KeyCut          */ "osfCut", 	 _KeyCut,	0, 0	},
Packit b099d7
{/*KeyDelete       */ "osfDelete",	 _KeyDelete,	0, 0	},
Packit b099d7
{/*KeyDown         */ "osfDown",	 _KeyDown,	0, 0	},
Packit b099d7
{/*KeyEndLine      */ "osfEndLine",	 _KeyEndLine,	0, 0	},
Packit b099d7
{/*KeyEnter        */ "KP_Enter", 	 _KeyEnter,	0, 0	},
Packit b099d7
{/*KeyEscape       */ "Escape", 	 _KeyEscape,	0, 0	},
Packit b099d7
{/*KeyHelp         */ "osfHelp",	 _KeyHelp,	0, 0	},
Packit b099d7
{/*KeyInsert       */ "osfInsert",       _KeyInsert,	0, 0	},
Packit b099d7
{/*KeyLeft         */ "osfLeft", 	 _KeyLeft,	0, 0	},
Packit b099d7
{/*KeyMenu         */ "osfMenu",	 _KeyMenu,	0, 0	},
Packit b099d7
{/*KeyMenuBar      */ "osfMenuBar",      _KeyMenuBar,	0, 0	},
Packit b099d7
{/*KeyPageDown     */ "osfPageDown",	 _KeyPageDown,	0, 0	},
Packit b099d7
{/*KeyPageUp       */ "osfPageUp",	 _KeyPageUp,	0, 0	},
Packit b099d7
{/*KeyPaste        */ "osfPaste", 	 _KeyPaste,	0, 0	},
Packit b099d7
{/*KeyPrimaryPaste */ "osfPrimaryPaste", _KeyPrimaryPaste,0, 0	},
Packit b099d7
{/*KeyQuickPaste   */ "osfQuickPaste",   _KeyQuickPaste,0, 0	},
Packit b099d7
{/*KeyReturn       */ "Return", 	 _KeyReturn,	0, 0	},
Packit b099d7
{/*KeyRight        */ "osfRight", 	 _KeyRight,	0, 0	},
Packit b099d7
{/*KeySelect       */ "osfSelect", 	 _KeySelect,	0, 0	},
Packit b099d7
{/*KeySpace        */ "space", 	         _KeySpace,	0, 0	},
Packit b099d7
{/*KeyTab          */ "Tab", 	         _KeyTab,	0, 0	},
Packit b099d7
{/*KeyUndo         */ "osfUndo",	 _KeyUndo,	0, 0	},
Packit b099d7
{/*KeyUp           */ "osfUp", 	         _KeyUp	,	0, 0	},
Packit b099d7
{/*a          	   */ "a",      	 _Keya,	0, 0	},
Packit b099d7
{/*b        	   */ "b",      	 _Keyb,	0, 0	},
Packit b099d7
{/*c        	   */ "c",      	 _Keyc,	0, 0	},
Packit b099d7
{/*d        	   */ "d",      	 _Keyd,	0, 0	},
Packit b099d7
{/*e        	   */ "e",      	 _Keye,	0, 0	},
Packit b099d7
{/*f        	   */ "f",      	 _Keyf,	0, 0	},
Packit b099d7
{/*g        	   */ "g",      	 _Keyg,	0, 0	},
Packit b099d7
{/*h        	   */ "h",      	 _Keyh,	0, 0	},
Packit b099d7
{/*i        	   */ "i",      	 _Keyi,	0, 0	},
Packit b099d7
{/*j        	   */ "j",      	 _Keyj,	0, 0	},
Packit b099d7
{/*k        	   */ "k",      	 _Keyk,	0, 0	},
Packit b099d7
{/*l        	   */ "l",      	 _Keyl,	0, 0	},
Packit b099d7
{/*m        	   */ "m",      	 _Keym,	0, 0	},
Packit b099d7
{/*n        	   */ "n",      	 _Keyn,	0, 0	},
Packit b099d7
{/*o        	   */ "o",      	 _Keyo,	0, 0	},
Packit b099d7
{/*p        	   */ "p",      	 _Keyp,	0, 0	},
Packit b099d7
{/*q        	   */ "q",      	 _Keyq,	0, 0	},
Packit b099d7
{/*r        	   */ "r",      	 _Keyr,	0, 0	},
Packit b099d7
{/*s        	   */ "s",      	 _Keys,	0, 0	},
Packit b099d7
{/*t        	   */ "t",      	 _Keyt,	0, 0	},
Packit b099d7
{/*u        	   */ "u",      	 _Keyu,	0, 0	},
Packit b099d7
{/*v        	   */ "v",      	 _Keyv,	0, 0	},
Packit b099d7
{/*w        	   */ "w",      	 _Keyw,	0, 0	},
Packit b099d7
{/*x        	   */ "x",      	 _Keyx,	0, 0	},
Packit b099d7
{/*y        	   */ "y",      	 _Keyy,	0, 0	},
Packit b099d7
{/*z        	   */ "z",      	 _Keyz,	0, 0	},
Packit b099d7
{/*KeyBackSlash    */ "backslash",       _KeyBackSlash,	0, 0	},
Packit b099d7
{/*KeySlash        */ "slash", 	         _KeySlash,	0, 0	},
Packit b099d7
{/*KeyBraceRight   */ "braceright",	 _KeyBraceRight, 0, 0   },
Packit b099d7
{/*KeyBraceLeft    */ "braceleft",	 _KeyBraceLeft,  0, 0   },
Packit b099d7
{/*KeyBracketRight */ "bracketright",	 _KeyBracketRight, 0, 0   },
Packit b099d7
{/*KeyBracketLeft  */ "bracketleft",	 _KeyBracketLeft,  0, 0   },
Packit b099d7
{/* 1		   */ "1",		 _Key1, 0, 0 },
Packit b099d7
{/* 2		   */ "2",		 _Key2, 0, 0 },
Packit b099d7
{/* 3		   */ "3",		 _Key3, 0, 0 },
Packit b099d7
{/* 4		   */ "4",		 _Key4, 0, 0 },
Packit b099d7
{/* 5		   */ "5",		 _Key5, 0, 0 },
Packit b099d7
{/* 6		   */ "6",		 _Key6, 0, 0 },
Packit b099d7
{/* 7		   */ "7",		 _Key7, 0, 0 },
Packit b099d7
{/* 8		   */ "8",		 _Key8, 0, 0 },
Packit b099d7
{/* 9		   */ "9",		 _Key9, 0, 0 },
Packit b099d7
{/* 0		   */ "0",		 _Key0, 0, 0 },
Packit b099d7
Packit b099d7
 /* this next key must be this !!!  */
Packit b099d7
{/*_MaxKey   	   */ "UndefinedKey",    _MaxKey,	0, 0	},
Packit b099d7
};
Packit b099d7
Packit b099d7
Packit b099d7
#endif
Packit b099d7
#define KEYBOARD_FOCUS_CONTROLLED 0
Packit b099d7
#define KEYBOARD_FOCUS_NATURAL    1
Packit b099d7
Packit b099d7
xisGLOBAL short xisKeyboardFocusMode xisINIT(KEYBOARD_FOCUS_NATURAL);
Packit b099d7
Packit b099d7
#define POINTER_GRAB_CONTROLLED 0
Packit b099d7
#define POINTER_GRAB_NATURAL    1
Packit b099d7
Packit b099d7
xisGLOBAL short xisPointerGrabMode xisINIT(POINTER_GRAB_CONTROLLED);
Packit b099d7
Packit b099d7

Packit b099d7
/******************************************************************************
Packit b099d7
                WIDGET IMPLICIT STATE INFO MANAGEMENT DECLARATIONS
Packit b099d7
******************************************************************************/
Packit b099d7
Packit b099d7
/* XIS State Record contains  Current Relavent Physical X-Server States */
Packit b099d7
Packit b099d7
/* NOTE: None of these fields point to objects since the lifetime of any one */
Packit b099d7
/*       object is very short. They are regenerated after each call of       */
Packit b099d7
/*       xisProcessEvents.  So any particular object might be located at     */
Packit b099d7
/*       a different location after each call.                               */
Packit b099d7
Packit b099d7
typedef struct _XisStateRecord {
Packit b099d7
    Window       focus_window;          /* Only really needed for DummyFocus */
Packit b099d7
    Widget       focus_widget;          /* The latest known focus widget     */
Packit b099d7
    int          focus_object_type;     /* The latest focus object           */
Packit b099d7
    int          focus_instance;        /* The latest focus instance         */
Packit b099d7
    int          focus_revert_to;       /* The latest focus revert to field  */
Packit b099d7
    Widget       selected_widget;       /* Which widget,object_type,instance */
Packit b099d7
    int          selected_object_type;  /* ...that the pointer was over when */
Packit b099d7
    int          selected_instance;     /* ...the button was last pressed.   */
Packit b099d7
    unsigned int mod_button_state;      /* Which modkeys & buttons are down  */
Packit b099d7
} XisStateRecord;
Packit b099d7
Packit b099d7
xisGLOBAL XisStateRecord xisState;
Packit b099d7
Packit b099d7
/* Patch for List and Text tests on r3 server */
Packit b099d7
Packit b099d7
xisGLOBAL int xisUseCurrentTime xisINIT(0);
Packit b099d7
Packit b099d7
#include "xis_protos.h"
Packit b099d7
Packit b099d7
#endif /* xislib.h */