#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 Bool customDPI; 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