#ifndef _SUN_H_
#define _SUN_H_
#include "Xos.h"
#undef index
#include "X.h"
#include "Xproto.h"
#ifndef NOSTDHDRS
# include <stdlib.h>
#else
# include <malloc.h>
extern char *getenv();
#endif
#include <sys/param.h>
#include <sys/file.h>
#include <sys/filio.h>
#include <sys/ioctl.h>
#include <sys/resource.h>
#ifdef SVR4
# ifdef X_POSIX_C_SOURCE
# define _POSIX_C_SOURCE X_POSIX_C_SOURCE
# include <signal.h>
# undef _POSIX_C_SOURCE
# else
# define _POSIX_SOURCE
# include <signal.h>
# undef _POSIX_SOURCE
# endif
#endif
#include <fcntl.h>
#ifndef __bsdi__
# ifndef CSRG_BASED
# ifndef i386
# include <poll.h>
# else
# include <sys/poll.h>
# endif
# endif
#else
# include <unistd.h>
#endif
#include <errno.h>
#include <memory.h>
#include <signal.h>
#ifdef SVR4
# include <sys/fbio.h>
# include <sys/kbd.h>
# include <sys/kbio.h>
# include <sys/msio.h>
# include <sys/vuid_event.h>
# include <sys/memreg.h>
# include <stropts.h>
# define usleep(usec) poll((struct pollfd *) 0, (size_t) 0, usec / 1000)
#else
# ifndef CSRG_BASED
# include <sun/fbio.h>
# include <sundev/kbd.h>
# include <sundev/kbio.h>
# include <sundev/msio.h>
# include <sundev/vuid_event.h>
# include <pixrect/pixrect.h>
# include <pixrect/memreg.h>
extern int ioctl();
extern int getrlimit();
extern int setrlimit();
extern int getpagesize();
# else
# if defined(CSRG_BASED) && !defined(__bsdi__)
# include <machine/fbio.h>
# include <machine/kbd.h>
# include <machine/kbio.h>
# include <machine/vuid_event.h>
# endif
# ifdef __bsdi__
# include <sys/fbio.h>
# include </sys/sparc/dev/kbd.h>
# include </sys/sparc/dev/kbio.h>
# include </sys/sparc/dev/vuid_event.h>
# endif
# endif
#endif
#ifndef SVR4
#define XFBTYPE_LASTPLUSONE FBTYPE_LASTPLUSONE
#else
#define XFBTYPE_TCX 21
#define XFBTYPE_LASTPLUSONE 22
#endif
extern int gettimeofday();
#include "misc.h"
#undef abs
#include "scrnintstr.h"
#ifdef NEED_EVENTS
# include "inputstr.h"
#endif
#include "input.h"
#include "colormapst.h"
#include "colormap.h"
#include "cursorstr.h"
#include "cursor.h"
#include "dixstruct.h"
#include "dix.h"
#include "opaque.h"
#include "resource.h"
#include "servermd.h"
#include "windowstr.h"
#ifndef PSZ
#define PSZ 8
#endif
#include "mi/mibstore.h"
#include "mi/mipointer.h"
extern int monitorResolution;
#ifdef SVR4
# define CGTWO0DEV "/dev/fbs/cgtwo0"
# define CGTWO1DEV "/dev/fbs/cgtwo1"
# define CGTWO2DEV "/dev/fbs/cgtwo2"
# define CGTWO3DEV "/dev/fbs/cgtwo3"
# define CGTHREE0DEV "/dev/fbs/cgthree0"
# define CGTHREE1DEV "/dev/fbs/cgthree1"
# define CGTHREE2DEV "/dev/fbs/cgthree2"
# define CGTHREE3DEV "/dev/fbs/cgthree3"
# define CGFOUR0DEV "/dev/fbs/cgfour0"
# define CGSIX0DEV "/dev/fbs/cgsix0"
# define CGSIX1DEV "/dev/fbs/cgsix1"
# define CGSIX2DEV "/dev/fbs/cgsix2"
# define CGSIX3DEV "/dev/fbs/cgsix3"
# define BWTWO0DEV "/dev/fbs/bwtwo0"
# define BWTWO1DEV "/dev/fbs/bwtwo1"
# define BWTWO2DEV "/dev/fbs/bwtwo2"
# define BWTWO3DEV "/dev/fbs/bwtwo3"
# define CGEIGHT0DEV "/dev/fbs/cgeight0"
# define TCX0DEV "/dev/fbs/tcx0"
#else
# define CGTWO0DEV "/dev/cgtwo0"
# define CGTWO1DEV "/dev/cgtwo1"
# define CGTWO2DEV "/dev/cgtwo2"
# define CGTWO3DEV "/dev/cgtwo3"
# define CGTHREE0DEV "/dev/cgthree0"
# define CGTHREE1DEV "/dev/cgthree1"
# define CGTHREE2DEV "/dev/cgthree2"
# define CGTHREE3DEV "/dev/cgthree3"
# define CGFOUR0DEV "/dev/cgfour0"
# define CGSIX0DEV "/dev/cgsix0"
# define CGSIX1DEV "/dev/cgsix1"
# define CGSIX2DEV "/dev/cgsix2"
# define CGSIX3DEV "/dev/cgsix3"
# define BWTWO0DEV "/dev/bwtwo0"
# define BWTWO1DEV "/dev/bwtwo1"
# define BWTWO2DEV "/dev/bwtwo2"
# define BWTWO3DEV "/dev/bwtwo3"
# define CGEIGHT0DEV "/dev/cgeight0"
#endif
#define MAXEVENTS 32
typedef struct {
int fd;
int type;
int layout;
int click;
Leds leds;
} sunKbdPrivRec, *sunKbdPrivPtr;
extern sunKbdPrivRec sunKbdPriv;
typedef struct {
int fd;
int bmask;
} sunPtrPrivRec, *sunPtrPrivPtr;
extern sunPtrPrivRec sunPtrPriv;
typedef struct {
BYTE key;
CARD8 modifiers;
} SunModmapRec;
typedef struct {
int width, height;
Bool has_cursor;
CursorPtr pCursor;
} sunCursorRec, *sunCursorPtr;
typedef struct {
ColormapPtr installedMap;
CloseScreenProcPtr CloseScreen;
void (*UpdateColormap)();
void (*GetColormap)();
sunCursorRec hardwareCursor;
Bool hasHardwareCursor;
} sunScreenRec, *sunScreenPtr;
#define GetScreenPrivate(s) ((sunScreenPtr) ((s)->devPrivates[sunScreenIndex].ptr))
#define SetupScreen(s) sunScreenPtr pPrivate = GetScreenPrivate(s)
typedef struct {
unsigned char* fb;
int fd;
struct fbtype info;
void (*EnterLeave)();
unsigned char* fbPriv;
} fbFd;
typedef Bool (*sunFbInitProc)(
int ,
ScreenPtr ,
int ,
char**
);
typedef struct {
sunFbInitProc init;
char* name;
} sunFbDataRec;
#ifdef XKB
extern Bool noXkbExtension;
#endif
extern Bool sunAutoRepeatHandlersInstalled;
extern long sunAutoRepeatInitiate;
extern long sunAutoRepeatDelay;
extern sunFbDataRec sunFbData[];
extern fbFd sunFbs[];
extern Bool sunSwapLkeys;
extern Bool sunFlipPixels;
extern Bool sunActiveZaphod;
extern Bool sunFbInfo;
extern Bool sunCG4Frob;
extern Bool sunNoGX;
extern int sunScreenIndex;
extern int* sunProtected;
extern Bool sunCursorInitialize(
ScreenPtr
);
extern void sunDisableCursor(
ScreenPtr
);
extern int sunChangeKbdTranslation(
int ,
Bool
);
extern void sunNonBlockConsoleOff(
#if defined(SVR4) || defined(CSRG_BASED)
void
#else
char*
#endif
);
extern void sunEnqueueEvents(
void
);
extern int sunGXInit(
ScreenPtr ,
fbFd*
);
extern Bool sunSaveScreen(
ScreenPtr ,
int
);
extern Bool sunScreenInit(
ScreenPtr
);
extern pointer sunMemoryMap(
size_t ,
off_t ,
int
);
extern Bool sunScreenAllocate(
ScreenPtr
);
extern Bool sunInitCommon(
int ,
ScreenPtr ,
off_t ,
Bool (* )(),
void (* )(),
Bool (* )(),
Bool (* )(),
int
);
extern Firm_event* sunKbdGetEvents(
int ,
Bool ,
int* ,
Bool*
);
extern Firm_event* sunMouseGetEvents(
int ,
Bool ,
int* ,
Bool*
);
extern void sunKbdEnqueueEvent(
DeviceIntPtr ,
Firm_event*
);
extern void sunMouseEnqueueEvent(
DeviceIntPtr ,
Firm_event*
);
extern int sunKbdProc(
DeviceIntPtr ,
int
);
extern int sunMouseProc(
DeviceIntPtr ,
int
);
extern void sunKbdWait(
void
);
#define TVTOMILLI(tv) (((tv).tv_usec/1000)+((tv).tv_sec*1000))
extern Bool sunCfbSetupScreen(
ScreenPtr ,
pointer ,
int ,
int ,
int ,
int ,
int ,
int
);
extern Bool sunCfbFinishScreenInit(
ScreenPtr ,
pointer ,
int ,
int ,
int ,
int ,
int ,
int
);
extern Bool sunCfbScreenInit(
ScreenPtr ,
pointer ,
int ,
int ,
int ,
int ,
int ,
int
);
extern void sunInstallColormap(
ColormapPtr
);
extern void sunUninstallColormap(
ColormapPtr
);
extern int sunListInstalledColormaps(
ScreenPtr ,
Colormap*
);
#endif