265 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			265 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
	
#ifndef __WIN_CONFIG_H__
 | 
						|
#define __WIN_CONFIG_H__
 | 
						|
/*
 | 
						|
 *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
 | 
						|
 *
 | 
						|
 *Permission is hereby granted, free of charge, to any person obtaining
 | 
						|
 * a copy of this software and associated documentation files (the
 | 
						|
 *"Software"), to deal in the Software without restriction, including
 | 
						|
 *without limitation the rights to use, copy, modify, merge, publish,
 | 
						|
 *distribute, sublicense, and/or sell copies of the Software, and to
 | 
						|
 *permit persons to whom the Software is furnished to do so, subject to
 | 
						|
 *the following conditions:
 | 
						|
 *
 | 
						|
 *The above copyright notice and this permission notice shall be
 | 
						|
 *included in all copies or substantial portions of the Software.
 | 
						|
 *
 | 
						|
 *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
						|
 *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
						|
 *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
						|
 *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR
 | 
						|
 *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 | 
						|
 *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | 
						|
 *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
						|
 *
 | 
						|
 *Except as contained in this notice, the name of the XFree86 Project
 | 
						|
 *shall not be used in advertising or otherwise to promote the sale, use
 | 
						|
 *or other dealings in this Software without prior written authorization
 | 
						|
 *from the XFree86 Project.
 | 
						|
 *
 | 
						|
 * Authors: Alexander Gottwald	
 | 
						|
 */
 | 
						|
 | 
						|
#include "win.h"
 | 
						|
#ifdef XWIN_XF86CONFIG
 | 
						|
#include "../xfree86/parser/xf86Parser.h"
 | 
						|
#endif
 | 
						|
 | 
						|
/* These are taken from hw/xfree86/common/xf86str.h */
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    CARD32 red, green, blue;
 | 
						|
} rgb;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    float red, green, blue;
 | 
						|
} Gamma;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    char *identifier;
 | 
						|
    char *vendor;
 | 
						|
    char *board;
 | 
						|
    char *chipset;
 | 
						|
    char *ramdac;
 | 
						|
    char *driver;
 | 
						|
    struct _confscreenrec *myScreenSection;
 | 
						|
    Bool claimed;
 | 
						|
    Bool active;
 | 
						|
    Bool inUse;
 | 
						|
    int videoRam;
 | 
						|
    int textClockFreq;
 | 
						|
    pointer options;
 | 
						|
    int screen;                 /* For multi-CRTC cards */
 | 
						|
} GDevRec, *GDevPtr;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    char *identifier;
 | 
						|
    char *driver;
 | 
						|
    pointer commonOptions;
 | 
						|
    pointer extraOptions;
 | 
						|
} IDevRec, *IDevPtr;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    int frameX0;
 | 
						|
    int frameY0;
 | 
						|
    int virtualX;
 | 
						|
    int virtualY;
 | 
						|
    int depth;
 | 
						|
    int fbbpp;
 | 
						|
    rgb weight;
 | 
						|
    rgb blackColour;
 | 
						|
    rgb whiteColour;
 | 
						|
    int defaultVisual;
 | 
						|
    char **modes;
 | 
						|
    pointer options;
 | 
						|
} DispRec, *DispPtr;
 | 
						|
 | 
						|
typedef struct _confxvportrec {
 | 
						|
    char *identifier;
 | 
						|
    pointer options;
 | 
						|
} confXvPortRec, *confXvPortPtr;
 | 
						|
 | 
						|
typedef struct _confxvadaptrec {
 | 
						|
    char *identifier;
 | 
						|
    int numports;
 | 
						|
    confXvPortPtr ports;
 | 
						|
    pointer options;
 | 
						|
} confXvAdaptorRec, *confXvAdaptorPtr;
 | 
						|
 | 
						|
typedef struct _confscreenrec {
 | 
						|
    char *id;
 | 
						|
    int screennum;
 | 
						|
    int defaultdepth;
 | 
						|
    int defaultbpp;
 | 
						|
    int defaultfbbpp;
 | 
						|
    GDevPtr device;
 | 
						|
    int numdisplays;
 | 
						|
    DispPtr displays;
 | 
						|
    int numxvadaptors;
 | 
						|
    confXvAdaptorPtr xvadaptors;
 | 
						|
    pointer options;
 | 
						|
} confScreenRec, *confScreenPtr;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    PosObsolete = -1,
 | 
						|
    PosAbsolute = 0,
 | 
						|
    PosRightOf,
 | 
						|
    PosLeftOf,
 | 
						|
    PosAbove,
 | 
						|
    PosBelow,
 | 
						|
    PosRelative
 | 
						|
} PositionType;
 | 
						|
 | 
						|
typedef struct _screenlayoutrec {
 | 
						|
    confScreenPtr screen;
 | 
						|
    char *topname;
 | 
						|
    confScreenPtr top;
 | 
						|
    char *bottomname;
 | 
						|
    confScreenPtr bottom;
 | 
						|
    char *leftname;
 | 
						|
    confScreenPtr left;
 | 
						|
    char *rightname;
 | 
						|
    confScreenPtr right;
 | 
						|
    PositionType where;
 | 
						|
    int x;
 | 
						|
    int y;
 | 
						|
    char *refname;
 | 
						|
    confScreenPtr refscreen;
 | 
						|
} screenLayoutRec, *screenLayoutPtr;
 | 
						|
 | 
						|
typedef struct _serverlayoutrec {
 | 
						|
    char *id;
 | 
						|
    screenLayoutPtr screens;
 | 
						|
    GDevPtr inactives;
 | 
						|
    IDevPtr inputs;
 | 
						|
    pointer options;
 | 
						|
} serverLayoutRec, *serverLayoutPtr;
 | 
						|
 | 
						|
/*
 | 
						|
 * winconfig.c
 | 
						|
 */
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    /* Files */
 | 
						|
#ifdef XWIN_XF86CONFIG
 | 
						|
    char *configFile;
 | 
						|
    char *configDir;
 | 
						|
#endif
 | 
						|
    char *fontPath;
 | 
						|
    /* input devices - keyboard */
 | 
						|
#ifdef XWIN_XF86CONFIG
 | 
						|
    char *keyboard;
 | 
						|
#endif
 | 
						|
    char *xkbRules;
 | 
						|
    char *xkbModel;
 | 
						|
    char *xkbLayout;
 | 
						|
    char *xkbVariant;
 | 
						|
    char *xkbOptions;
 | 
						|
    /* layout */
 | 
						|
    char *screenname;
 | 
						|
    /* mouse settings */
 | 
						|
    char *mouse;
 | 
						|
    Bool emulate3buttons;
 | 
						|
    long emulate3timeout;
 | 
						|
} WinCmdlineRec, *WinCmdlinePtr;
 | 
						|
 | 
						|
extern WinCmdlineRec g_cmdline;
 | 
						|
 | 
						|
#ifdef XWIN_XF86CONFIG
 | 
						|
extern XF86ConfigPtr g_xf86configptr;
 | 
						|
#endif
 | 
						|
extern serverLayoutRec g_winConfigLayout;
 | 
						|
 | 
						|
/*
 | 
						|
 * Function prototypes
 | 
						|
 */
 | 
						|
 | 
						|
Bool winReadConfigfile(void);
 | 
						|
Bool winConfigFiles(void);
 | 
						|
Bool winConfigOptions(void);
 | 
						|
Bool winConfigScreens(void);
 | 
						|
Bool winConfigKeyboard(DeviceIntPtr pDevice);
 | 
						|
Bool winConfigMouse(DeviceIntPtr pDevice);
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    double freq;
 | 
						|
    int units;
 | 
						|
} OptFrequency;
 | 
						|
 | 
						|
typedef union {
 | 
						|
    unsigned long num;
 | 
						|
    char *str;
 | 
						|
    double realnum;
 | 
						|
    Bool bool;
 | 
						|
    OptFrequency freq;
 | 
						|
} ValueUnion;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    OPTV_NONE = 0,
 | 
						|
    OPTV_INTEGER,
 | 
						|
    OPTV_STRING,                /* a non-empty string */
 | 
						|
    OPTV_ANYSTR,                /* Any string, including an empty one */
 | 
						|
    OPTV_REAL,
 | 
						|
    OPTV_BOOLEAN,
 | 
						|
    OPTV_PERCENT,
 | 
						|
    OPTV_FREQ
 | 
						|
} OptionValueType;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    OPTUNITS_HZ = 1,
 | 
						|
    OPTUNITS_KHZ,
 | 
						|
    OPTUNITS_MHZ
 | 
						|
} OptFreqUnits;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    int token;
 | 
						|
    const char *name;
 | 
						|
    OptionValueType type;
 | 
						|
    ValueUnion value;
 | 
						|
    Bool found;
 | 
						|
} OptionInfoRec, *OptionInfoPtr;
 | 
						|
 | 
						|
/*
 | 
						|
 * Function prototypes
 | 
						|
 */
 | 
						|
 | 
						|
char *winSetStrOption(pointer optlist, const char *name, char *deflt);
 | 
						|
int winSetBoolOption(pointer optlist, const char *name, int deflt);
 | 
						|
int winSetIntOption(pointer optlist, const char *name, int deflt);
 | 
						|
double winSetRealOption(pointer optlist, const char *name, double deflt);
 | 
						|
double winSetPercentOption(pointer optlist, const char *name, double deflt);
 | 
						|
 | 
						|
#ifdef XWIN_XF86CONFIG
 | 
						|
XF86OptionPtr winFindOption(XF86OptionPtr list, const char *name);
 | 
						|
char *winFindOptionValue(XF86OptionPtr list, const char *name);
 | 
						|
#endif
 | 
						|
int winNameCompare(const char *s1, const char *s2);
 | 
						|
char *winNormalizeName(const char *s);
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    struct {
 | 
						|
        long leds;
 | 
						|
        long delay;
 | 
						|
        long rate;
 | 
						|
    } keyboard;
 | 
						|
    XkbRMLVOSet xkb;
 | 
						|
    struct {
 | 
						|
        Bool emulate3Buttons;
 | 
						|
        long emulate3Timeout;
 | 
						|
    } pointer;
 | 
						|
} winInfoRec, *winInfoPtr;
 | 
						|
 | 
						|
extern winInfoRec g_winInfo;
 | 
						|
 | 
						|
#endif
 |