#ifndef INPUTSTRUCT_H
#define INPUTSTRUCT_H
#include "input.h"
#include "window.h"
#include "dixstruct.h"
#include "cursorstr.h"
#include "geext.h"
#include "privates.h"
#define BitIsOn(ptr, bit) (((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))
#define SameClient(obj,client) \
(CLIENT_BITS((obj)->resource) == (client)->clientAsMask)
#define EMASKSIZE MAXDEVICES + 1
extern DevPrivateKey CoreDevicePrivateKey;
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;
Mask deviceMask;
GenericMaskPtr genericMasks;
} 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 _ValuatorAccelerationRec {
int number;
PointerAccelSchemeProc AccelSchemeProc;
void *accelData;
DeviceCallbackProc AccelCleanupProc;
} ValuatorAccelerationRec, *ValuatorAccelerationPtr;
typedef struct _ValuatorClassRec {
int numMotionEvents;
int first_motion;
int last_motion;
void *motion;
WindowPtr motionHintWindow;
AxisInfoPtr axes;
unsigned short numAxes;
int *axisVal;
CARD8 mode;
ValuatorAccelerationRec accelScheme;
} 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;
typedef struct _ClassesRec {
KeyClassPtr key;
ValuatorClassPtr valuator;
ButtonClassPtr button;
FocusClassPtr focus;
ProximityClassPtr proximity;
AbsoluteClassPtr absolute;
KbdFeedbackPtr kbdfeed;
PtrFeedbackPtr ptrfeed;
IntegerFeedbackPtr intfeed;
StringFeedbackPtr stringfeed;
BellFeedbackPtr bell;
LedFeedbackPtr leds;
} ClassesRec;
typedef struct {
CursorPtr current;
BoxRec hotLimits;
Bool confined;
RegionPtr hotShape;
BoxRec physLimits;
WindowPtr win;
HotSpot hot;
HotSpot hotPhys;
#ifdef PANORAMIX
ScreenPtr screen;
RegionRec Reg1;
RegionRec Reg2;
WindowPtr windows[MAXSCREENS];
WindowPtr confineWin;
#endif
WindowPtr *spriteTrace;
int spriteTraceSize;
int spriteTraceGood;
ScreenPtr pEnqueueScreen;
ScreenPtr pDequeueScreen;
} SpriteRec, *SpritePtr;
typedef struct _XIPropertyValue
{
Atom type;
short format;
long size;
pointer data;
} XIPropertyValueRec;
typedef struct _XIProperty
{
struct _XIProperty *next;
Atom propertyName;
BOOL deletable;
XIPropertyValueRec value;
} XIPropertyRec;
typedef XIPropertyRec *XIPropertyPtr;
typedef XIPropertyValueRec *XIPropertyValuePtr;
typedef struct _XIPropertyHandler
{
struct _XIPropertyHandler* next;
long id;
int (*SetProperty) (DeviceIntPtr dev,
Atom property,
XIPropertyValuePtr prop,
BOOL checkonly);
int (*GetProperty) (DeviceIntPtr dev,
Atom property);
int (*DeleteProperty) (DeviceIntPtr dev,
Atom property);
} XIPropertyHandler, *XIPropertyHandlerPtr;
#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 _GrabInfoRec {
TimeStamp grabTime;
Bool fromPassiveGrab;
Bool implicitGrab;
GrabRec activeGrab;
GrabPtr grab;
CARD8 activatingKey;
void (*ActivateGrab) (
DeviceIntPtr ,
GrabPtr ,
TimeStamp ,
Bool );
void (*DeactivateGrab)(
DeviceIntPtr );
struct {
Bool frozen;
int state;
GrabPtr other;
xEvent *event;
int evcount;
} sync;
} GrabInfoRec, *GrabInfoPtr;
typedef struct _SpriteInfoRec {
SpritePtr sprite;
Bool spriteOwner;
DeviceIntPtr paired;
} SpriteInfoRec, *SpriteInfoPtr;
typedef struct _DeviceIntRec {
DeviceRec public;
DeviceIntPtr next;
Bool startup;
DeviceProc deviceProc;
Bool inited;
Bool enabled;
Bool coreEvents;
GrabInfoRec deviceGrab;
Bool isMaster;
Atom type;
char *name;
CARD8 id;
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;
PrivateRec *devPrivates;
int nPrivates;
DeviceUnwrapProc unwrapProc;
SpriteInfoPtr spriteInfo;
union {
DeviceIntPtr master;
DeviceIntPtr lastSlave;
} u;
struct {
int valuators[MAX_VALUATORS];
float remainder[MAX_VALUATORS];
int numValuators;
} last;
struct {
XIPropertyPtr properties;
XIPropertyHandlerPtr handlers;
} properties;
} 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