040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync/************************************************************
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncCopyright 1987, 1998 The Open Group
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncthe above copyright notice appear in all copies and that both that
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynccopyright notice and this permission notice appear in supporting
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncdocumentation.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncThe above copyright notice and this permission notice shall be included in
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncall copies or substantial portions of the Software.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncin this Software without prior written authorization from The Open Group.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync All Rights Reserved
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncPermission to use, copy, modify, and distribute this software and its
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncdocumentation for any purpose and without fee is hereby granted,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncprovided that the above copyright notice appear in all copies and that
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncboth that copyright notice and this permission notice appear in
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncsupporting documentation, and that the name of Digital not be
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncused in advertising or publicity pertaining to distribution of the
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncsoftware without specific, written prior permission.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncSOFTWARE.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync********************************************************/
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifndef INPUT_H
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define INPUT_H
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#include "misc.h"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#include "screenint.h"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#include <X11/Xmd.h>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#include <X11/Xproto.h>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#include "window.h" /* for WindowPtr */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define DEVICE_INIT 0
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define DEVICE_ON 1
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define DEVICE_OFF 2
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define DEVICE_CLOSE 3
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define POINTER_RELATIVE (1 << 1)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define POINTER_ABSOLUTE (1 << 2)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define POINTER_ACCELERATE (1 << 3)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define MAP_LENGTH 256
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define NullGrab ((GrabPtr)NULL)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define PointerRootWin ((WindowPtr)PointerRoot)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define NoneWin ((WindowPtr)None)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define NullDevice ((DevicePtr)NULL)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifndef FollowKeyboard
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define FollowKeyboard 3
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifndef FollowKeyboardWin
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define FollowKeyboardWin ((WindowPtr) FollowKeyboard)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifndef RevertToFollowKeyboard
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define RevertToFollowKeyboard 3
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef unsigned long Leds;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct _OtherClients *OtherClientsPtr;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct _InputClients *InputClientsPtr;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct _DeviceIntRec *DeviceIntPtr;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef int (*DeviceProc)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*what*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*ProcessInputProc)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEventPtr /*events*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*count*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef Bool (*DeviceHandleProc)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync void* /*data*/
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync );
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*DeviceUnwrapProc)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceHandleProc /*proc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync void* /*data*/
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync );
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct _DeviceRec {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pointer devicePrivate;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ProcessInputProc processInputProc; /* current */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ProcessInputProc realInputProc; /* deliver */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ProcessInputProc enqueueInputProc; /* enqueue */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Bool on; /* used by DDX to keep state */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} DeviceRec, *DevicePtr;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int click, bell, bell_pitch, bell_duration;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Bool autoRepeat;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned char autoRepeats[32];
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Leds leds;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned char id;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} KeybdCtrl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySym *map;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeyCode minKeyCode,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync maxKeyCode;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int mapWidth;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} KeySymsRec, *KeySymsPtr;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int num, den, threshold;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned char id;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} PtrCtrl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int resolution, min_value, max_value;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int integer_displayed;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned char id;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} IntegerCtrl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int max_symbols, num_symbols_supported;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int num_symbols_displayed;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySym *symbols_supported;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySym *symbols_displayed;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned char id;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} StringCtrl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int percent, pitch, duration;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned char id;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} BellCtrl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Leds led_values;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Mask led_mask;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned char id;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} LedCtrl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern KeybdCtrl defaultKeyboardControl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern PtrCtrl defaultPointerControl;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct _InputOption {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync char *key;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync char *value;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync struct _InputOption *next;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync} InputOption;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void InitCoreDevices(void);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern DeviceIntPtr AddInputDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceProc /*deviceProc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Bool /*autoStart*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool EnableDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool ActivateDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool DisableDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int InitAndStartDevices(void);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void CloseDownDevices(void);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int RemoveDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*dev*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int NumMotionEvents(void);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void RegisterPointerDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void RegisterKeyboardDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int dixLookupDevice(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr * /* dev */,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /* id */,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ClientPtr /* client */,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Mask /* access_mode */);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void QueryMinMaxKeyCodes(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeyCode* /*minCode*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeyCode* /*maxCode*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool SetKeySymsMap(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySymsPtr /*dst*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySymsPtr /*src*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitKeyClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySymsPtr /*pKeySyms*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync CARD8 /*pModifiers*/[]);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitButtonClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*numButtons*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync CARD8* /*map*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef int (*ValuatorMotionProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*pdevice*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xTimecoord * /*coords*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned long /*start*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned long /*stop*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ScreenPtr /*pScreen*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitValuatorClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*numAxes*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ValuatorMotionProcPtr /* motionProc */,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*numMotionEvents*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*mode*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitAbsoluteClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitFocusClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*BellProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*percent*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pointer /*ctrl*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*KbdCtrlProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeybdCtrl * /*ctrl*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitKbdFeedbackClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync BellProcPtr /*bellProc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KbdCtrlProcPtr /*controlProc*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*PtrCtrlProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync PtrCtrl * /*ctrl*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitPtrFeedbackClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync PtrCtrlProcPtr /*controlProc*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*StringCtrlProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync StringCtrl * /*ctrl*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitStringFeedbackClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync StringCtrlProcPtr /*controlProc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*max_symbols*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*num_symbols_supported*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySym* /*symbols*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*BellCtrlProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync BellCtrl * /*ctrl*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitBellFeedbackClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync BellProcPtr /*bellProc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync BellCtrlProcPtr /*controlProc*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*LedCtrlProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync LedCtrl * /*ctrl*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitLedFeedbackClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync LedCtrlProcPtr /*controlProc*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef void (*IntegerCtrlProcPtr)(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync IntegerCtrl * /*ctrl*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitIntegerFeedbackClassDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync IntegerCtrlProcPtr /*controlProc*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitPointerDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DevicePtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync CARD8* /*map*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*numButtons*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ValuatorMotionProcPtr /*motionProc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync PtrCtrlProcPtr /*controlProc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*numMotionEvents*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*numAxes*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool InitKeyboardDeviceStruct(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DevicePtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KeySymsPtr /*pKeySyms*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync CARD8 /*pModifiers*/[],
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync BellProcPtr /*bellProc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync KbdCtrlProcPtr /*controlProc*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void SendMappingNotify(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned int /*request*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned int /*firstKeyCode*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned int /*count*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ClientPtr /* client */);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool BadDeviceMap(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync BYTE* /*buff*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*length*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned /*low*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned /*high*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync XID* /*errval*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool AllModifierKeysAreUp(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync CARD8* /*map1*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*per1*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync CARD8* /*map2*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*per2*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void NoteLedState(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*keybd*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*led*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Bool /*on*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void MaybeStopHint(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*device*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ClientPtr /*client*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void ProcessPointerEvent(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEventPtr /*xE*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*mouse*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*count*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void ProcessKeyboardEvent(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEventPtr /*xE*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*keybd*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*count*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifdef XKB
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void CoreProcessPointerEvent(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEventPtr /*xE*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*mouse*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*count*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void CoreProcessKeyboardEvent(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEventPtr /*xE*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*keybd*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*count*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern Bool LegalModifier(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned int /*key*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr /*pDev*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void ProcessInputEvents(void);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void InitInput(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int /*argc*/,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync char ** /*argv*/);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int GetMaximumEventsNum(void);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int GetPointerEvents(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEvent *events,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr pDev,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int type,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int buttons,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int flags,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int first_valuator,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int num_valuators,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int *valuators);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int GetKeyboardEvents(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEvent *events,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr pDev,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int type,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int key_code);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int GetKeyboardValuatorEvents(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEvent *events,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr pDev,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int type,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int key_code,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int first_valuator,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int num_valuator,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int *valuators);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int GetProximityEvents(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xEvent *events,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr pDev,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int type,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int first_valuator,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int num_valuators,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int *valuators);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void PostSyntheticMotion(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int x,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int y,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int screen,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned long time);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int GetMotionHistorySize(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync void);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void AllocateMotionHistory(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr pDev);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int GetMotionHistory(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr pDev,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync xTimecoord *buff,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned long start,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync unsigned long stop,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ScreenPtr pScreen);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void SwitchCoreKeyboard(DeviceIntPtr pDev);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void SwitchCorePointer(DeviceIntPtr pDev);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync/* Implemented by the DDX. */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern int NewInputDeviceRequest(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync InputOption *options,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr *dev);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void DeleteInputDeviceRequest(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync DeviceIntPtr dev);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncextern void DDXRingBell(
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int volume,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int pitch,
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int duration);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif /* INPUT_H */