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