Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals

# dmxinput.h

Go to the documentation of this file.

    00001 /* $XFree86$ */
    00002 /*
    00003  * Copyright 2001,2002 Red Hat Inc., Durham, North Carolina.
    00004  *
    00005  * All Rights Reserved.
    00006  *
    00007  * Permission is hereby granted, free of charge, to any person obtaining
    00008  * a copy of this software and associated documentation files (the
    00009  * "Software"), to deal in the Software without restriction, including
    00010  * without limitation on the rights to use, copy, modify, merge,
    00011  * publish, distribute, sublicense, and/or sell copies of the Software,
    00012  * and to permit persons to whom the Software is furnished to do so,
    00013  * subject to the following conditions:
    00014  *
    00015  * The above copyright notice and this permission notice (including the
    00016  * next paragraph) shall be included in all copies or substantial
    00017  * portions of the Software.
    00018  *
    00019  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00020  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    00021  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    00022  * NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
    00023  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    00024  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    00025  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    00026  * SOFTWARE.
    00027  */
    00028
    00029 /*
    00030  * Authors:
    00031  *   David H. Dawes <dawes@xfree86.org>
    00032  *   Kevin E. Martin <kem@redhat.com>
    00033  *   Rickard E. (Rik) Faith <faith@redhat.com>
    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                                 /* Local input information */
    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 /* These functions are defined in input/dmxeq.c */
    00144 extern Bool dmxeqInitialized(void);
    00145 extern void dmxeqEnqueue(xEvent *e);
    00146 extern void dmxeqSwitchScreen(ScreenPtr pScreen, Bool fromDIX);
    00147
    00148 /* This type is used in input/dmxevents.c.  Also, these functions are
    00149  * defined in input/dmxevents.c */
    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 /* Support for dynamic addition of inputs.  This functions is defined in
    00161  * config/dmxconfig.c */
    00162 extern DMXInputInfo *dmxConfigAddInput(const char *name, int core);
    00163 #endif /* DMXINPUT_H */