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 
00036 
00048 #ifndef DMXINPUT_H
00049 #define DMXINPUT_H
00050 
00052 #define DMX_MAX_SIGIO_FDS 4
00053 
00054 struct _DMXInputInfo;
00055 
00057 typedef enum {
00058     DMX_UPDATE_REALIZE,         
00059     DMX_UPDATE_UNREALIZE,       
00060     DMX_UPDATE_RESTACK,         
00061     DMX_UPDATE_COPY,            
00062     DMX_UPDATE_RESIZE,          
00063     DMX_UPDATE_REPARENT         
00064 } DMXUpdateType;
00065 
00066 typedef void (*ProcessInputEventsProc)(struct _DMXInputInfo *);
00067 typedef void (*UpdateWindowInfoProc)(struct _DMXInputInfo *,
00068                                      DMXUpdateType, WindowPtr);
00069 
00071 typedef struct _DMXLocalInputInfo *DMXLocalInputInfoPtr;
00072 
00074 typedef enum {
00075     DMX_NOSIGIO = 0,            
00076     DMX_USESIGIO,               
00079     DMX_ACTIVESIGIO             
00080 } dmxSigioState;
00081 
00085 struct _DMXInputInfo {
00086     const char              *name; 
00089     Bool                    freename; 
00090     Bool                    detached; 
00091     int                     inputIdx; 
00092     int                     scrnIdx;  
00093     Bool                    core;  
00096     Bool                    console; 
00100     Bool                    windows; 
00103     ProcessInputEventsProc  processInputEvents;
00104     UpdateWindowInfoProc    updateWindowInfo;
00105 
00106                                 
00107     dmxSigioState           sigioState;    
00108     int                     sigioFdCount;  
00109     int                     sigioFd[DMX_MAX_SIGIO_FDS];    
00110     Bool                    sigioAdded[DMX_MAX_SIGIO_FDS]; 
00114     int                     vt_switch_pending;
00115 
00117     int                     vt_switched;
00118 
00120     int                     numDevs;
00121 
00126     DMXLocalInputInfoPtr    *devs;
00127 
00128     char                    *keycodes; 
00129     char                    *symbols;  
00130     char                    *geometry; 
00131 };
00132 
00133 extern int                  dmxNumInputs; 
00134 extern DMXInputInfo         *dmxInputs;   
00136 extern void dmxInputInit(DMXInputInfo *dmxInput);
00137 extern void dmxInputReInit(DMXInputInfo *dmxInput);
00138 extern void dmxInputLateReInit(DMXInputInfo *dmxInput);
00139 extern void dmxInputFree(DMXInputInfo *dmxInput);
00140 extern void dmxInputLogDevices(void);
00141 extern void dmxUpdateWindowInfo(DMXUpdateType type, WindowPtr pWindow);
00142 
00143 
00144 extern Bool dmxeqInitialized(void);
00145 extern void dmxeqEnqueue(xEvent *e);
00146 extern void dmxeqSwitchScreen(ScreenPtr pScreen, Bool fromDIX);
00147 
00148 
00149 
00150 typedef enum {
00151     DMX_NO_BLOCK = 0,
00152     DMX_BLOCK    = 1
00153 } DMXBlockType;
00154 
00155 extern void          dmxGetGlobalPosition(int *x, int *y);
00156 extern DMXScreenInfo *dmxFindFirstScreen(int x, int y);
00157 extern void          dmxCoreMotion(int x, int y, int delta,
00158                                    DMXBlockType block);
00159 
00160 
00161 
00162 extern DMXInputInfo *dmxConfigAddInput(const char *name, int core);
00163 #endif