Distributed Multihead X
1.16.4
|
#include "dmxinputinit.h"
#include "dmxevents.h"
#include "dmxconsole.h"
#include "dmxcommon.h"
#include "dmxscrinit.h"
#include "dmxcb.h"
#include "dmxsync.h"
#include "inputstr.h"
#include "input.h"
#include "mipointer.h"
#include "windowstr.h"
Data Structures | |
struct | _myPrivate |
Macros | |
#define | DMX_CONSOLE_DEBUG 0 |
#define | DMX_WINDOW_DEBUG 0 |
#define | CONSOLE_NUM 3 |
#define | CONSOLE_DEN 4 |
#define | DMX_CONSOLE_NAME "DMX Console" |
#define | DMX_RES_NAME "Xdmx" |
#define | DMX_RES_CLASS "XDmx" |
#define | CONSOLE_BG_COLOR "gray75" |
#define | CONSOLE_FG_COLOR "black" |
#define | CONSOLE_SCREEN_BG_COLOR "white" |
#define | CONSOLE_SCREEN_FG_COLOR "black" |
#define | CONSOLE_SCREEN_DET_COLOR "gray75" |
#define | CONSOLE_SCREEN_CUR_COLOR "red" |
#define | DMXDBG0(f) |
#define | DMXDBG1(f, a) |
#define | DMXDBG2(f, a, b) |
#define | DMXDBG3(f, a, b, c) |
#define | DMXDBG4(f, a, b, c, d) |
#define | DMXDBG5(f, a, b, c, d, e) |
#define | DMXDBG6(f, a, b, c, d, e, g) |
#define | DMXDBG7(f, a, b, c, d, e, g, h) |
Typedefs | |
typedef struct _myPrivate | myPrivate |
Functions | |
static int | scalex (myPrivate *priv, int x) |
static int | scaley (myPrivate *priv, int y) |
static int | unscalex (myPrivate *priv, int x) |
static int | unscaley (myPrivate *priv, int y) |
void * | dmxConsoleCreatePrivate (DeviceIntPtr pDevice) |
void | dmxConsoleDestroyPrivate (void *private) |
static void | dmxConsoleDrawFineCursor (myPrivate *priv, XRectangle *rect) |
static void | dmxConsoleDrawWindows (void *private) |
static void | dmxConsoleDraw (myPrivate *priv, int updateCursor, int update) |
static void | dmxConsoleClearCursor (myPrivate *priv, int x, int y, XRectangle *rect) |
static void | dmxConsoleUpdateFineCursor (myPrivate *priv) |
void | dmxConsoleUpdateInfo (void *private, DMXUpdateType type, WindowPtr pWindow) |
static void | dmxConsoleMoveAbsolute (myPrivate *priv, int x, int y, DevicePtr pDev, dmxMotionProcPtr motion, DMXBlockType block) |
static void | dmxConsoleMoveRelative (myPrivate *priv, int x, int y, DevicePtr pDev, dmxMotionProcPtr motion, DMXBlockType block) |
void | dmxConsoleUpdatePosition (void *private, int x, int y) |
void | dmxConsoleCollectEvents (DevicePtr pDev, dmxMotionProcPtr motion, dmxEnqueueProcPtr enqueue, dmxCheckSpecialProcPtr checkspecial, DMXBlockType block) |
static void | dmxCloseConsole (myPrivate *priv) |
static Bool | dmxCloseConsoleScreen (ScreenPtr pScreen) |
static Cursor | dmxConsoleCreateEmptyCursor (myPrivate *priv) |
static void | dmxConsoleComputeWidthHeight (myPrivate *priv, int *width, int *height, double *xScale, double *yScale, int *consWidth, int *consHeight) |
void | dmxConsoleReInit (DevicePtr pDev) |
void | dmxConsoleInit (DevicePtr pDev) |
void | dmxConsoleMouGetInfo (DevicePtr pDev, DMXLocalInitInfoPtr info) |
void | dmxConsoleKbdGetInfo (DevicePtr pDev, DMXLocalInitInfoPtr info) |
int | dmxConsoleFunctions (void *private, DMXFunctionType function) |
static void | dmxDump (void) |
void | dmxConsoleCapture (DMXInputInfo *dmxInput) |
void | dmxConsoleUncapture (DMXInputInfo *dmxInput) |
This file implements the console input devices.
#define CONSOLE_BG_COLOR "gray75" |
Referenced by dmxConsoleInit().
#define CONSOLE_DEN 4 |
Referenced by dmxConsoleComputeWidthHeight().
#define CONSOLE_FG_COLOR "black" |
#define CONSOLE_NUM 3 |
Referenced by dmxConsoleComputeWidthHeight().
#define CONSOLE_SCREEN_BG_COLOR "white" |
Referenced by dmxConsoleInit().
#define CONSOLE_SCREEN_CUR_COLOR "red" |
Referenced by dmxConsoleInit().
#define CONSOLE_SCREEN_DET_COLOR "gray75" |
Referenced by dmxConsoleInit().
#define CONSOLE_SCREEN_FG_COLOR "black" |
Referenced by dmxConsoleInit().
#define DMX_CONSOLE_DEBUG 0 |
#define DMX_CONSOLE_NAME "DMX Console" |
Referenced by dmxConsoleInit().
#define DMX_RES_CLASS "XDmx" |
Referenced by dmxConsoleInit().
#define DMX_RES_NAME "Xdmx" |
Referenced by dmxConsoleInit().
#define DMX_WINDOW_DEBUG 0 |
#define DMXDBG0 | ( | f | ) |
Referenced by dmxConsoleCapture(), and dmxConsoleUncapture().
#define DMXDBG1 | ( | f, | |
a | |||
) |
#define DMXDBG2 | ( | f, | |
a, | |||
b | |||
) |
Referenced by dmxConsoleCollectEvents(), dmxConsoleUpdateFineCursor(), and dmxConsoleUpdatePosition().
#define DMXDBG3 | ( | f, | |
a, | |||
b, | |||
c | |||
) |
Referenced by dmxConsoleCapture().
#define DMXDBG4 | ( | f, | |
a, | |||
b, | |||
c, | |||
d | |||
) |
Referenced by dmxConsoleCollectEvents(), dmxConsoleUpdateFineCursor(), and dmxDump().
#define DMXDBG5 | ( | f, | |
a, | |||
b, | |||
c, | |||
d, | |||
e | |||
) |
Referenced by dmxConsoleCollectEvents().
#define DMXDBG6 | ( | f, | |
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
g | |||
) |
#define DMXDBG7 | ( | f, | |
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
g, | |||
h | |||
) |
typedef struct _myPrivate myPrivate |
|
static |
References _DMXInputInfo::console, dmxCommonRestoreState(), _myPrivate::dmxInput, _myPrivate::gc, _myPrivate::gcCur, _myPrivate::gcDet, _myPrivate::gcRev, and GETDMXINPUTFROMPRIV.
Referenced by dmxCloseConsoleScreen().
|
static |
References _myPrivate::CloseScreen, DMX_UNWRAP, dmxCloseConsole(), dmxScreenPrivateKey, and _myPrivate::next.
Referenced by dmxConsoleInit().
void dmxConsoleCapture | ( | DMXInputInfo * | dmxInput | ) |
This routine is used to warp the pointer into the console window from anywhere on the screen. It is used when backend and console input are both being taken from the same X display.
References _myPrivate::captured, _myPrivate::curX, _myPrivate::curY, _DMXInputInfo::devs, DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_CONSOLE, dmxConsoleUpdateFineCursor(), DMXDBG0, DMXDBG3, dmxDump(), dmxSync(), _DMXLocalInputInfo::extType, _myPrivate::fine, _DMXInputInfo::name, _DMXInputInfo::numDevs, _DMXLocalInputInfo::private, and _DMXLocalInputInfo::type.
Referenced by dmxBackendUpdatePosition().
|
static |
References dmxConsoleDraw(), _myPrivate::gc, _myPrivate::gcDet, _myPrivate::gcRev, scalex(), and scaley().
Referenced by dmxConsoleFunctions(), and dmxConsoleUpdateFineCursor().
void dmxConsoleCollectEvents | ( | DevicePtr | pDev, |
dmxMotionProcPtr | motion, | ||
dmxEnqueueProcPtr | enqueue, | ||
dmxCheckSpecialProcPtr | checkspecial, | ||
DMXBlockType | block | ||
) |
Collect all pending events from the console's display. Plase these events on the server event queue using the motion and enqueue routines. The checkspecial routine is used to check for special keys that need handling. block tells if signals should be blocked when updating the event queue.
References dmxCommonRestoreState(), dmxCommonSaveState(), dmxConsoleDraw(), dmxConsoleMoveAbsolute(), dmxConsoleMoveRelative(), dmxConsoleUncapture(), DMXDBG2, DMXDBG4, DMXDBG5, DMXDBG6, _myPrivate::dmxInput, GETDMXINPUTFROMPRIV, GETPRIVFROMPDEV, _myPrivate::height, and _myPrivate::width.
|
static |
References CONSOLE_DEN, CONSOLE_NUM, dmxGlobalHeight, dmxGlobalWidth, dmxNumScreens, scalex(), and scaley().
Referenced by dmxConsoleInit(), and dmxConsoleReInit().
|
static |
References dmxFatal, dmxLog(), and _myPrivate::pixmap.
Referenced by dmxConsoleInit().
void* dmxConsoleCreatePrivate | ( | DeviceIntPtr | pDevice | ) |
Create the private area for pDevice.
References GETDMXLOCALFROMPDEVICE.
void dmxConsoleDestroyPrivate | ( | void * | private | ) |
If private is non-NULL, free its associated memory.
|
static |
References _DMXScreenInfo::beDisplay, _myPrivate::consHeight, _myPrivate::consWidth, dmxConsoleDrawFineCursor(), dmxConsoleDrawWindows(), _myPrivate::dmxInput, dmxNumScreens, dmxScreens, _myPrivate::fine, _myPrivate::gc, _myPrivate::gcDet, _myPrivate::gcRev, GETDMXINPUTFROMPRIV, _myPrivate::height, _myPrivate::pixmap, scalex(), scaley(), _myPrivate::width, and _DMXInputInfo::windows.
Referenced by dmxConsoleClearCursor(), dmxConsoleCollectEvents(), dmxConsoleInit(), dmxConsoleReInit(), dmxConsoleUpdateInfo(), and dmxConsoleUpdatePosition().
|
static |
References _myPrivate::gcCur, _myPrivate::globalX, _myPrivate::globalY, _myPrivate::grabbed, _myPrivate::pixmap, scalex(), and scaley().
Referenced by dmxConsoleDraw(), and dmxConsoleUpdateFineCursor().
|
static |
References dmxDebug, dmxLog(), dmxNumScreens, GETONLYPRIVFROMPRIVATE, scalex(), and scaley().
Referenced by dmxConsoleDraw().
int dmxConsoleFunctions | ( | void * | private, |
DMXFunctionType | function | ||
) |
Handle special console-only keys.
References DMX_FUNCTION_FINE, DMX_FUNCTION_GRAB, DMX_FUNCTION_TERMINATE, dmxConsoleClearCursor(), dmxConsoleUpdateFineCursor(), dmxError, dmxLog(), GETONLYPRIVFROMPRIVATE, scalex(), and scaley().
void dmxConsoleInit | ( | DevicePtr | pDev | ) |
Initialized the console device described by pDev.
References _myPrivate::CloseScreen, CONSOLE_BG_COLOR, CONSOLE_SCREEN_BG_COLOR, CONSOLE_SCREEN_CUR_COLOR, CONSOLE_SCREEN_DET_COLOR, CONSOLE_SCREEN_FG_COLOR, DMX_CONSOLE_NAME, DMX_LOCAL_KEYBOARD, DMX_LOCAL_MOUSE, DMX_RES_CLASS, DMX_RES_NAME, DMX_WRAP, dmxCloseConsoleScreen(), dmxConsoleComputeWidthHeight(), dmxConsoleCreateEmptyCursor(), dmxConsoleDraw(), dmxFatal, _myPrivate::dmxInput, dmxInputs, dmxLog(), dmxScreenPrivateKey, GETPRIVFROMPDEV, _myPrivate::mask, _DMXInputInfo::name, scalex(), and scaley().
void dmxConsoleKbdGetInfo | ( | DevicePtr | pDev, |
DMXLocalInitInfoPtr | info | ||
) |
Fill in the info structure for the specified pDev. Only used for keyboard.
References dmxCommonKbdGetInfo(), dmxCommonKbdGetMap(), _DMXLocalInitInfo::focusClass, _DMXLocalInitInfo::freemap, _DMXLocalInitInfo::kbdFeedbackClass, _DMXLocalInitInfo::keyboard, _DMXLocalInitInfo::keyClass, _DMXLocalInitInfo::keySyms, and _DMXLocalInitInfo::modMap.
void dmxConsoleMouGetInfo | ( | DevicePtr | pDev, |
DMXLocalInitInfoPtr | info | ||
) |
Fill in the info structure for the specified pDev. Only used for pointers.
References _DMXLocalInitInfo::buttonClass, dmxCommonMouGetMap(), GETPRIVFROMPDEV, _DMXLocalInitInfo::map, _DMXLocalInitInfo::maxres, _DMXLocalInitInfo::maxval, _DMXLocalInitInfo::minres, _DMXLocalInitInfo::minval, _DMXLocalInitInfo::numButtons, _DMXLocalInitInfo::numRelAxes, _DMXLocalInitInfo::ptrFeedbackClass, _DMXLocalInitInfo::res, and _DMXLocalInitInfo::valuatorClass.
|
static |
References _myPrivate::curX, _myPrivate::curY, DMX_ABSOLUTE_CONFINED, DMXDBG6, unscalex(), and unscaley().
Referenced by dmxConsoleCollectEvents().
|
static |
References DMX_RELATIVE, _myPrivate::lastX, and _myPrivate::lastY.
Referenced by dmxConsoleCollectEvents().
void dmxConsoleReInit | ( | DevicePtr | pDev | ) |
Re-initialized the console device described by pDev (after a reconfig).
References dmxConsoleComputeWidthHeight(), dmxConsoleDraw(), and GETPRIVFROMPDEV.
void dmxConsoleUncapture | ( | DMXInputInfo * | dmxInput | ) |
Undo the capture that was done by dmxConsoleCapture.
References _myPrivate::captured, _DMXInputInfo::devs, DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_CONSOLE, DMXDBG0, dmxSync(), _DMXLocalInputInfo::extType, _DMXInputInfo::numDevs, _DMXLocalInputInfo::private, and _DMXLocalInputInfo::type.
Referenced by dmxBackendUpdatePosition(), and dmxConsoleCollectEvents().
|
static |
References _myPrivate::consHeight, _myPrivate::consWidth, dmxConsoleClearCursor(), dmxConsoleDrawFineCursor(), DMXDBG2, DMXDBG4, DMXDBG6, dmxEventName(), dmxGetGlobalPosition(), dmxInfo, dmxLog(), _myPrivate::gc, _myPrivate::globalX, _myPrivate::globalY, _myPrivate::height, _myPrivate::lastX, _myPrivate::lastY, _myPrivate::pixmap, scalex(), scaley(), and _myPrivate::width.
Referenced by dmxConsoleCapture(), dmxConsoleFunctions(), and dmxConsoleUpdatePosition().
void dmxConsoleUpdateInfo | ( | void * | private, |
DMXUpdateType | type, | ||
WindowPtr | pWindow | ||
) |
Whenever the window layout (size, position, stacking order) might be changed, this routine is called with the pWindow that changed and the type of change. This routine is called in a conservative fashion: the actual layout of the windows of the screen might not have had any human-visible changes.
References dmxConsoleDraw(), and GETONLYPRIVFROMPRIVATE.
void dmxConsoleUpdatePosition | ( | void * | private, |
int | x, | ||
int | y | ||
) |
This routine gets called from dmxCoreMotion for each motion. This allows the console's notion of the cursor postion to change when another input device actually caused the change.
References dmxConsoleDraw(), dmxConsoleUpdateFineCursor(), DMXDBG2, DMXDBG6, dmxGeneration, GETONLYPRIVFROMPRIVATE, scalex(), and scaley().
|
static |
References _DMXInputInfo::devs, DMXDBG4, dmxEventName(), _myPrivate::dmxInput, dmxInputs, dmxNumInputs, _DMXInputInfo::name, _DMXInputInfo::numDevs, and _DMXLocalInputInfo::private.
Referenced by dmxConsoleCapture().
|
static |
|
static |
|
static |
References _myPrivate::xScale.
Referenced by dmxConsoleMoveAbsolute().
|
static |
References _myPrivate::yScale.
Referenced by dmxConsoleMoveAbsolute().