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