00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00047 #ifndef DMXINPUT_H
00048 #define DMXINPUT_H
00049 
00051 #define DMX_MAX_SIGIO_FDS 4
00052 
00053 struct _DMXInputInfo;
00054 
00056 typedef enum {
00057     DMX_UPDATE_REALIZE,         
00058     DMX_UPDATE_UNREALIZE,       
00059     DMX_UPDATE_RESTACK,         
00060     DMX_UPDATE_COPY,            
00061     DMX_UPDATE_RESIZE,          
00062     DMX_UPDATE_REPARENT         
00063 } DMXUpdateType;
00064 
00065 typedef void (*ProcessInputEventsProc)(struct _DMXInputInfo *);
00066 typedef void (*UpdateWindowInfoProc)(struct _DMXInputInfo *,
00067                                      DMXUpdateType, WindowPtr);
00068 
00070 typedef struct _DMXLocalInputInfo *DMXLocalInputInfoPtr;
00071 
00073 typedef enum {
00074     DMX_NOSIGIO = 0,            
00075     DMX_USESIGIO,               
00078     DMX_ACTIVESIGIO             
00079 } dmxSigioState;
00080 
00084 struct _DMXInputInfo {
00085     const char              *name; 
00088     Bool                    freename; 
00089     Bool                    detached; 
00090     int                     inputIdx; 
00091     int                     scrnIdx;  
00092     Bool                    core;  
00095     Bool                    console; 
00099     Bool                    windows; 
00102     ProcessInputEventsProc  processInputEvents;
00103     UpdateWindowInfoProc    updateWindowInfo;
00104 
00105                                 
00106     dmxSigioState           sigioState;    
00107     int                     sigioFdCount;  
00108     int                     sigioFd[DMX_MAX_SIGIO_FDS];    
00109     Bool                    sigioAdded[DMX_MAX_SIGIO_FDS]; 
00113     int                     vt_switch_pending;
00114 
00116     int                     vt_switched;
00117 
00119     int                     numDevs;
00120 
00125     DMXLocalInputInfoPtr    *devs;
00126 
00127     char                    *keycodes; 
00128     char                    *symbols;  
00129     char                    *geometry; 
00130 };
00131 
00132 extern int                  dmxNumInputs; 
00133 extern DMXInputInfo         *dmxInputs;   
00135 extern void dmxInputInit(DMXInputInfo *dmxInput);
00136 extern void dmxInputReInit(DMXInputInfo *dmxInput);
00137 extern void dmxInputLateReInit(DMXInputInfo *dmxInput);
00138 extern void dmxInputFree(DMXInputInfo *dmxInput);
00139 extern void dmxInputLogDevices(void);
00140 extern void dmxUpdateWindowInfo(DMXUpdateType type, WindowPtr pWindow);
00141 
00142 
00143 extern void dmxeqSwitchScreen(DeviceIntPtr pDev, ScreenPtr pScreen, Bool fromDIX);
00144 
00145 
00146 
00147 typedef enum {
00148     DMX_NO_BLOCK = 0,
00149     DMX_BLOCK    = 1
00150 } DMXBlockType;
00151 
00152 extern void          dmxGetGlobalPosition(int *x, int *y);
00153 extern DMXScreenInfo *dmxFindFirstScreen(int x, int y);
00154 extern void          dmxCoreMotion(DevicePtr pDev, int x, int y, int delta,
00155                                    DMXBlockType block);
00156 
00157 
00158 
00159 extern DMXInputInfo *dmxConfigAddInput(const char *name, int core);
00160 #endif