cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Copyright 2002,2003 Red Hat Inc., Durham, North Carolina.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * All Rights Reserved.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Permission is hereby granted, free of charge, to any person obtaining
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * a copy of this software and associated documentation files (the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * "Software"), to deal in the Software without restriction, including
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * without limitation on the rights to use, copy, modify, merge,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * publish, distribute, sublicense, and/or sell copies of the Software,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * and to permit persons to whom the Software is furnished to do so,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * subject to the following conditions:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * The above copyright notice and this permission notice (including the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * next paragraph) shall be included in all copies or substantial
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Authors:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Rickard E. (Rik) Faith <faith@redhat.com>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** \file
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Interface to functions used by backend and console input devices.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * \see dmxcommon.c \see dmxbackend.c \see dmxconsole.c */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef _DMXCOMMON_H_
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define _DMXCOMMON_H_
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_COMMON_OTHER \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Display *display; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Window window; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXScreenInfo *be; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXLocalInputInfoPtr dmxLocal; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int initPointerX; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int initPointerY; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync long eventMask; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync KeybdCtrl kctrl; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PtrCtrl mctrl; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int kctrlset; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int mctrlset; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync KeybdCtrl savedKctrl; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XModifierKeymap *savedModMap; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int stateSaved
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_COMMON_XKB \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_COMMON_OTHER; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XkbDescPtr xkb; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XkbIndicatorRec savedIndicators
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_COMMON_PRIVATE \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_COMMON_XKB; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XDevice *xi
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETONLYPRIVFROMPRIVATE \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync myPrivate *priv = private
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETPRIVFROMPRIVATE \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GETONLYPRIVFROMPRIVATE; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXInputInfo *dmxInput = &dmxInputs[priv->dmxLocal->inputIdx]
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETDMXLOCALFROMPDEVICE \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DevicePtr pDev = &pDevice->public; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXLocalInputInfoPtr dmxLocal = pDev->devicePrivate
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETDMXINPUTFROMPRIV \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXInputInfo *dmxInput = &dmxInputs[priv->dmxLocal->inputIdx]
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETDMXINPUTFROMPDEVICE \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GETDMXLOCALFROMPDEVICE; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx]
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETDMXLOCALFROMPDEV \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXLocalInputInfoPtr dmxLocal = pDev->devicePrivate
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETDMXINPUTFROMPDEV \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GETDMXLOCALFROMPDEV; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx]
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GETPRIVFROMPDEV \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GETDMXLOCALFROMPDEV; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync myPrivate *priv = dmxLocal->private
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_KEYBOARD_EVENT_MASK \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (KeyPressMask | KeyReleaseMask | KeymapStateMask)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_POINTER_EVENT_MASK \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (ButtonPressMask | ButtonReleaseMask | PointerMotionMask)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonKbdGetMap(DevicePtr pDev,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync KeySymsPtr pKeySyms, CARD8 *pModMap);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonKbdCtrl(DevicePtr pDev, KeybdCtrl *ctrl);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonKbdBell(DevicePtr pDev, int percent,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int volume, int pitch, int duration);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxCommonKbdOn(DevicePtr pDev);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonKbdOff(DevicePtr pDev);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonMouGetMap(DevicePtr pDev,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned char *map, int *nButtons);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonMouCtrl(DevicePtr pDev, PtrCtrl *ctrl);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxCommonMouOn(DevicePtr pDev);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonMouOff(DevicePtr pDev);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxFindPointerScreen(int x, int y);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxCommonOthOn(DevicePtr pDev);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonOthOff(DevicePtr pDev);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonOthGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* helper functions */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern pointer dmxCommonCopyPrivate(DeviceIntPtr pDevice);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonSaveState(pointer private);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxCommonRestoreState(pointer private);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif