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