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, 
 | |
| 		 DevicePtr    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_ */
 |