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