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