b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Copyright 2002 Red Hat Inc., Durham, North Carolina.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * All Rights Reserved.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Permission is hereby granted, free of charge, to any person obtaining
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * a copy of this software and associated documentation files (the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * "Software"), to deal in the Software without restriction, including
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * without limitation on the rights to use, copy, modify, merge,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * publish, distribute, sublicense, and/or sell copies of the Software,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * and to permit persons to whom the Software is furnished to do so,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * subject to the following conditions:
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * The above copyright notice and this permission notice (including the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * next paragraph) shall be included in all copies or substantial
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * portions of the Software.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * SOFTWARE.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Rickard E. (Rik) Faith <faith@redhat.com>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Interface for low-level input support. \see dmxinputinit.c */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define DMX_MAP_ENTRIES 16 /* Must be a power of 2 */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef enum {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef enum {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef enum {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef enum {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/** Stores information from low-level device that is used to initialize
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * the device at the dix level. */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int keyboard; /**< Non-zero if the device is a keyboard */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbComponentNamesRec names; /**< XKB component names */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int freenames; /**< Non-zero if names should be free'd */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int force; /**< Do not allow command line override */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int buttonClass; /**< Non-zero if buttons are present */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char map[DMX_MAX_BUTTONS]; /**< Button map */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * present */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int minres[DMX_MAX_AXES]; /**< Minimum resolutions */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int maxres[DMX_MAX_AXES]; /**< Maximum resolutions */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * cause focus */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * causes proximity events */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * keyboard feedback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * pointer feedback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * LED indicators */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int belFeedbackClass; /**< Non-zero if device has a
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * integer feedback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * string feedback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int maxSymbolsSupported; /**< Maximum symbols supported */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef pointer (*dmxCreatePrivateProcPtr)(DeviceIntPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxGetInfoProcPtr)(DevicePtr, DMXLocalInitInfoPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxUpdatePositionProcPtr)(pointer, int x, int y);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxVTPreSwitchProcPtr)(pointer); /* Turn I/O Off */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxVTPostSwitchProcPtr)(pointer); /* Turn I/O On */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxEnqueueProcPtr)(DevicePtr, int type, int detail,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef int (*dmxCheckSpecialProcPtr)(DevicePtr, KeySym keySym);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxUpdateInfoProcPtr)(pointer, DMXUpdateType, WindowPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef int (*dmxFunctionsProcPtr)(pointer, DMXFunctionType);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxKBCtrlProcPtr)(DevicePtr, KeybdCtrl *ctrl);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxMCtrlProcPtr)(DevicePtr, PtrCtrl *ctrl);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*dmxKBBellProcPtr)(DevicePtr, int percent,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/** Stores a mapping between the device id on the remote X server and
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * the id on the DMX server */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int remote; /**< Event number on remote X server */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int server; /**< Event number (unbiased) on DMX server */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/** This is the device-independent structure used by the low-level input
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * routines. The contents are not exposed to top-level .c files (except
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * dmxextensions.c). \see dmxinput.h \see dmxextensions.c */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DMXLocalInputExtType extType; /**< Extended device type */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * structs are bound to the same
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * device */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync /* Low-level (e.g., keyboard/mouse drivers) */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxCreatePrivateProcPtr create_private; /**< Create
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * device-dependent
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * private */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxDestroyPrivateProcPtr destroy_private; /**< Destroy
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * device-dependent
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * private */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * (during a
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * reconfiguration) */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxLateReInitProcPtr latereinit; /**< Reinitialize a device
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * (called very late
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * reconfiguration) */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxGetInfoProcPtr get_info; /**< Get device information */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxUpdatePositionProcPtr update_position; /**< Called when another
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * device updates the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * cursor position */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxVTPreSwitchProcPtr vt_pre_switch; /**< Called before a VT switch */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxVTPostSwitchProcPtr vt_post_switch; /**< Called after a VT switch */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxVTSwitchProcPtr vt_switch; /**< Causes a VT switch */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxCollectEventsProcPtr collect_events; /**< Collect and enqueue
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * events from the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxProcessInputProcPtr process_input; /**< Process event (from
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * queue) */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync dmxUpdateInfoProcPtr update_info; /**< Update window layout
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * information */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * for XInput in
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned long *history; /**< XInput motion history */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync /* for XInput ChangePointerDevice */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned long,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned long,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DMXEventMap map[DMX_MAP_ENTRIES]; /**< XInput device id map */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * optimization */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * if any */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * side, if any */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern DMXLocalInputInfoPtr dmxLocalCorePointer, dmxLocalCoreKeyboard;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void dmxLocalInitInput(DMXInputInfo *dmxInput);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern DMXLocalInputInfoPtr dmxInputCopyLocal(DMXInputInfo *dmxInput,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void dmxChangePointerControl(DeviceIntPtr pDevice, PtrCtrl *ctrl);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void dmxKeyboardKbdCtrlProc(DeviceIntPtr pDevice, KeybdCtrl *ctrl);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void dmxKeyboardBellProc(int percent, DeviceIntPtr pDevice,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern int dmxInputExtensionErrorHandler(Display *dsp, char *name,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void dmxInputDetachAll(DMXScreenInfo *dmxScreen);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern int dmxInputAttachConsole(const char *name, int isCore,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern int dmxInputAttachBackend(int physicalScreen, int isCore,