#ifndef INPUTSTRUCT_H
#define INPUTSTRUCT_H
#include "input.h"
#include "window.h"
#include "dixstruct.h"
#define BitIsOn(ptr, bit) (((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))
#define SameClient(obj,client) \
(CLIENT_BITS((obj)->resource) == (client)->clientAsMask)
#define MAX_DEVICES 20
#define EMASKSIZE MAX_DEVICES
extern int CoreDevicePrivatesIndex;
typedef struct _OtherClients {
OtherClientsPtr next;
XID resource;
Mask mask;
} OtherClients;
typedef struct _InputClients {
InputClientsPtr next;
XID resource;
Mask mask[EMASKSIZE];
} InputClients;
typedef struct _OtherInputMasks {
Mask deliverableEvents[EMASKSIZE];
Mask inputEvents[EMASKSIZE];
Mask dontPropagateMask[EMASKSIZE];
InputClientsPtr inputClients;
} OtherInputMasks;
#define MasksPerDetailMask 8
typedef struct _DetailRec {
unsigned short exact;
Mask *pMask;
} DetailRec;
typedef struct _GrabRec {
GrabPtr next;
XID resource;
DeviceIntPtr device;
WindowPtr window;
unsigned ownerEvents:1;
unsigned keyboardMode:1;
unsigned pointerMode:1;
unsigned coreGrab:1;
unsigned coreMods:1;
CARD8 type;
DetailRec modifiersDetail;
DeviceIntPtr modifierDevice;
DetailRec detail;
WindowPtr confineTo;
CursorPtr cursor;
Mask eventMask;
} GrabRec;
typedef struct _KeyClassRec {
CARD8 down[DOWN_LENGTH];
CARD8 postdown[DOWN_LENGTH];
KeyCode *modifierKeyMap;
KeySymsRec curKeySyms;
int modifierKeyCount[8];
CARD8 modifierMap[MAP_LENGTH];
CARD8 maxKeysPerModifier;
unsigned short state;
unsigned short prev_state;
#ifdef XKB
struct _XkbSrvInfo *xkbInfo;
#else
void *pad0;
#endif
} KeyClassRec, *KeyClassPtr;
typedef struct _AxisInfo {
int resolution;
int min_resolution;
int max_resolution;
int min_value;
int max_value;
} AxisInfo, *AxisInfoPtr;
typedef struct _ValuatorClassRec {
ValuatorMotionProcPtr GetMotionProc;
int numMotionEvents;
int first_motion;
int last_motion;
void *motion;
WindowPtr motionHintWindow;
AxisInfoPtr axes;
unsigned short numAxes;
int *axisVal;
int lastx, lasty;
int dxremaind, dyremaind;
CARD8 mode;
} ValuatorClassRec, *ValuatorClassPtr;
typedef struct _ButtonClassRec {
CARD8 numButtons;
CARD8 buttonsDown;
unsigned short state;
Mask motionMask;
CARD8 down[DOWN_LENGTH];
CARD8 map[MAP_LENGTH];
#ifdef XKB
union _XkbAction *xkb_acts;
#else
void *pad0;
#endif
} ButtonClassRec, *ButtonClassPtr;
typedef struct _FocusClassRec {
WindowPtr win;
int revert;
TimeStamp time;
WindowPtr *trace;
int traceSize;
int traceGood;
} FocusClassRec, *FocusClassPtr;
typedef struct _ProximityClassRec {
char pad;
} ProximityClassRec, *ProximityClassPtr;
typedef struct _AbsoluteClassRec {
int min_x;
int max_x;
int min_y;
int max_y;
int flip_x;
int flip_y;
int rotation;
int button_threshold;
int offset_x;
int offset_y;
int width;
int height;
int screen;
XID following;
} AbsoluteClassRec, *AbsoluteClassPtr;
typedef struct _KbdFeedbackClassRec *KbdFeedbackPtr;
typedef struct _PtrFeedbackClassRec *PtrFeedbackPtr;
typedef struct _IntegerFeedbackClassRec *IntegerFeedbackPtr;
typedef struct _StringFeedbackClassRec *StringFeedbackPtr;
typedef struct _BellFeedbackClassRec *BellFeedbackPtr;
typedef struct _LedFeedbackClassRec *LedFeedbackPtr;
typedef struct _KbdFeedbackClassRec {
BellProcPtr BellProc;
KbdCtrlProcPtr CtrlProc;
KeybdCtrl ctrl;
KbdFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
#else
void *pad0;
#endif
} KbdFeedbackClassRec;
typedef struct _PtrFeedbackClassRec {
PtrCtrlProcPtr CtrlProc;
PtrCtrl ctrl;
PtrFeedbackPtr next;
} PtrFeedbackClassRec;
typedef struct _IntegerFeedbackClassRec {
IntegerCtrlProcPtr CtrlProc;
IntegerCtrl ctrl;
IntegerFeedbackPtr next;
} IntegerFeedbackClassRec;
typedef struct _StringFeedbackClassRec {
StringCtrlProcPtr CtrlProc;
StringCtrl ctrl;
StringFeedbackPtr next;
} StringFeedbackClassRec;
typedef struct _BellFeedbackClassRec {
BellProcPtr BellProc;
BellCtrlProcPtr CtrlProc;
BellCtrl ctrl;
BellFeedbackPtr next;
} BellFeedbackClassRec;
typedef struct _LedFeedbackClassRec {
LedCtrlProcPtr CtrlProc;
LedCtrl ctrl;
LedFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
#else
void *pad0;
#endif
} LedFeedbackClassRec;
#define NOT_GRABBED 0
#define THAWED 1
#define THAWED_BOTH 2
#define FREEZE_NEXT_EVENT 3
#define FREEZE_BOTH_NEXT_EVENT 4
#define FROZEN 5
#define FROZEN_NO_EVENT 5
#define FROZEN_WITH_EVENT 6
#define THAW_OTHERS 7
typedef struct _DeviceIntRec {
DeviceRec public;
DeviceIntPtr next;
TimeStamp grabTime;
Bool startup;
DeviceProc deviceProc;
Bool inited;
Bool enabled;
Bool coreEvents;
GrabPtr grab;
struct {
Bool frozen;
int state;
GrabPtr other;
xEvent *event;
int evcount;
} sync;
Atom type;
char *name;
CARD8 id;
CARD8 activatingKey;
Bool fromPassiveGrab;
GrabRec activeGrab;
void (*ActivateGrab) (
DeviceIntPtr ,
GrabPtr ,
TimeStamp ,
Bool );
void (*DeactivateGrab)(
DeviceIntPtr );
KeyClassPtr key;
ValuatorClassPtr valuator;
ButtonClassPtr button;
FocusClassPtr focus;
ProximityClassPtr proximity;
AbsoluteClassPtr absolute;
KbdFeedbackPtr kbdfeed;
PtrFeedbackPtr ptrfeed;
IntegerFeedbackPtr intfeed;
StringFeedbackPtr stringfeed;
BellFeedbackPtr bell;
LedFeedbackPtr leds;
#ifdef XKB
struct _XkbInterest *xkb_interest;
#else
void *pad0;
#endif
char *config_info;
DevUnion *devPrivates;
int nPrivates;
DeviceUnwrapProc unwrapProc;
} DeviceIntRec;
typedef struct {
int numDevices;
DeviceIntPtr devices;
DeviceIntPtr off_devices;
DeviceIntPtr keyboard;
DeviceIntPtr pointer;
} InputInfo;
extern InputInfo inputInfo;
typedef struct _QdEvent *QdEventPtr;
typedef struct _QdEvent {
QdEventPtr next;
DeviceIntPtr device;
ScreenPtr pScreen;
unsigned long months;
xEvent *event;
int evcount;
} QdEventRec;
#endif