215 lines
4.9 KiB
C
215 lines
4.9 KiB
C
/*
|
|
* Copyright © 2005 Novell, Inc.
|
|
*
|
|
* Permission to use, copy, modify, distribute, and sell this software
|
|
* and its documentation for any purpose is hereby granted without
|
|
* fee, provided that the above copyright notice appear in all copies
|
|
* and that both that copyright notice and this permission notice
|
|
* appear in supporting documentation, and that the name of
|
|
* Novell, Inc. not be used in advertising or publicity pertaining to
|
|
* distribution of the software without specific, written prior permission.
|
|
* Novell, Inc. makes no representations about the suitability of this
|
|
* software for any purpose. It is provided "as is" without express or
|
|
* implied warranty.
|
|
*
|
|
* NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
|
|
* NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*
|
|
* Author: David Reveman <davidr@novell.com>
|
|
*/
|
|
|
|
#ifndef _XEGL_H_
|
|
#define _XEGL_H_
|
|
|
|
#include "xgl.h"
|
|
|
|
#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 _xeglScreen {
|
|
CloseScreenProcPtr CloseScreen;
|
|
ScreenPtr pScreen;
|
|
DDXPointRec origin;
|
|
} xeglScreenRec, *xeglScreenPtr;
|
|
|
|
extern KdMouseInfo *kdMouseInfo;
|
|
extern KdOsFuncs *kdOsFuncs;
|
|
extern Bool kdDontZap;
|
|
extern Bool kdDisableZaphod;
|
|
extern int xeglScreenPrivateIndex;
|
|
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[xeglScreenPrivateIndex].ptr))
|
|
#define KdScreenPriv(pScreen) \
|
|
xeglScreenPtr pScreenPriv = KdGetScreenPriv (pScreen)
|
|
|
|
void
|
|
eglInitInput (KdMouseFuncs *pMouseFuncs,
|
|
KdKeyboardFuncs *pKeyboardFuncs);
|
|
|
|
void
|
|
KdParseMouse (char *arg);
|
|
|
|
KdMouseInfo *
|
|
KdMouseInfoAdd (void);
|
|
|
|
void
|
|
KdMouseInfoDispose (KdMouseInfo *mi);
|
|
|
|
int
|
|
KdAllocInputType (void);
|
|
|
|
char *
|
|
KdSaveString (char *str);
|
|
|
|
Bool
|
|
KdRegisterFd (int type,
|
|
int fd,
|
|
void (*read) (int fd, void *closure),
|
|
void *closure);
|
|
|
|
void
|
|
KdUnregisterFds (int type,
|
|
Bool do_close);
|
|
|
|
void
|
|
KdEnqueueKeyboardEvent (unsigned char scan_code,
|
|
unsigned char is_up);
|
|
|
|
void
|
|
KdEnqueueMouseEvent (KdMouseInfo *mi,
|
|
unsigned long flags,
|
|
int rx,
|
|
int ry);
|
|
|
|
void
|
|
KdRegisterFdEnableDisable (int fd,
|
|
int (*enable) (int fd, void *closure),
|
|
void (*disable) (int fd, void *closure));
|
|
|
|
void
|
|
KdWakeupHandler (pointer data,
|
|
int result,
|
|
pointer readmask);
|
|
|
|
Bool
|
|
KdLegalModifier (unsigned int key,
|
|
DeviceIntPtr pDev);
|
|
|
|
void
|
|
KdProcessInputEvents (void);
|
|
|
|
void
|
|
xeglInitOutput (ScreenInfo *pScreenInfo,
|
|
int argc,
|
|
char **argv);
|
|
|
|
Bool
|
|
xeglLegalModifier (unsigned int key,
|
|
DevicePtr pDev);
|
|
|
|
void
|
|
xeglProcessInputEvents (void);
|
|
|
|
void
|
|
xeglInitInput (int argc,
|
|
char **argv);
|
|
|
|
void
|
|
xeglUseMsg (void);
|
|
|
|
int
|
|
xeglProcessArgument (int argc,
|
|
char **argv,
|
|
int i);
|
|
|
|
void
|
|
xeglAbort (void);
|
|
|
|
void
|
|
xeglGiveUp (void);
|
|
|
|
void
|
|
xeglOsVendorInit (void);
|
|
|
|
#endif /* _XEGL_H_ */
|