cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Copyright 2002 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 for low-level input support. \see dmxinputinit.c */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef _DMXINPUTINIT_H_
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define _DMXINPUTINIT_H_
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "dmx.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "dmxinput.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "dmxlog.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_LOCAL_DEFAULT_KEYBOARD "kbd"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_LOCAL_DEFAULT_POINTER "ps2"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_MAX_BUTTONS 256
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_MOTION_SIZE 256
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_MAX_VALUATORS 32
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_MAX_AXES 32
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_MAX_XINPUT_EVENT_TYPES 100
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_MAP_ENTRIES 16 /* Must be a power of 2 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_MAP_MASK (DMX_MAP_ENTRIES - 1)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef enum {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_FUNCTION_GRAB,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_FUNCTION_TERMINATE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_FUNCTION_FINE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} DMXFunctionType;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef enum {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_HIGHLEVEL,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_KEYBOARD,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_MOUSE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_OTHER
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} DMXLocalInputType;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef enum {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_TYPE_LOCAL,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_TYPE_CONSOLE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_TYPE_BACKEND,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_LOCAL_TYPE_COMMON
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} DMXLocalInputExtType;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef enum {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_RELATIVE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_ABSOLUTE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMX_ABSOLUTE_CONFINED
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} DMXMotionType;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** Stores information from low-level device that is used to initialize
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the device at the dix level. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _DMXLocalInitInfo {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int keyboard; /**< Non-zero if the device is a keyboard */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int keyClass; /**< Non-zero if keys are present */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync KeySymsRec keySyms; /**< Key symbols */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int freemap; /**< If non-zero, free keySyms.map */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CARD8 modMap[MAP_LENGTH]; /**< Modifier map */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XkbDescPtr xkb; /**< XKB description */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XkbComponentNamesRec names; /**< XKB component names */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int freenames; /**< Non-zero if names should be free'd */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int force; /**< Do not allow command line override */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int buttonClass; /**< Non-zero if buttons are present */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int numButtons; /**< Number of buttons */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned char map[DMX_MAX_BUTTONS]; /**< Button map */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int valuatorClass; /**< Non-zero if valuators are
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * present */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int numRelAxes; /**< Number of relative axes */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int numAbsAxes; /**< Number of absolute axes */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int minval[DMX_MAX_AXES]; /**< Minimum values */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int maxval[DMX_MAX_AXES]; /**< Maximum values */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int res[DMX_MAX_AXES]; /**< Resolution */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int minres[DMX_MAX_AXES]; /**< Minimum resolutions */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int maxres[DMX_MAX_AXES]; /**< Maximum resolutions */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int focusClass; /**< Non-zero if device can
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * cause focus */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int proximityClass; /**< Non-zero if device
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * causes proximity events */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int kbdFeedbackClass; /**< Non-zero if device has
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * keyboard feedback */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int ptrFeedbackClass; /**< Non-zero if device has
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * pointer feedback */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int ledFeedbackClass; /**< Non-zero if device has
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * LED indicators */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int belFeedbackClass; /**< Non-zero if device has a
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * bell */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int intFeedbackClass; /**< Non-zero if device has
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * integer feedback */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int strFeedbackClass; /**< Non-zero if device has
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * string feedback */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int maxSymbols; /**< Maximum symbols */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int maxSymbolsSupported; /**< Maximum symbols supported */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync KeySym *symbols; /**< Key symbols */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} DMXLocalInitInfo, *DMXLocalInitInfoPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef pointer (*dmxCreatePrivateProcPtr)(DeviceIntPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxDestroyPrivateProcPtr)(pointer);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxInitProcPtr)(DevicePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxReInitProcPtr)(DevicePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxLateReInitProcPtr)(DevicePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxGetInfoProcPtr)(DevicePtr, DMXLocalInitInfoPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef int (*dmxOnProcPtr)(DevicePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxOffProcPtr)(DevicePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxUpdatePositionProcPtr)(pointer, int x, int y);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxVTPreSwitchProcPtr)(pointer); /* Turn I/O Off */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxVTPostSwitchProcPtr)(pointer); /* Turn I/O On */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxVTSwitchReturnProcPtr)(pointer);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef int (*dmxVTSwitchProcPtr)(pointer, int vt,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxVTSwitchReturnProcPtr, pointer);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxMotionProcPtr)(DevicePtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *valuators,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int firstAxis,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int axesCount,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXMotionType type,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXBlockType block);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxEnqueueProcPtr)(DevicePtr, int type, int detail,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync KeySym keySym, XEvent *e,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXBlockType block);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef int (*dmxCheckSpecialProcPtr)(DevicePtr, KeySym keySym);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxCollectEventsProcPtr)(DevicePtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxMotionProcPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxEnqueueProcPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxCheckSpecialProcPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXBlockType);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxProcessInputProcPtr)(pointer);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxUpdateInfoProcPtr)(pointer, DMXUpdateType, WindowPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef int (*dmxFunctionsProcPtr)(pointer, DMXFunctionType);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxKBCtrlProcPtr)(DevicePtr, KeybdCtrl *ctrl);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxMCtrlProcPtr)(DevicePtr, PtrCtrl *ctrl);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*dmxKBBellProcPtr)(DevicePtr, int percent,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int volume, int pitch, int duration);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** Stores a mapping between the device id on the remote X server and
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the id on the DMX server */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _DMXEventMap {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int remote; /**< Event number on remote X server */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int server; /**< Event number (unbiased) on DMX server */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} DMXEventMap;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** This is the device-independent structure used by the low-level input
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * routines. The contents are not exposed to top-level .c files (except
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * dmxextensions.c). \see dmxinput.h \see dmxextensions.c */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _DMXLocalInputInfo {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync const char *name; /**< Device name */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXLocalInputType type; /**< Device type */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXLocalInputExtType extType; /**< Extended device type */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int binding; /**< Count of how many consecutive
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * structs are bound to the same
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * device */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* Low-level (e.g., keyboard/mouse drivers) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxCreatePrivateProcPtr create_private; /**< Create
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * device-dependent
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * private */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxDestroyPrivateProcPtr destroy_private; /**< Destroy
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * device-dependent
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * private */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxInitProcPtr init; /**< Initialize device */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxReInitProcPtr reinit; /**< Reinitialize device
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * (during a
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * reconfiguration) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxLateReInitProcPtr latereinit; /**< Reinitialize a device
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * (called very late
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * during a
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * reconfiguration) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxGetInfoProcPtr get_info; /**< Get device information */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxOnProcPtr on; /**< Turn device on */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxOffProcPtr off; /**< Turn device off */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxUpdatePositionProcPtr update_position; /**< Called when another
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * device updates the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * cursor position */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxVTPreSwitchProcPtr vt_pre_switch; /**< Called before a VT switch */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxVTPostSwitchProcPtr vt_post_switch; /**< Called after a VT switch */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxVTSwitchProcPtr vt_switch; /**< Causes a VT switch */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxCollectEventsProcPtr collect_events; /**< Collect and enqueue
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * events from the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * device*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxProcessInputProcPtr process_input; /**< Process event (from
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * queue) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxFunctionsProcPtr functions;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxUpdateInfoProcPtr update_info; /**< Update window layout
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * information */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxMCtrlProcPtr mCtrl; /**< Pointer control */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxKBCtrlProcPtr kCtrl; /**< Keyboard control */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dmxKBBellProcPtr kBell; /**< Bell control */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pointer private; /**< Device-dependent private */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int isCore; /**< Is a DMX core device */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int sendsCore; /**< Sends DMX core events */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync KeybdCtrl kctrl; /**< Keyboard control */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PtrCtrl mctrl; /**< Pointer control */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DeviceIntPtr pDevice; /**< X-level device */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int inputIdx; /**< High-level index */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int lastX, lastY; /**< Last known position;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * for XInput in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * dmxevents.c */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int head; /**< XInput motion history
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * head */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int tail; /**< XInput motion history
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * tail */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long *history; /**< XInput motion history */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *valuators; /**< Cache of previous values */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* for XInput ChangePointerDevice */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (*savedMotionProc)(DeviceIntPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync xTimecoord *,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ScreenPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int savedMotionEvents; /**< Saved motion events */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int savedSendsCore; /**< Saved sends-core flag */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXEventMap map[DMX_MAP_ENTRIES]; /**< XInput device id map */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int mapOptimize; /**< XInput device id
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * map
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * optimization */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync long deviceId; /**< device id on remote side,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * if any */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync const char *deviceName; /**< devive name on remote
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * side, if any */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} DMXLocalInputInfoRec;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern DMXLocalInputInfoPtr dmxLocalCorePointer, dmxLocalCoreKeyboard;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxLocalInitInput(DMXInputInfo *dmxInput);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern DMXLocalInputInfoPtr dmxInputCopyLocal(DMXInputInfo *dmxInput,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DMXLocalInputInfoPtr s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxChangePointerControl(DeviceIntPtr pDevice, PtrCtrl *ctrl);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxKeyboardKbdCtrlProc(DeviceIntPtr pDevice, KeybdCtrl *ctrl);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxKeyboardBellProc(int percent, DeviceIntPtr pDevice,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pointer ctrl, int unknown);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxInputExtensionErrorHandler(Display *dsp, _Xconst char *name,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync _Xconst char *reason);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxInputDetach(DMXInputInfo *dmxInput);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern void dmxInputDetachAll(DMXScreenInfo *dmxScreen);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxInputDetachId(int id);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern DMXInputInfo *dmxInputLocateId(int id);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxInputAttachConsole(const char *name, int isCore,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *id);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxInputAttachBackend(int physicalScreen, int isCore,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *id);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif