b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $Xorg: input.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/************************************************************
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncCopyright 1987, 1998 The Open Group
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncthe above copyright notice appear in all copies and that both that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynccopyright notice and this permission notice appear in supporting
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncdocumentation.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncThe above copyright notice and this permission notice shall be included in
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncall copies or substantial portions of the Software.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncin this Software without prior written authorization from The Open Group.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync All Rights Reserved
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncPermission to use, copy, modify, and distribute this software and its
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncdocumentation for any purpose and without fee is hereby granted,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncprovided that the above copyright notice appear in all copies and that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncboth that copyright notice and this permission notice appear in
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncsupporting documentation, and that the name of Digital not be
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncused in advertising or publicity pertaining to distribution of the
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncsoftware without specific, written prior permission.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncSOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync********************************************************/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XFree86: xc/programs/Xserver/include/input.h,v 3.8 2003/04/27 21:31:04 herrb Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef INPUT_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define INPUT_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "misc.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "screenint.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <X11/Xmd.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <X11/Xproto.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "window.h" /* for WindowPtr */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DEVICE_INIT 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DEVICE_ON 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DEVICE_OFF 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DEVICE_CLOSE 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define MAP_LENGTH 256
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NullGrab ((GrabPtr)NULL)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PointerRootWin ((WindowPtr)PointerRoot)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NoneWin ((WindowPtr)None)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NullDevice ((DevicePtr)NULL)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef FollowKeyboard
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FollowKeyboard 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef FollowKeyboardWin
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FollowKeyboardWin ((WindowPtr) FollowKeyboard)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef RevertToFollowKeyboard
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RevertToFollowKeyboard 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned long Leds;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _OtherClients *OtherClientsPtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _InputClients *InputClientsPtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _DeviceIntRec *DeviceIntPtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef int (*DeviceProc)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*what*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*ProcessInputProc)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync xEventPtr /*events*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*count*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef Bool (*DeviceHandleProc)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync void* /*data*/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync );
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*DeviceUnwrapProc)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceHandleProc /*proc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync void* /*data*/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync );
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _DeviceRec {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pointer devicePrivate;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ProcessInputProc processInputProc; /* current */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ProcessInputProc realInputProc; /* deliver */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ProcessInputProc enqueueInputProc; /* enqueue */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool on; /* used by DDX to keep state */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} DeviceRec, *DevicePtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int click, bell, bell_pitch, bell_duration;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool autoRepeat;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char autoRepeats[32];
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Leds leds;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} KeybdCtrl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySym *map;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeyCode minKeyCode,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync maxKeyCode;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int mapWidth;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} KeySymsRec, *KeySymsPtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int num, den, threshold;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} PtrCtrl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int resolution, min_value, max_value;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int integer_displayed;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} IntegerCtrl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int max_symbols, num_symbols_supported;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int num_symbols_displayed;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySym *symbols_supported;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySym *symbols_displayed;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} StringCtrl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int percent, pitch, duration;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} BellCtrl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Leds led_values;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Mask led_mask;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} LedCtrl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int AllocateDevicePrivateIndex(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool AllocateDevicePrivate(DeviceIntPtr device, int index);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void ResetDevicePrivateIndex(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern KeybdCtrl defaultKeyboardControl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern PtrCtrl defaultPointerControl;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#undef AddInputDevice
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern DevicePtr AddInputDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceProc /*deviceProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool /*autoStart*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define AddInputDevice(deviceProc, autoStart) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync _AddInputDevice(deviceProc, autoStart)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern DeviceIntPtr _AddInputDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceProc /*deviceProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool /*autoStart*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool EnableDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool DisableDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int InitAndStartDevices(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void CloseDownDevices(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void RemoveDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*dev*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int NumMotionEvents(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#undef RegisterPointerDevice
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void RegisterPointerDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DevicePtr /*device*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RegisterPointerDevice(device) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync _RegisterPointerDevice(device)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void _RegisterPointerDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#undef RegisterKeyboardDevice
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void RegisterKeyboardDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DevicePtr /*device*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RegisterKeyboardDevice(device) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync _RegisterKeyboardDevice(device)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void _RegisterKeyboardDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern DevicePtr LookupKeyboardDevice(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern DevicePtr LookupPointerDevice(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern DevicePtr LookupDevice(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /* id */);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void QueryMinMaxKeyCodes(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeyCode* /*minCode*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeyCode* /*maxCode*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool SetKeySymsMap(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySymsPtr /*dst*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySymsPtr /*src*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitKeyClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySymsPtr /*pKeySyms*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD8 /*pModifiers*/[]);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitButtonClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*numButtons*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD8* /*map*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef int (*ValuatorMotionProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*pdevice*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync xTimecoord * /*coords*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned long /*start*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned long /*stop*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ScreenPtr /*pScreen*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitValuatorClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*numAxes*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ValuatorMotionProcPtr /* motionProc */,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*numMotionEvents*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*mode*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitFocusClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*BellProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*percent*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pointer /*ctrl*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*KbdCtrlProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeybdCtrl * /*ctrl*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitKbdFeedbackClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync BellProcPtr /*bellProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KbdCtrlProcPtr /*controlProc*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*PtrCtrlProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PtrCtrl * /*ctrl*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitPtrFeedbackClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PtrCtrlProcPtr /*controlProc*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*StringCtrlProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync StringCtrl * /*ctrl*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitStringFeedbackClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync StringCtrlProcPtr /*controlProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*max_symbols*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*num_symbols_supported*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySym* /*symbols*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*BellCtrlProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync BellCtrl * /*ctrl*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitBellFeedbackClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync BellProcPtr /*bellProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync BellCtrlProcPtr /*controlProc*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*LedCtrlProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync LedCtrl * /*ctrl*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitLedFeedbackClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync LedCtrlProcPtr /*controlProc*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*IntegerCtrlProcPtr)(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync IntegerCtrl * /*ctrl*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitIntegerFeedbackClassDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync IntegerCtrlProcPtr /*controlProc*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitPointerDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DevicePtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD8* /*map*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*numButtons*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ValuatorMotionProcPtr /*motionProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PtrCtrlProcPtr /*controlProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*numMotionEvents*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool InitKeyboardDeviceStruct(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DevicePtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KeySymsPtr /*pKeySyms*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD8 /*pModifiers*/[],
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync BellProcPtr /*bellProc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync KbdCtrlProcPtr /*controlProc*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void SendMappingNotify(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned int /*request*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned int /*firstKeyCode*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned int /*count*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ClientPtr /* client */);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool BadDeviceMap(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync BYTE* /*buff*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*length*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned /*low*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned /*high*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XID* /*errval*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool AllModifierKeysAreUp(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD8* /*map1*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*per1*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD8* /*map2*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*per2*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void NoteLedState(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*keybd*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*led*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool /*on*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void MaybeStopHint(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*device*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ClientPtr /*client*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void ProcessPointerEvent(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync xEventPtr /*xE*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*mouse*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*count*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void ProcessKeyboardEvent(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync xEventPtr /*xE*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*keybd*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*count*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef XKB
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void CoreProcessPointerEvent(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync xEventPtr /*xE*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*mouse*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*count*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void CoreProcessKeyboardEvent(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync xEventPtr /*xE*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DeviceIntPtr /*keybd*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*count*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Bool LegalModifier(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned int /*key*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DevicePtr /*pDev*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void ProcessInputEvents(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern void InitInput(
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int /*argc*/,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync char ** /*argv*/);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif /* INPUT_H */