xf86.h
来自「基于组件方式开发操作系统的OSKIT源代码」· C头文件 代码 · 共 736 行 · 第 1/2 页
H
736 行
/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86.h,v 3.47.2.5 1997/07/13 14:45:02 dawes Exp $ *//* * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. * * 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 Thomas Roell not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Thomas Roell makes no representations * about the suitability of this software for any purpose. It is provided * "as is" without express or implied warranty. * * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL THOMAS ROELL 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. * *//* $XConsortium: xf86.h /main/28 1996/10/23 18:43:15 kaleb $ */#ifndef _XF86_H#define _XF86_H#include "misc.h"#ifndef OSKIT#include "input.h"#endif /* !OSKIT */#include "scrnintstr.h"#include "xf86_Option.h"/* * structure common for all modes */typedef struct _DispM { struct _DispM *prev,*next; char *name; /* identifier of this mode */ /* These are the values that the user sees/provides */ int Clock; /* pixel clock */ int HDisplay; /* horizontal timing */ int HSyncStart; int HSyncEnd; int HTotal; int HSkew; int VDisplay; /* vertical timing */ int VSyncStart; int VSyncEnd; int VTotal; int Flags; /* These are the values the hardware uses */ int SynthClock; /* Actual clock freq to be programmed */ int CrtcHDisplay; int CrtcHSyncStart; int CrtcHSyncEnd; int CrtcHTotal; int CrtcHSkew; int CrtcVDisplay; int CrtcVSyncStart; int CrtcVSyncEnd; int CrtcVTotal; Bool CrtcHAdjusted; Bool CrtcVAdjusted; int PrivSize; INT32 *Private;} DisplayModeRec, *DisplayModePtr;#define V_PHSYNC 0x0001#define V_NHSYNC 0x0002#define V_PVSYNC 0x0004#define V_NVSYNC 0x0008#define V_INTERLACE 0x0010#define V_DBLSCAN 0x0020#define V_CSYNC 0x0040#define V_PCSYNC 0x0080#define V_NCSYNC 0x0100#define V_HSKEW 0x0200 /* hskew provided */#define V_PIXMUX 0x1000#define V_DBLCLK 0x2000#define V_CLKDIV2 0x4000/* The monitor description */#define MAX_HSYNC 8#define MAX_VREFRESH 8typedef struct { float hi, lo; } range;typedef struct { char *id; char *vendor; char *model; float EMPTY; int n_hsync; range hsync[MAX_HSYNC]; int n_vrefresh; range vrefresh[MAX_VREFRESH]; DisplayModePtr Modes, Last; /* Start and end of monitor's mode list */} MonRec, *MonPtr;#define MAXCLOCKS 128#define MAXDACSPEEDS 4 /* for <= 8, 16, 24, 32bpp *//* Set default max allowed clock to 90MHz */#define DEFAULT_MAX_CLOCK 90000/* * the graphic device */typedef struct { Bool configured; int tmpIndex; int scrnIndex; Bool (* Probe)(#if NeedNestedPrototypes void#endif); Bool (* Init)(#if NeedNestedPrototypes int scr_index, ScreenPtr pScreen, int argc, char **argv#endif); int (* ValidMode)(#if NeedNestedPrototypes DisplayModePtr target, Bool verbose, int flag#endif); void (* EnterLeaveVT)(#if NeedNestedPrototypes int, int#endif); void (* EnterLeaveMonitor)(#if NeedNestedPrototypes int#endif); void (* EnterLeaveCursor)(#if NeedNestedPrototypes int#endif); void (* AdjustFrame)(#if NeedNestedPrototypes int x, int y#endif); Bool (* SwitchMode)(#if NeedNestedPrototypes DisplayModePtr modes#endif); void (* DPMSSet)(#if NeedNestedPrototypes int level#endif); void (* PrintIdent)(#if NeedNestedPrototypes void#endif); int depth; xrgb weight; int bitsPerPixel; int defaultVisual; int virtualX,virtualY; int displayWidth; int frameX0, frameY0, frameX1, frameY1; OFlagSet options; OFlagSet clockOptions; OFlagSet xconfigFlag; char *chipset; char *ramdac; int dacSpeeds[MAXDACSPEEDS]; int dacSpeedBpp; int clocks; int clock[MAXCLOCKS]; int maxClock; int videoRam; int BIOSbase; /* Base address of video BIOS */ unsigned long MemBase; /* Frame buffer base address */ int width, height; /* real display dimensions */ unsigned long speedup; /* Use SpeedUp code */ DisplayModePtr modes; MonPtr monitor; char *clockprog; int textclock; Bool bankedMono; /* display supports banking for mono server */ char *name; xrgb blackColour; xrgb whiteColour; int *validTokens; char *patchLevel; unsigned int IObase; /* AGX - video card I/O reg base */ unsigned int DACbase; /* AGX - dac I/O reg base */ unsigned long COPbase; /* AGX - coprocessor memory base */ unsigned int POSbase; /* AGX - I/O address of POS regs */ int instance; /* AGX - XGA video card instance number */ int s3Madjust; int s3Nadjust; int s3MClk; int chipID; int chipRev; unsigned long VGAbase; /* AGX - 64K aperture memory address */ int s3RefClk; int s3BlankDelay; int textClockFreq; char *DCConfig; char *DCOptions; int MemClk; /* General flag used for memory clocking */#ifdef XFreeXDGA int directMode; void (*setBank)(#if NeedNestedPrototypes int#endif ); unsigned long physBase; int physSize;#endif#ifdef XF86SETUP void *device; /* This should be GDevPtr, but it causes problems with include file order */#endif} ScrnInfoRec, *ScrnInfoPtr;typedef struct { int token; /* id of the token */ char *name; /* pointer to the LOWERCASED name */} SymTabRec, *SymTabPtr;#define VGA_DRIVER 1#define V256_DRIVER 2#define WGA_DRIVER 3#define XGA_DRIVER 4#define ENTER 1#define LEAVE 0/* These are possible return values for xf86CheckMode() and ValidMode() */#define MODE_OK 0#define MODE_HSYNC 1 /* hsync out of range */#define MODE_VSYNC 2 /* vsync out of range */#define MODE_BAD 255 /* unspecified reason *//* These are the possible flags for ValidMode */#define MODE_USED 1 /* this mode is really being used in the */ /* modes line of the Display Subsection */#define MODE_SUGGESTED 2 /* this mode is included in the available*/ /* modes in the Monitor Section */#define MODE_VID 3 /* this is called from the VidMode extension *//* Indicates the level of DPMS support */typedef enum { DPMSSupportUnknown, DPMSNotSupported, DPMSFullSupport} DPMSSupportStatus;/* flags for xf86LookupMode */#define LOOKUP_DEFAULT 0 /* Use default mode lookup method */#define LOOKUP_BEST_REFRESH 1 /* Pick modes with best refresh */#define LOOKUP_NO_INTERLACED 2 /* Ignore interlaced modes */#define LOOKUP_FORCE_DEFAULT 4 /* Force default lookup method */#define INTERLACE_REFRESH_WEIGHT 1.5/* SpeedUp options */#define SPEEDUP_FILLBOX 1#define SPEEDUP_FILLRECT 2#define SPEEDUP_BITBLT 4#define SPEEDUP_LINE 8#define SPEEDUP_TEGBLT8 0x10#define SPEEDUP_RECTSTIP 0x20/* * This is the routines where SpeedUp is quicker than fXF86. The problem is * that the SpeedUp fillbox is better for drawing vertical and horizontal * line segments, and the fXF86 version is significantly better for * more general lines */#define SPEEDUP_BEST (SPEEDUP_FILLRECT | SPEEDUP_BITBLT | \ SPEEDUP_LINE | SPEEDUP_TEGBLT8 | \ SPEEDUP_RECTSTIP)/*#define SPEEDUP_BEST (SPEEDUP_FILLBOX | SPEEDUP_FILLRECT | \ SPEEDUP_BITBLT | SPEEDUP_LINE | \ SPEEDUP_TEGBLT8 | SPEEDUP_RECTSTIP)*//* * SpeedUp routines which are not dependent on the screen virtual resolution */#ifndef SPEEDUP_ANYWIDTH#define SPEEDUP_ANYWIDTH (SPEEDUP_FILLRECT | SPEEDUP_BITBLT | \ SPEEDUP_LINE | SPEEDUP_FILLBOX)#endif/* * SpeedUp routines which are not dependent on ET4000 */#ifndef SPEEDUP_ANYCHIPSET#define SPEEDUP_ANYCHIPSET (SPEEDUP_TEGBLT8 | SPEEDUP_RECTSTIP)#endif/* All SpeedUps */#define SPEEDUP_ALL (SPEEDUP_FILLBOX | SPEEDUP_FILLRECT | \ SPEEDUP_BITBLT | SPEEDUP_LINE | \ SPEEDUP_TEGBLT8 | SPEEDUP_RECTSTIP)/* SpeedUp flags used if SpeedUp is not in XF86Config */#define SPEEDUP_DEFAULT SPEEDUP_ALLextern Bool xf86VTSema;#ifndef OSKIT/* Mouse device private record */typedef struct _MouseDevRec { DeviceProc mseProc; /* procedure for initializing */ void (* mseEvents)(#if NeedNestedPrototypes struct _MouseDevRec *#endif ); /* proc for processing events */ DeviceIntPtr device; int mseFd; char *mseDevice; int mseType; int baudRate; int oldBaudRate; int sampleRate; int lastButtons; int threshold, num, den; /* acceleration */ int emulateState; /* automata state for 2 button mode */ Bool emulate3Buttons; int emulate3Timeout; /* Timeout for 3 button emulation */ Bool chordMiddle; int mouseFlags; /* Flags to Clear after opening mouse dev */ int truebuttons; /* Arg to maintain before emulate3buttons timer callback */ #ifndef CSRG_BASED /* xque part */ int xquePending; /* was xqueFd, but nothing uses that */ int xqueSema;#endif#ifdef XINPUT struct _LocalDeviceRec *local;#endif} MouseDevRec, *MouseDevPtr;#ifdef XINPUT#define MOUSE_DEV(dev) (MouseDevPtr) PRIVATE(dev)#else
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?