#ifndef INPUT_H
#define INPUT_H
#include "misc.h"
#include "screenint.h"
#include "X11/Xmd.h"
#include "X11/Xproto.h"
#include "window.h"
#define DEVICE_INIT 0
#define DEVICE_ON 1
#define DEVICE_OFF 2
#define DEVICE_CLOSE 3
#define MAP_LENGTH 256
#define DOWN_LENGTH 32
#define NullGrab ((GrabPtr)NULL)
#define PointerRootWin ((WindowPtr)PointerRoot)
#define NoneWin ((WindowPtr)None)
#define NullDevice ((DevicePtr)NULL)
#ifndef FollowKeyboard
#define FollowKeyboard 3
#endif
#ifndef FollowKeyboardWin
#define FollowKeyboardWin ((WindowPtr) FollowKeyboard)
#endif
#ifndef RevertToFollowKeyboard
#define RevertToFollowKeyboard 3
#endif
typedef unsigned long Leds;
typedef struct _OtherClients *OtherClientsPtr;
typedef struct _InputClients *InputClientsPtr;
typedef struct _DeviceIntRec *DeviceIntPtr;
typedef int (*DeviceProc)(
DeviceIntPtr ,
int );
typedef void (*ProcessInputProc)(
xEventPtr ,
DeviceIntPtr ,
int );
typedef struct _DeviceRec {
pointer devicePrivate;
ProcessInputProc processInputProc;
ProcessInputProc realInputProc;
ProcessInputProc enqueueInputProc;
Bool on;
} DeviceRec, *DevicePtr;
typedef struct {
int click, bell, bell_pitch, bell_duration;
Bool autoRepeat;
unsigned char autoRepeats[32];
Leds leds;
unsigned char id;
} KeybdCtrl;
typedef struct {
KeySym *map;
KeyCode minKeyCode,
maxKeyCode;
int mapWidth;
} KeySymsRec, *KeySymsPtr;
typedef struct {
int num, den, threshold;
unsigned char id;
} PtrCtrl;
typedef struct {
int resolution, min_value, max_value;
int integer_displayed;
unsigned char id;
} IntegerCtrl;
typedef struct {
int max_symbols, num_symbols_supported;
int num_symbols_displayed;
KeySym *symbols_supported;
KeySym *symbols_displayed;
unsigned char id;
} StringCtrl;
typedef struct {
int percent, pitch, duration;
unsigned char id;
} BellCtrl;
typedef struct {
Leds led_values;
Mask led_mask;
unsigned char id;
} LedCtrl;
extern KeybdCtrl defaultKeyboardControl;
extern PtrCtrl defaultPointerControl;
#undef AddInputDevice
extern DevicePtr AddInputDevice(
DeviceProc ,
Bool );
#define AddInputDevice(deviceProc, autoStart) \
_AddInputDevice(deviceProc, autoStart)
extern DeviceIntPtr _AddInputDevice(
DeviceProc ,
Bool );
extern Bool EnableDevice(
DeviceIntPtr );
extern Bool DisableDevice(
DeviceIntPtr );
extern int InitAndStartDevices(void);
extern void CloseDownDevices(void);
extern void RemoveDevice(
DeviceIntPtr );
extern int NumMotionEvents(void);
#undef RegisterPointerDevice
extern void RegisterPointerDevice(
DevicePtr );
#define RegisterPointerDevice(device) \
_RegisterPointerDevice(device)
extern void _RegisterPointerDevice(
DeviceIntPtr );
#undef RegisterKeyboardDevice
extern void RegisterKeyboardDevice(
DevicePtr );
#define RegisterKeyboardDevice(device) \
_RegisterKeyboardDevice(device)
extern void _RegisterKeyboardDevice(
DeviceIntPtr );
extern DevicePtr LookupKeyboardDevice(void);
extern DevicePtr LookupPointerDevice(void);
extern DevicePtr LookupDevice(
int );
extern void QueryMinMaxKeyCodes(
KeyCode* ,
KeyCode* );
extern Bool SetKeySymsMap(
KeySymsPtr ,
KeySymsPtr );
extern Bool InitKeyClassDeviceStruct(
DeviceIntPtr ,
KeySymsPtr ,
CARD8 []);
extern Bool InitButtonClassDeviceStruct(
DeviceIntPtr ,
int ,
CARD8* );
typedef int (*ValuatorMotionProcPtr)(
DeviceIntPtr ,
xTimecoord * ,
unsigned long ,
unsigned long ,
ScreenPtr );
extern Bool InitValuatorClassDeviceStruct(
DeviceIntPtr ,
int ,
ValuatorMotionProcPtr ,
int ,
int );
extern Bool InitFocusClassDeviceStruct(
DeviceIntPtr );
typedef void (*BellProcPtr)(
int ,
DeviceIntPtr ,
pointer ,
int);
typedef void (*KbdCtrlProcPtr)(
DeviceIntPtr ,
KeybdCtrl * );
extern Bool InitKbdFeedbackClassDeviceStruct(
DeviceIntPtr ,
BellProcPtr ,
KbdCtrlProcPtr );
typedef void (*PtrCtrlProcPtr)(
DeviceIntPtr ,
PtrCtrl * );
extern Bool InitPtrFeedbackClassDeviceStruct(
DeviceIntPtr ,
PtrCtrlProcPtr );
typedef void (*StringCtrlProcPtr)(
DeviceIntPtr ,
StringCtrl * );
extern Bool InitStringFeedbackClassDeviceStruct(
DeviceIntPtr ,
StringCtrlProcPtr ,
int ,
int ,
KeySym* );
typedef void (*BellCtrlProcPtr)(
DeviceIntPtr ,
BellCtrl * );
extern Bool InitBellFeedbackClassDeviceStruct(
DeviceIntPtr ,
BellProcPtr ,
BellCtrlProcPtr );
typedef void (*LedCtrlProcPtr)(
DeviceIntPtr ,
LedCtrl * );
extern Bool InitLedFeedbackClassDeviceStruct(
DeviceIntPtr ,
LedCtrlProcPtr );
typedef void (*IntegerCtrlProcPtr)(
DeviceIntPtr ,
IntegerCtrl * );
extern Bool InitIntegerFeedbackClassDeviceStruct(
DeviceIntPtr ,
IntegerCtrlProcPtr );
extern Bool InitPointerDeviceStruct(
DevicePtr ,
CARD8* ,
int ,
ValuatorMotionProcPtr ,
PtrCtrlProcPtr ,
int );
extern Bool InitKeyboardDeviceStruct(
DevicePtr ,
KeySymsPtr ,
CARD8 [],
BellProcPtr ,
KbdCtrlProcPtr );
extern void SendMappingNotify(
unsigned int ,
unsigned int ,
unsigned int ,
ClientPtr );
extern Bool BadDeviceMap(
BYTE* ,
int ,
unsigned ,
unsigned ,
XID* );
extern Bool AllModifierKeysAreUp(
DeviceIntPtr ,
CARD8* ,
int ,
CARD8* ,
int );
extern void NoteLedState(
DeviceIntPtr ,
int ,
Bool );
extern void MaybeStopHint(
DeviceIntPtr ,
ClientPtr );
extern void ProcessPointerEvent(
xEventPtr ,
DeviceIntPtr ,
int );
extern void ProcessKeyboardEvent(
xEventPtr ,
DeviceIntPtr ,
int );
#ifdef XKB
extern void CoreProcessPointerEvent(
xEventPtr ,
DeviceIntPtr ,
int );
extern void CoreProcessKeyboardEvent(
xEventPtr ,
DeviceIntPtr ,
int );
#endif
extern Bool LegalModifier(
unsigned int ,
DevicePtr );
extern void ProcessInputEvents(void);
extern void InitInput(
int ,
char ** );
#endif