1*4882a593Smuzhiyun #ifndef __WIN_CONFIG_H__ 2*4882a593Smuzhiyun #define __WIN_CONFIG_H__ 3*4882a593Smuzhiyun /* 4*4882a593Smuzhiyun *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun *Permission is hereby granted, free of charge, to any person obtaining 7*4882a593Smuzhiyun * a copy of this software and associated documentation files (the 8*4882a593Smuzhiyun *"Software"), to deal in the Software without restriction, including 9*4882a593Smuzhiyun *without limitation the rights to use, copy, modify, merge, publish, 10*4882a593Smuzhiyun *distribute, sublicense, and/or sell copies of the Software, and to 11*4882a593Smuzhiyun *permit persons to whom the Software is furnished to do so, subject to 12*4882a593Smuzhiyun *the following conditions: 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun *The above copyright notice and this permission notice shall be 15*4882a593Smuzhiyun *included in all copies or substantial portions of the Software. 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18*4882a593Smuzhiyun *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19*4882a593Smuzhiyun *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20*4882a593Smuzhiyun *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR 21*4882a593Smuzhiyun *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 22*4882a593Smuzhiyun *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23*4882a593Smuzhiyun *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun *Except as contained in this notice, the name of the XFree86 Project 26*4882a593Smuzhiyun *shall not be used in advertising or otherwise to promote the sale, use 27*4882a593Smuzhiyun *or other dealings in this Software without prior written authorization 28*4882a593Smuzhiyun *from the XFree86 Project. 29*4882a593Smuzhiyun * 30*4882a593Smuzhiyun * Authors: Alexander Gottwald 31*4882a593Smuzhiyun */ 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #include "win.h" 34*4882a593Smuzhiyun #ifdef XWIN_XF86CONFIG 35*4882a593Smuzhiyun #include "../xfree86/parser/xf86Parser.h" 36*4882a593Smuzhiyun #endif 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun /* These are taken from hw/xfree86/common/xf86str.h */ 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun typedef struct { 41*4882a593Smuzhiyun CARD32 red, green, blue; 42*4882a593Smuzhiyun } rgb; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun typedef struct { 45*4882a593Smuzhiyun float red, green, blue; 46*4882a593Smuzhiyun } Gamma; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun typedef struct { 49*4882a593Smuzhiyun char *identifier; 50*4882a593Smuzhiyun char *vendor; 51*4882a593Smuzhiyun char *board; 52*4882a593Smuzhiyun char *chipset; 53*4882a593Smuzhiyun char *ramdac; 54*4882a593Smuzhiyun char *driver; 55*4882a593Smuzhiyun struct _confscreenrec *myScreenSection; 56*4882a593Smuzhiyun Bool claimed; 57*4882a593Smuzhiyun Bool active; 58*4882a593Smuzhiyun Bool inUse; 59*4882a593Smuzhiyun int videoRam; 60*4882a593Smuzhiyun void *options; 61*4882a593Smuzhiyun int screen; /* For multi-CRTC cards */ 62*4882a593Smuzhiyun } GDevRec, *GDevPtr; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun typedef struct { 65*4882a593Smuzhiyun char *identifier; 66*4882a593Smuzhiyun char *driver; 67*4882a593Smuzhiyun void *commonOptions; 68*4882a593Smuzhiyun void *extraOptions; 69*4882a593Smuzhiyun } IDevRec, *IDevPtr; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun typedef struct { 72*4882a593Smuzhiyun int frameX0; 73*4882a593Smuzhiyun int frameY0; 74*4882a593Smuzhiyun int virtualX; 75*4882a593Smuzhiyun int virtualY; 76*4882a593Smuzhiyun int depth; 77*4882a593Smuzhiyun int fbbpp; 78*4882a593Smuzhiyun rgb weight; 79*4882a593Smuzhiyun rgb blackColour; 80*4882a593Smuzhiyun rgb whiteColour; 81*4882a593Smuzhiyun int defaultVisual; 82*4882a593Smuzhiyun char **modes; 83*4882a593Smuzhiyun void *options; 84*4882a593Smuzhiyun } DispRec, *DispPtr; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun typedef struct _confxvportrec { 87*4882a593Smuzhiyun char *identifier; 88*4882a593Smuzhiyun void *options; 89*4882a593Smuzhiyun } confXvPortRec, *confXvPortPtr; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun typedef struct _confxvadaptrec { 92*4882a593Smuzhiyun char *identifier; 93*4882a593Smuzhiyun int numports; 94*4882a593Smuzhiyun confXvPortPtr ports; 95*4882a593Smuzhiyun void *options; 96*4882a593Smuzhiyun } confXvAdaptorRec, *confXvAdaptorPtr; 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun typedef struct _confscreenrec { 99*4882a593Smuzhiyun char *id; 100*4882a593Smuzhiyun int screennum; 101*4882a593Smuzhiyun int defaultdepth; 102*4882a593Smuzhiyun int defaultbpp; 103*4882a593Smuzhiyun int defaultfbbpp; 104*4882a593Smuzhiyun GDevPtr device; 105*4882a593Smuzhiyun int numdisplays; 106*4882a593Smuzhiyun DispPtr displays; 107*4882a593Smuzhiyun int numxvadaptors; 108*4882a593Smuzhiyun confXvAdaptorPtr xvadaptors; 109*4882a593Smuzhiyun void *options; 110*4882a593Smuzhiyun } confScreenRec, *confScreenPtr; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun typedef enum { 113*4882a593Smuzhiyun PosObsolete = -1, 114*4882a593Smuzhiyun PosAbsolute = 0, 115*4882a593Smuzhiyun PosRightOf, 116*4882a593Smuzhiyun PosLeftOf, 117*4882a593Smuzhiyun PosAbove, 118*4882a593Smuzhiyun PosBelow, 119*4882a593Smuzhiyun PosRelative 120*4882a593Smuzhiyun } PositionType; 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun typedef struct _screenlayoutrec { 123*4882a593Smuzhiyun confScreenPtr screen; 124*4882a593Smuzhiyun char *topname; 125*4882a593Smuzhiyun confScreenPtr top; 126*4882a593Smuzhiyun char *bottomname; 127*4882a593Smuzhiyun confScreenPtr bottom; 128*4882a593Smuzhiyun char *leftname; 129*4882a593Smuzhiyun confScreenPtr left; 130*4882a593Smuzhiyun char *rightname; 131*4882a593Smuzhiyun confScreenPtr right; 132*4882a593Smuzhiyun PositionType where; 133*4882a593Smuzhiyun int x; 134*4882a593Smuzhiyun int y; 135*4882a593Smuzhiyun char *refname; 136*4882a593Smuzhiyun confScreenPtr refscreen; 137*4882a593Smuzhiyun } screenLayoutRec, *screenLayoutPtr; 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun typedef struct _serverlayoutrec { 140*4882a593Smuzhiyun char *id; 141*4882a593Smuzhiyun screenLayoutPtr screens; 142*4882a593Smuzhiyun GDevPtr inactives; 143*4882a593Smuzhiyun IDevPtr inputs; 144*4882a593Smuzhiyun void *options; 145*4882a593Smuzhiyun } serverLayoutRec, *serverLayoutPtr; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun /* 148*4882a593Smuzhiyun * winconfig.c 149*4882a593Smuzhiyun */ 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun typedef struct { 152*4882a593Smuzhiyun /* Files */ 153*4882a593Smuzhiyun #ifdef XWIN_XF86CONFIG 154*4882a593Smuzhiyun char *configFile; 155*4882a593Smuzhiyun char *configDir; 156*4882a593Smuzhiyun #endif 157*4882a593Smuzhiyun char *fontPath; 158*4882a593Smuzhiyun /* input devices - keyboard */ 159*4882a593Smuzhiyun #ifdef XWIN_XF86CONFIG 160*4882a593Smuzhiyun char *keyboard; 161*4882a593Smuzhiyun #endif 162*4882a593Smuzhiyun char *xkbRules; 163*4882a593Smuzhiyun char *xkbModel; 164*4882a593Smuzhiyun char *xkbLayout; 165*4882a593Smuzhiyun char *xkbVariant; 166*4882a593Smuzhiyun char *xkbOptions; 167*4882a593Smuzhiyun /* layout */ 168*4882a593Smuzhiyun char *screenname; 169*4882a593Smuzhiyun /* mouse settings */ 170*4882a593Smuzhiyun char *mouse; 171*4882a593Smuzhiyun Bool emulate3buttons; 172*4882a593Smuzhiyun long emulate3timeout; 173*4882a593Smuzhiyun } WinCmdlineRec, *WinCmdlinePtr; 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun extern WinCmdlineRec g_cmdline; 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun #ifdef XWIN_XF86CONFIG 178*4882a593Smuzhiyun extern XF86ConfigPtr g_xf86configptr; 179*4882a593Smuzhiyun #endif 180*4882a593Smuzhiyun extern serverLayoutRec g_winConfigLayout; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun /* 183*4882a593Smuzhiyun * Function prototypes 184*4882a593Smuzhiyun */ 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun Bool winReadConfigfile(void); 187*4882a593Smuzhiyun Bool winConfigFiles(void); 188*4882a593Smuzhiyun Bool winConfigOptions(void); 189*4882a593Smuzhiyun Bool winConfigScreens(void); 190*4882a593Smuzhiyun Bool winConfigKeyboard(DeviceIntPtr pDevice); 191*4882a593Smuzhiyun Bool winConfigMouse(DeviceIntPtr pDevice); 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun typedef struct { 194*4882a593Smuzhiyun double freq; 195*4882a593Smuzhiyun int units; 196*4882a593Smuzhiyun } OptFrequency; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun typedef union { 199*4882a593Smuzhiyun unsigned long num; 200*4882a593Smuzhiyun char *str; 201*4882a593Smuzhiyun double realnum; 202*4882a593Smuzhiyun Bool bool; 203*4882a593Smuzhiyun OptFrequency freq; 204*4882a593Smuzhiyun } ValueUnion; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun typedef enum { 207*4882a593Smuzhiyun OPTV_NONE = 0, 208*4882a593Smuzhiyun OPTV_INTEGER, 209*4882a593Smuzhiyun OPTV_STRING, /* a non-empty string */ 210*4882a593Smuzhiyun OPTV_ANYSTR, /* Any string, including an empty one */ 211*4882a593Smuzhiyun OPTV_REAL, 212*4882a593Smuzhiyun OPTV_BOOLEAN, 213*4882a593Smuzhiyun OPTV_PERCENT, 214*4882a593Smuzhiyun OPTV_FREQ 215*4882a593Smuzhiyun } OptionValueType; 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun typedef enum { 218*4882a593Smuzhiyun OPTUNITS_HZ = 1, 219*4882a593Smuzhiyun OPTUNITS_KHZ, 220*4882a593Smuzhiyun OPTUNITS_MHZ 221*4882a593Smuzhiyun } OptFreqUnits; 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun typedef struct { 224*4882a593Smuzhiyun int token; 225*4882a593Smuzhiyun const char *name; 226*4882a593Smuzhiyun OptionValueType type; 227*4882a593Smuzhiyun ValueUnion value; 228*4882a593Smuzhiyun Bool found; 229*4882a593Smuzhiyun } OptionInfoRec, *OptionInfoPtr; 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun /* 232*4882a593Smuzhiyun * Function prototypes 233*4882a593Smuzhiyun */ 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun char *winSetStrOption(void *optlist, const char *name, char *deflt); 236*4882a593Smuzhiyun int winSetBoolOption(void *optlist, const char *name, int deflt); 237*4882a593Smuzhiyun int winSetIntOption(void *optlist, const char *name, int deflt); 238*4882a593Smuzhiyun double winSetRealOption(void *optlist, const char *name, double deflt); 239*4882a593Smuzhiyun double winSetPercentOption(void *optlist, const char *name, double deflt); 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun #ifdef XWIN_XF86CONFIG 242*4882a593Smuzhiyun XF86OptionPtr winFindOption(XF86OptionPtr list, const char *name); 243*4882a593Smuzhiyun char *winFindOptionValue(XF86OptionPtr list, const char *name); 244*4882a593Smuzhiyun #endif 245*4882a593Smuzhiyun int winNameCompare(const char *s1, const char *s2); 246*4882a593Smuzhiyun char *winNormalizeName(const char *s); 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun typedef struct { 249*4882a593Smuzhiyun struct { 250*4882a593Smuzhiyun long leds; 251*4882a593Smuzhiyun long delay; 252*4882a593Smuzhiyun long rate; 253*4882a593Smuzhiyun } keyboard; 254*4882a593Smuzhiyun XkbRMLVOSet xkb; 255*4882a593Smuzhiyun struct { 256*4882a593Smuzhiyun Bool emulate3Buttons; 257*4882a593Smuzhiyun long emulate3Timeout; 258*4882a593Smuzhiyun } pointer; 259*4882a593Smuzhiyun } winInfoRec, *winInfoPtr; 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun extern winInfoRec g_winInfo; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun #endif 264