a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/*
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Copyright 2002 Red Hat Inc., Durham, North Carolina.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * All Rights Reserved.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Permission is hereby granted, free of charge, to any person obtaining
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * a copy of this software and associated documentation files (the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * "Software"), to deal in the Software without restriction, including
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * without limitation on the rights to use, copy, modify, merge,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * publish, distribute, sublicense, and/or sell copies of the Software,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * and to permit persons to whom the Software is furnished to do so,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * subject to the following conditions:
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * The above copyright notice and this permission notice (including the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * next paragraph) shall be included in all copies or substantial
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * portions of the Software.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * SOFTWARE.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/*
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Authors:
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Rickard E. (Rik) Faith <faith@redhat.com>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/** \file
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Interface for low-level input support. \see dmxinputinit.c */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#ifndef _DMXINPUTINIT_H_
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define _DMXINPUTINIT_H_
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#include "dmx.h"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#include "dmxinput.h"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#include "dmxlog.h"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_LOCAL_DEFAULT_KEYBOARD "kbd"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_LOCAL_DEFAULT_POINTER "ps2"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_MAX_BUTTONS 256
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_MOTION_SIZE 256
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_MAX_VALUATORS 32
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_MAX_AXES 32
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_MAX_XINPUT_EVENT_TYPES 100
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_MAP_ENTRIES 16 /* Must be a power of 2 */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DMX_MAP_MASK (DMX_MAP_ENTRIES - 1)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef enum {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_FUNCTION_GRAB,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_FUNCTION_TERMINATE,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_FUNCTION_FINE
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} DMXFunctionType;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef enum {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_HIGHLEVEL,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_KEYBOARD,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_MOUSE,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_OTHER
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} DMXLocalInputType;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef enum {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_TYPE_LOCAL,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_TYPE_CONSOLE,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_TYPE_BACKEND,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_LOCAL_TYPE_COMMON
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} DMXLocalInputExtType;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef enum {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_RELATIVE,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_ABSOLUTE,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMX_ABSOLUTE_CONFINED
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} DMXMotionType;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/** Stores information from low-level device that is used to initialize
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * the device at the dix level. */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _DMXLocalInitInfo {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int keyboard; /**< Non-zero if the device is a keyboard */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int keyClass; /**< Non-zero if keys are present */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync KeySymsRec keySyms; /**< Key symbols */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int freemap; /**< If non-zero, free keySyms.map */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync CARD8 modMap[MAP_LENGTH]; /**< Modifier map */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync XkbDescPtr xkb; /**< XKB description */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync XkbComponentNamesRec names; /**< XKB component names */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int freenames; /**< Non-zero if names should be free'd */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int force; /**< Do not allow command line override */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int buttonClass; /**< Non-zero if buttons are present */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int numButtons; /**< Number of buttons */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync unsigned char map[DMX_MAX_BUTTONS]; /**< Button map */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int valuatorClass; /**< Non-zero if valuators are
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * present */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int numRelAxes; /**< Number of relative axes */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int numAbsAxes; /**< Number of absolute axes */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int minval[DMX_MAX_AXES]; /**< Minimum values */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int maxval[DMX_MAX_AXES]; /**< Maximum values */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int res[DMX_MAX_AXES]; /**< Resolution */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int minres[DMX_MAX_AXES]; /**< Minimum resolutions */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int maxres[DMX_MAX_AXES]; /**< Maximum resolutions */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int focusClass; /**< Non-zero if device can
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * cause focus */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int proximityClass; /**< Non-zero if device
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * causes proximity events */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int kbdFeedbackClass; /**< Non-zero if device has
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * keyboard feedback */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int ptrFeedbackClass; /**< Non-zero if device has
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * pointer feedback */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int ledFeedbackClass; /**< Non-zero if device has
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * LED indicators */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int belFeedbackClass; /**< Non-zero if device has a
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * bell */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int intFeedbackClass; /**< Non-zero if device has
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * integer feedback */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int strFeedbackClass; /**< Non-zero if device has
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * string feedback */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int maxSymbols; /**< Maximum symbols */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int maxSymbolsSupported; /**< Maximum symbols supported */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync KeySym *symbols; /**< Key symbols */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} DMXLocalInitInfo, *DMXLocalInitInfoPtr;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void *(*dmxCreatePrivateProcPtr) (DeviceIntPtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxDestroyPrivateProcPtr) (void *);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxInitProcPtr) (DevicePtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxReInitProcPtr) (DevicePtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxLateReInitProcPtr) (DevicePtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxGetInfoProcPtr) (DevicePtr, DMXLocalInitInfoPtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef int (*dmxOnProcPtr) (DevicePtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxOffProcPtr) (DevicePtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxUpdatePositionProcPtr) (void *, int x, int y);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxVTPreSwitchProcPtr) (void *); /* Turn I/O Off */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxVTPostSwitchProcPtr) (void *); /* Turn I/O On */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxVTSwitchReturnProcPtr) (void *);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef int (*dmxVTSwitchProcPtr) (void *, int vt,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxVTSwitchReturnProcPtr, void *);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxMotionProcPtr) (DevicePtr,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int *valuators,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int firstAxis,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int axesCount,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMXMotionType type, DMXBlockType block);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxEnqueueProcPtr) (DevicePtr, int type, int detail,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync KeySym keySym, XEvent * e,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMXBlockType block);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef int (*dmxCheckSpecialProcPtr) (DevicePtr, KeySym keySym);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxCollectEventsProcPtr) (DevicePtr,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxMotionProcPtr,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxEnqueueProcPtr,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxCheckSpecialProcPtr, DMXBlockType);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxProcessInputProcPtr) (void *);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxUpdateInfoProcPtr) (void *, DMXUpdateType, WindowPtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef int (*dmxFunctionsProcPtr) (void *, DMXFunctionType);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxKBCtrlProcPtr) (DevicePtr, KeybdCtrl * ctrl);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxMCtrlProcPtr) (DevicePtr, PtrCtrl * ctrl);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*dmxKBBellProcPtr) (DevicePtr, int percent,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int volume, int pitch, int duration);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/** Stores a mapping between the device id on the remote X server and
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * the id on the DMX server */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _DMXEventMap {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int remote; /**< Event number on remote X server */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int server; /**< Event number (unbiased) on DMX server */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} DMXEventMap;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/** This is the device-independent structure used by the low-level input
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * routines. The contents are not exposed to top-level .c files (except
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * dmxextensions.c). \see dmxinput.h \see dmxextensions.c */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _DMXLocalInputInfo {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync const char *name; /**< Device name */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMXLocalInputType type; /**< Device type */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMXLocalInputExtType extType; /**< Extended device type */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int binding; /**< Count of how many consecutive
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * structs are bound to the same
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * device */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync /* Low-level (e.g., keyboard/mouse drivers) */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxCreatePrivateProcPtr create_private; /**< Create
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * device-dependent
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * private */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxDestroyPrivateProcPtr destroy_private; /**< Destroy
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * device-dependent
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * private */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxInitProcPtr init; /**< Initialize device */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxReInitProcPtr reinit; /**< Reinitialize device
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * (during a
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * reconfiguration) */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxLateReInitProcPtr latereinit; /**< Reinitialize a device
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * (called very late
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * during a
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * reconfiguration) */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxGetInfoProcPtr get_info; /**< Get device information */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxOnProcPtr on; /**< Turn device on */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxOffProcPtr off; /**< Turn device off */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxUpdatePositionProcPtr update_position; /**< Called when another
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * device updates the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * cursor position */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxVTPreSwitchProcPtr vt_pre_switch; /**< Called before a VT switch */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxVTPostSwitchProcPtr vt_post_switch; /**< Called after a VT switch */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxVTSwitchProcPtr vt_switch; /**< Causes a VT switch */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxCollectEventsProcPtr collect_events; /**< Collect and enqueue
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * events from the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * device*/
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxProcessInputProcPtr process_input; /**< Process event (from
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * queue) */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxFunctionsProcPtr functions;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxUpdateInfoProcPtr update_info; /**< Update window layout
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * information */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxMCtrlProcPtr mCtrl; /**< Pointer control */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxKBCtrlProcPtr kCtrl; /**< Keyboard control */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dmxKBBellProcPtr kBell; /**< Bell control */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *private; /**< Device-dependent private */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int isCore; /**< Is a DMX core device */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int sendsCore; /**< Sends DMX core events */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync KeybdCtrl kctrl; /**< Keyboard control */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync PtrCtrl mctrl; /**< Pointer control */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DeviceIntPtr pDevice; /**< X-level device */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int inputIdx; /**< High-level index */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int lastX, lastY; /**< Last known position;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * for XInput in
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * dmxevents.c */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int head; /**< XInput motion history
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * head */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int tail; /**< XInput motion history
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * tail */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync unsigned long *history; /**< XInput motion history */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int *valuators; /**< Cache of previous values */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync /* for XInput ChangePointerDevice */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int (*savedMotionProc) (DeviceIntPtr,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync xTimecoord *,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync unsigned long, unsigned long, ScreenPtr);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int savedMotionEvents; /**< Saved motion events */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int savedSendsCore; /**< Saved sends-core flag */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMXEventMap map[DMX_MAP_ENTRIES]; /**< XInput device id map */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int mapOptimize; /**< XInput device id
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * map
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * optimization */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync long deviceId; /**< device id on remote side,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * if any */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync const char *deviceName; /**< devive name on remote
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * side, if any */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} DMXLocalInputInfoRec;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern DMXLocalInputInfoPtr dmxLocalCorePointer, dmxLocalCoreKeyboard;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern void dmxLocalInitInput(DMXInputInfo * dmxInput);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern DMXLocalInputInfoPtr dmxInputCopyLocal(DMXInputInfo * dmxInput,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DMXLocalInputInfoPtr s);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern void dmxChangePointerControl(DeviceIntPtr pDevice, PtrCtrl * ctrl);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern void dmxKeyboardKbdCtrlProc(DeviceIntPtr pDevice, KeybdCtrl * ctrl);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern void dmxKeyboardBellProc(int percent, DeviceIntPtr pDevice,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *ctrl, int unknown);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern int dmxInputExtensionErrorHandler(Display * dsp, _Xconst char *name,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync _Xconst char *reason);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern int dmxInputDetach(DMXInputInfo * dmxInput);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern void dmxInputDetachAll(DMXScreenInfo * dmxScreen);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern int dmxInputDetachId(int id);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern DMXInputInfo *dmxInputLocateId(int id);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern int dmxInputAttachConsole(const char *name, int isCore, int *id);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern int dmxInputAttachBackend(int physicalScreen, int isCore, int *id);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#endif