summaryrefslogtreecommitdiff
path: root/hw/xgl/egl/xegl.h
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xgl/egl/xegl.h')
-rw-r--r--hw/xgl/egl/xegl.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/hw/xgl/egl/xegl.h b/hw/xgl/egl/xegl.h
new file mode 100644
index 000000000..e75f233ad
--- /dev/null
+++ b/hw/xgl/egl/xegl.h
@@ -0,0 +1,131 @@
+#include "randrstr.h"
+
+#define KD_BUTTON_1 0x01
+#define KD_BUTTON_2 0x02
+#define KD_BUTTON_3 0x04
+#define KD_BUTTON_4 0x08
+#define KD_BUTTON_5 0x10
+#define KD_MOUSE_DELTA 0x80000000
+
+typedef struct _KdMouseFuncs {
+ Bool (*Init) (void);
+ void (*Fini) (void);
+} KdMouseFuncs;
+
+typedef struct _KdKeyboardFuncs {
+ void (*Load) (void);
+ int (*Init) (void);
+ void (*Leds) (int);
+ void (*Bell) (int, int, int);
+ void (*Fini) (void);
+ int LockLed;
+} KdKeyboardFuncs;
+
+typedef struct _KdOsFuncs {
+ int (*Init) (void);
+ void (*Enable) (void);
+ Bool (*SpecialKey) (KeySym);
+ void (*Disable) (void);
+ void (*Fini) (void);
+ void (*pollEvents) (void);
+} KdOsFuncs;
+
+typedef struct _KdMouseMatrix {
+ int matrix[2][3];
+} KdMouseMatrix;
+
+typedef enum _kdMouseState {
+ start,
+ button_1_pend,
+ button_1_down,
+ button_2_down,
+ button_3_pend,
+ button_3_down,
+ synth_2_down_13,
+ synth_2_down_3,
+ synth_2_down_1,
+ num_input_states
+} KdMouseState;
+
+#define KD_MAX_BUTTON 7
+
+typedef struct _KdMouseInfo {
+ struct _KdMouseInfo *next;
+ void *driver;
+ void *closure;
+ char *name;
+ char *prot;
+ char map[KD_MAX_BUTTON];
+ int nbutton;
+ Bool emulateMiddleButton;
+ unsigned long emulationTimeout;
+ Bool timeoutPending;
+ KdMouseState mouseState;
+ Bool eventHeld;
+ xEvent heldEvent;
+ unsigned char buttonState;
+ int emulationDx, emulationDy;
+ int inputType;
+ Bool transformCoordinates;
+} KdMouseInfo;
+
+typedef struct _KdScreenInfo {
+ struct _KdScreenInfo *next;
+ ScreenPtr pScreen;
+ void *driver;
+ Rotation randr; /* rotation and reflection */
+ int width;
+ int height;
+ int rate;
+ int width_mm;
+ int height_mm;
+ int subpixel_order;
+ Bool dumb;
+ Bool softCursor;
+ int mynum;
+ DDXPointRec origin;
+} KdScreenInfo;
+
+#define KD_MAX_FB 2
+#define KD_MAX_PSEUDO_DEPTH 8
+#define KD_MAX_PSEUDO_SIZE (1 << KD_MAX_PSEUDO_DEPTH)
+
+typedef struct _xeglScreen {
+ Window win;
+ Colormap colormap;
+ CloseScreenProcPtr CloseScreen;
+ KdScreenInfo *screen;
+ ColormapPtr pInstalledmap[KD_MAX_FB]; /* current colormap */
+} xeglScreenRec, *xeglScreenPtr;
+
+extern KdMouseInfo *kdMouseInfo;
+extern KdOsFuncs *kdOsFuncs;
+extern Bool kdDontZap;
+extern Bool kdDisableZaphod;
+extern int kdScreenPrivateIndex;
+extern KdMouseFuncs LinuxEvdevMouseFuncs;
+extern KdKeyboardFuncs LinuxEvdevKeyboardFuncs;
+
+#define RR_Rotate_All (RR_Rotate_0|RR_Rotate_90|RR_Rotate_180|RR_Rotate_270)
+#define RR_Reflect_All (RR_Reflect_X|RR_Reflect_Y)
+
+#define KdGetScreenPriv(pScreen) ((xeglScreenPtr) \
+ (pScreen)->devPrivates[kdScreenPrivateIndex].ptr)
+#define KdScreenPriv(pScreen) xeglScreenPtr pScreenPriv = KdGetScreenPriv(pScreen)
+
+extern void eglInitInput(KdMouseFuncs *pMouseFuncs, KdKeyboardFuncs *pKeyboardFuncs);
+extern void KdParseMouse(char *arg);
+extern KdMouseInfo *KdMouseInfoAdd(void);
+extern void KdMouseInfoDispose(KdMouseInfo *mi);
+extern int KdAllocInputType(void);
+extern char *KdSaveString (char *str);
+extern Bool KdRegisterFd(int type, int fd, void (*read) (int fd, void *closure), void *closure);
+extern void KdUnregisterFds(int type, Bool do_close);
+extern void KdEnqueueKeyboardEvent(unsigned char scan_code, unsigned char is_up);
+extern void KdEnqueueMouseEvent(KdMouseInfo *mi, unsigned long flags, int rx, int ry);
+extern void KdRegisterFdEnableDisable(int fd,
+ int (*enable)(int fd, void *closure),
+ void (*disable)(int fd, void *closure));
+extern void KdWakeupHandler(int screen, pointer data, unsigned long lresult, pointer readmask);
+
+