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