summaryrefslogtreecommitdiff
path: root/hw/xfree86
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xfree86')
-rw-r--r--hw/xfree86/common/xf86AutoConfig.c2
-rw-r--r--hw/xfree86/common/xf86Config.c2
-rw-r--r--hw/xfree86/common/xf86Configure.c22
-rw-r--r--hw/xfree86/common/xf86Init.c50
-rw-r--r--hw/xfree86/common/xf86Module.h22
-rw-r--r--hw/xfree86/common/xorgHelper.c20
-rw-r--r--hw/xfree86/common/xorgVersion.h51
-rw-r--r--hw/xfree86/doc/README.DRI6
-rw-r--r--hw/xfree86/doc/README.fonts101
-rw-r--r--hw/xfree86/doc/devel/README.DRIcomp6
-rw-r--r--hw/xfree86/doc/man/Xorg.man.pre691
-rw-r--r--hw/xfree86/doc/man/xorg.conf.man.pre1872
-rw-r--r--hw/xfree86/doc/sgml/DESIGN.sgml30
-rw-r--r--hw/xfree86/fbdevhw/fbdevhw.man.pre3
-rw-r--r--hw/xfree86/getconfig/cfg.man.pre37
-rw-r--r--hw/xfree86/getconfig/cfg.sample27
-rw-r--r--hw/xfree86/getconfig/getconfig4
-rw-r--r--hw/xfree86/getconfig/getconfig.man.pre26
-rw-r--r--hw/xfree86/getconfig/getconfig.pl31
-rw-r--r--hw/xfree86/getconfig/xorg.cfg50
-rw-r--r--hw/xfree86/parser/scan.c45
-rw-r--r--hw/xfree86/utils/gtf/gtf.c28
-rw-r--r--hw/xfree86/utils/gtf/gtf.man.pre15
-rw-r--r--hw/xfree86/utils/xorgcfg/TODO8
-rw-r--r--hw/xfree86/utils/xorgcfg/XOrgCfg.pre1851
-rw-r--r--hw/xfree86/utils/xorgcfg/expert.c2
-rw-r--r--hw/xfree86/utils/xorgcfg/interface.c24
-rw-r--r--hw/xfree86/utils/xorgcfg/keyboard-cfg.c2
-rw-r--r--hw/xfree86/utils/xorgcfg/loader.c7
-rw-r--r--hw/xfree86/utils/xorgcfg/startx.c12
-rw-r--r--hw/xfree86/utils/xorgcfg/text-mode.c26
-rw-r--r--hw/xfree86/utils/xorgcfg/xf86config.c2
-rw-r--r--hw/xfree86/utils/xorgcfg/xorgcfg.man.pre152
-rw-r--r--hw/xfree86/utils/xorgconfig/Cards2
-rw-r--r--hw/xfree86/utils/xorgconfig/xorgconfig.c2906
-rw-r--r--hw/xfree86/utils/xorgconfig/xorgconfig.man.pre22
-rw-r--r--hw/xfree86/xorgconf.cpp626
37 files changed, 8529 insertions, 254 deletions
diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index 7c773fee6..5f4886724 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -265,7 +265,7 @@ xf86AutoConfig(void)
" -v 0x%04x -d 0x%04x -r 0x%02x -s 0x%04x"
" -b 0x%04x -c 0x%04x",
path,
- (unsigned int)xf86GetVersion(),
+ (unsigned int)xorgGetVersion(),
searchPath,
info->vendor, info->chipType, info->chipRev,
info->subsysVendor, info->subsysCard,
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 36285b1ba..d396366a2 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1102,7 +1102,7 @@ configInputKbd(IDevPtr inputp)
#endif
#ifdef XKB
if (!xf86IsPc98()) {
- xf86Info.xkbrules = "xfree86";
+ xf86Info.xkbrules = __XKBDEFRULES__;
xf86Info.xkbmodel = "pc105";
xf86Info.xkblayout = "us";
xf86Info.xkbvariant = NULL;
diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
index 81ce26eec..e7292fe57 100644
--- a/hw/xfree86/common/xf86Configure.c
+++ b/hw/xfree86/common/xf86Configure.c
@@ -500,7 +500,7 @@ configureLayoutSection (void)
int scrnum = 0;
parsePrologue (XF86ConfLayoutPtr, XF86ConfLayoutRec)
- ptr->lay_identifier = "XFree86 Configured";
+ ptr->lay_identifier = "X.org Configured";
{
XF86ConfInputrefPtr iptr;
@@ -978,29 +978,33 @@ DoConfigure()
ErrorF("\n");
#ifdef SCO
- ErrorF("\nXFree86 is using the kernel event driver to access the mouse.\n"
- "If you wish to use the internal XFree86 mouse drivers, please\n"
+ ErrorF("\n"__XSERVERNAME__
+ " is using the kernel event driver to access the mouse.\n"
+ "If you wish to use the internal "__XSERVERNAME__
+ "mouse drivers, please\n"
"edit the file and correct the Device.\n");
#else /* !SCO */
if (!foundMouse) {
- ErrorF("\nXFree86 is not able to detect your mouse.\n"
+ ErrorF("\n"__XSERVERNAME__" is not able to detect your mouse.\n"
"Edit the file and correct the Device.\n");
} else {
#ifndef __UNIXOS2__ /* OS/2 definitely has a mouse */
- ErrorF("\nXFree86 detected your mouse at device %s.\n"
+ ErrorF("\n"__XSERVERNAME__" detected your mouse at device %s.\n"
"Please check your config if the mouse is still not\n"
- "operational, as by default XFree86 tries to autodetect\n"
+ "operational, as by default "__XSERVERNAME__
+ " tries to autodetect\n"
"the protocol.\n",DFLT_MOUSE_DEV);
#endif
}
#endif /* !SCO */
if (xf86NumScreens > 1) {
- ErrorF("\nXFree86 has configured a multihead system, please check your config.\n");
+ ErrorF("\n"__XSERVERNAME__
+ " has configured a multihead system, please check your config.\n");
}
- ErrorF("\nYour XF86Config file is %s\n\n", filename);
- ErrorF("To test the server, run 'XFree86 -xf86config %s'\n\n", filename);
+ ErrorF("\nYour %s file is %s\n\n", XF86CONFIGFILE ,filename);
+ ErrorF("To test the server, run 'X -xf86config %s'\n\n", filename);
bail:
OsCleanup(TRUE);
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 979b655ee..c1918c6ef 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -69,7 +69,7 @@
#include "xf86Priv.h"
#include "xf86Config.h"
#include "xf86_OSlib.h"
-#include "xf86Version.h"
+#include "xorgVersion.h"
#include "xf86Date.h"
#include "xf86Build.h"
#include "mipointer.h"
@@ -1262,12 +1262,17 @@ AbortDDX()
void
OsVendorFatalError()
{
- ErrorF("\nWhen reporting a problem related to a server crash, please send\n"
- "the full server output, not just the last messages.\n");
- if (xf86LogFile && xf86LogFileWasOpened)
- ErrorF("This can be found in the log file \"%s\".\n", xf86LogFile);
- ErrorF("Please report problems to %s.\n", BUILDERADDR);
- ErrorF("\n");
+#ifdef VENDORSUPPORT
+ ErrorF("\nPlease refer to your Operating System Vendor support pages\n"
+ "at %s for support on this crash.\n",VENDORSUPPORT);
+#else
+ ErrorF("\nPlease consult the "XVENDORNAME" support \n"
+ "\t at "__VENDORDWEBSUPPORT__"\n for help. \n");
+#endif
+ if (xf86LogFile && xf86LogFileWasOpened)
+ ErrorF("Please also check the log file at \"%s\" for additional "
+ "information.\n", xf86LogFile);
+ ErrorF("\n");
}
int
@@ -1706,7 +1711,7 @@ ddxUseMsg()
#define OSVENDOR ""
#endif
#ifndef PRE_RELEASE
-#define PRE_RELEASE XF86_VERSION_SNAP
+#define PRE_RELEASE XORG_VERSION_SNAP
#endif
static void
@@ -1714,24 +1719,25 @@ xf86PrintBanner()
{
#if PRE_RELEASE
ErrorF("\n"
- "This is a pre-release version of XFree86, and is not supported in any\n"
- "way. Bugs may be reported to XFree86@XFree86.Org and patches submitted\n"
- "to fixes@XFree86.Org. Before reporting bugs in pre-release versions,\n"
- "please check the latest version in the XFree86 CVS repository\n"
- "(http://www.XFree86.Org/cvs).\n");
-#endif
- ErrorF("\nXFree86 Version %d.%d.%d", XF86_VERSION_MAJOR, XF86_VERSION_MINOR,
- XF86_VERSION_PATCH);
-#if XF86_VERSION_SNAP > 0
+ "This is a pre-release version of the " XVENDORNAME " X11.\n"
+ "Portions of this release are based on XFree86 4.4RC2 and selected\n"
+ "files from XFree86 4.4RC3. It is not supported in any way.\n"
+ "Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.\n"
+ "Select the \"xorg\" product for bugs you find in this release.\n"
+ "Before reporting bugs in pre-release versions please check the\n"
+ "latest version in the " XVENDORNAME " \"monolithic tree\" CVS\n"
+ "repository hosted at http://www.freedesktop.org/Software/xorg/");
+#endif
+#if XORG_VERSION_SNAP > 0
ErrorF(".%d", XF86_VERSION_SNAP);
#endif
-#if XF86_VERSION_SNAP >= 900
- ErrorF(" (%d.%d.0 RC %d)", XF86_VERSION_MAJOR, XF86_VERSION_MINOR + 1,
- XF86_VERSION_SNAP - 900);
+#if XORG_VERSION_SNAP >= 900
+ ErrorF(" (%d.%d.0 RC %d)", XORG_VERSION_MAJOR, XORG_VERSION_MINOR + 1,
+ XORG_VERSION_SNAP - 900);
#endif
-#ifdef XF86_CUSTOM_VERSION
+#ifdef XORG_CUSTOM_VERSION
ErrorF(" (%s)", XF86_CUSTOM_VERSION);
#endif
ErrorF("\nRelease Date: %s\n", XF86_DATE);
@@ -1779,7 +1785,7 @@ xf86PrintBanner()
#if defined(BUILDERSTRING)
ErrorF("%s \n",BUILDERSTRING);
#endif
- ErrorF("\tBefore reporting problems, check http://www.XFree86.Org/\n"
+ ErrorF("\tBefore reporting problems, check "__VENDORDWEBSUPPORT__"\n"
"\tto make sure that you have the latest version.\n");
#ifdef XFree86LOADER
ErrorF("Module Loader present\n");
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index bd18e895f..f0ac3bd59 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -63,11 +63,11 @@ typedef enum {
/* Built-in ABI classes. These definitions must not be changed. */
#define ABI_CLASS_NONE NULL
-#define ABI_CLASS_ANSIC "XFree86 ANSI C Emulation"
-#define ABI_CLASS_VIDEODRV "XFree86 Video Driver"
-#define ABI_CLASS_XINPUT "XFree86 XInput driver"
-#define ABI_CLASS_EXTENSION "XFree86 Server Extension"
-#define ABI_CLASS_FONT "XFree86 Font Renderer"
+#define ABI_CLASS_ANSIC "X.Org ANSI C Emulation"
+#define ABI_CLASS_VIDEODRV "X.Org Video Driver"
+#define ABI_CLASS_XINPUT "X.Org XInput driver"
+#define ABI_CLASS_EXTENSION "X.Org Server Extension"
+#define ABI_CLASS_FONT "X.Org Font Renderer"
#define ABI_MINOR_MASK 0x0000FFFF
#define ABI_MAJOR_MASK 0xFFFF0000
@@ -95,9 +95,9 @@ typedef enum {
#ifndef MODULEVENDORSTRING
#ifndef __OS2ELF__
-#define MODULEVENDORSTRING "The XFree86 Project"
+#define MODULEVENDORSTRING "X.Org Foundation"
#else
-#define MODULEVENDORSTRING "The XFree86 Project - XFree86/OS2"
+#define MODULEVENDORSTRING "X.Org Foundation - OS2"
#endif
#endif
@@ -129,10 +129,10 @@ typedef enum {
* the video driver ABI are themselves video drivers.
*/
#define MOD_CLASS_NONE NULL
-#define MOD_CLASS_VIDEODRV "XFree86 Video Driver"
-#define MOD_CLASS_XINPUT "XFree86 XInput Driver"
-#define MOD_CLASS_FONT "XFree86 Font Renderer"
-#define MOD_CLASS_EXTENSION "XFree86 Server Extension"
+#define MOD_CLASS_VIDEODRV "X.Org Video Driver"
+#define MOD_CLASS_XINPUT "X.Org XInput Driver"
+#define MOD_CLASS_FONT "X.Org Font Renderer"
+#define MOD_CLASS_EXTENSION "X.Org Server Extension"
/* This structure is expected to be returned by the initfunc */
typedef struct {
diff --git a/hw/xfree86/common/xorgHelper.c b/hw/xfree86/common/xorgHelper.c
new file mode 100644
index 000000000..c6364f19e
--- /dev/null
+++ b/hw/xfree86/common/xorgHelper.c
@@ -0,0 +1,20 @@
+/* $XdotOrg$ */
+
+#include "X.h"
+#include "os.h"
+#include "servermd.h"
+#include "pixmapstr.h"
+#include "windowstr.h"
+#include "propertyst.h"
+#include "gcstruct.h"
+#include "loaderProcs.h"
+#include "xf86.h"
+#include "xf86Priv.h"
+#include "xorgVersion.h"
+
+
+CARD32
+xorgGetVersion()
+{
+ return XORG_VERSION_CURRENT;
+}
diff --git a/hw/xfree86/common/xorgVersion.h b/hw/xfree86/common/xorgVersion.h
new file mode 100644
index 000000000..bfc66a59c
--- /dev/null
+++ b/hw/xfree86/common/xorgVersion.h
@@ -0,0 +1,51 @@
+/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 1.1.4.3 2003/12/06 13:24:23 kaleb Exp $ */
+
+/*
+ * Copyright (c) 2004, X.Org Foundation
+ *
+ * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
+ * and author(s) 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 copyright holder(s) and author(s).
+ */
+
+#ifndef XORG_VERSION_H
+# define XORG_VERSION_H
+
+# ifndef XORG_VERSION_CURRENT
+# error
+# endif
+
+# define XORG_VERSION_NUMERIC(major,minor,patch,snap,dummy) \
+ (((major) * 10000000) + ((minor) * 100000) + ((patch) * 1000) + snap)
+
+# define XORG_GET_MAJOR_VERSION(vers) ((vers) / 10000000)
+# define XORG_GET_MINOR_VERSION(vers) (((vers) % 10000000) / 100000)
+# define XORG_GET_PATCH_VERSION(vers) (((vers) % 100000) / 1000)
+# define XORG_GET_SNAP_VERSION(vers) ((vers) % 1000)
+
+# define XORG_VERSION_MAJOR XORG_GET_MAJOR_VERSION(XORG_VERSION_CURRENT)
+# define XORG_VERSION_MINOR XORG_GET_MINOR_VERSION(XORG_VERSION_CURRENT)
+# define XORG_VERSION_PATCH XORG_GET_PATCH_VERSION(XORG_VERSION_CURRENT)
+# define XORG_VERSION_SNAP XORG_GET_PATCH_VERSION(XORG_VERSION_CURRENT)
+
+#endif
+/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 1.1.4.3 2003/12/06 13:24:23 kaleb Exp $ */
diff --git a/hw/xfree86/doc/README.DRI b/hw/xfree86/doc/README.DRI
index e3daac059..3962a0686 100644
--- a/hw/xfree86/doc/README.DRI
+++ b/hw/xfree86/doc/README.DRI
@@ -8,7 +8,7 @@
1.1 Copyright
-Copyright © 2000-2001 by VA Linux Systems, Inc. All Rights Reserved.
+Copyright 2000-2001 by VA Linux Systems, Inc. All Rights Reserved.
Permission is granted to make and distribute verbatim copies of this document
provided the copyright notice and this permission notice are preserved on all
@@ -1251,7 +1251,5 @@ demo programs is available from http://dri.sourceforge.net/res.phtml
o In the future there may be IHV and Linux vendor support resources for
the DRI.
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml,v 1.29 dawes Exp $
+ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml,v 1.28 dawes Exp $
-
-$XFree86: $
diff --git a/hw/xfree86/doc/README.fonts b/hw/xfree86/doc/README.fonts
index ea9628a4b..26b92cd01 100644
--- a/hw/xfree86/doc/README.fonts
+++ b/hw/xfree86/doc/README.fonts
@@ -1,14 +1,15 @@
- Fonts in XFree86
+ Fonts in X11R6.7
- Juliusz Chroboczek, <jch@xfree86.org>
+ Juliusz Chroboczek, <jch@pps.jussieu.fr>
- 17 November 2003
+ 25 March 2004
1. Introduction
-This document describes the support for fonts in XFree86. Installing fonts
+This document describes the support for fonts in X11R6.7. Installing fonts
(section 2., page 1) is aimed at the casual user wishing to install fonts in
-XFree86; the rest of the document describes the font support in more detail.
+X11R6.7 or XFree86; the rest of the document describes the font support in
+more detail.
We assume some familiarity with digital fonts. If anything is not clear to
you, please consult Appendix: Background (section 5., page 1) at the end of
@@ -16,10 +17,10 @@ this document for background information.
1.1 Two font systems
-XFree86 includes two font systems: the core X11 fonts system, which is
-present in all implementations of X11, and the Xft fonts system, which is not
-currently distributed with implementations of X11 that are not based on
-XFree86 but will hopefully be included by them in the future
+X includes two font systems: the original core X11 fonts system, which is
+present in all implementations of X11, and the Xft fonts system, which may
+not be distributed with implementations of X11 that are not based on X116.7.0
+but will hopefully be included by them in the future
The core X11 fonts system is directly derived from the fonts system included
with X11R1 in 1987, which could only use monochrome bitmap fonts. Over the
@@ -36,7 +37,7 @@ ments with embedded fonts.
Xft is not compatible with the core fonts system: usage of Xft requires mak-
ing fairly extensive changes to toolkits (user-interface libraries). While
-XFree86 will continue to maintain the core fonts system, toolkit authors are
+X.org will continue to maintain the core fonts system, toolkit authors are
encouraged to switch to Xft as soon as possible.
2. Installing fonts
@@ -48,13 +49,13 @@ access newly-installed fonts.
Xft has no configuration mechanism itself, rather it relies upon the fontcon-
fig library to configure and customize fonts. That library is not specific
-to XFree86 or indeed on any particular font output mechanism. This discus-
+to X11R6.7.0 or indeed on any particular font output mechanism. This discus-
sion describes how fontconfig, rather than Xft, works.
2.1.1 Installing fonts in Xft
Fontconfig looks for fonts in a set of well-known directories that include
-all of XFree86's standard font directories (`/usr/X11R6/lib/X11/lib/fonts/*')
+all of X11R6.7's standard font directories (`/usr/X11R6/lib/X11/lib/fonts/*')
by default) as well as a directory called `.fonts/' in the user's home direc-
tory. Installing a font for use by Xft applications is as simple as copying
a font file into one of these directories.
@@ -114,9 +115,9 @@ Anti-aliasing can be disabled for all fonts by the following incantation:
</edit>
</match>
-Xft supports sub-pixel rasterisation on LCD displays. XFree86 should auto-
-matically enable this feature on laptops and when using an LCD monitor con-
-nected with a DVI cable; you can check whether this was done by typing
+Xft supports sub-pixel rasterisation on LCD displays. X11R67 should automat-
+ically enable this feature on laptops and when using an LCD monitor connected
+with a DVI cable; you can check whether this was done by typing
$ xdpyinfo -ext RENDER | grep sub-pixel
@@ -167,10 +168,10 @@ disabled by your Xft configuration file.
2.1.4 Troubleshooting
If some Xft-based applications don't seem to notice the changes you are mak-
-ing to your configuration files, they may be linked against the XFree86 4.2
-version of Xft. In order to fix the problem, you should relink them against
-a current version of Xft; on most systems, it is enough to install the cur-
-rent version of the Xft and Fontconfig libraries.
+ing to your configuration files, they may be linked against an old version of
+Xft. In order to fix the problem, you should relink them against a current
+version of Xft; on most systems, it is enough to install the current version
+of the Xft and Fontconfig libraries.
If, for some reason, you cannot upgrade the shared libraries, please check
the Xft(3) manual page included with XFree86 4.2 for the configuration mecha-
@@ -185,8 +186,8 @@ of this new directory by including it in the font path.
2.2.1 Installing bitmap fonts
-The XFree86 server can use bitmap fonts in both the cross-platform BDF format
-and the somewhat more efficient binary PCF format. (XFree86 also supports
+The X11R6.7 server can use bitmap fonts in both the cross-platform BDF format
+and the somewhat more efficient binary PCF format. (X11R6.7 also supports
the obsolete SNF format.)
Bitmap fonts are normally distributed in the BDF format. Before installing
@@ -215,7 +216,7 @@ directory; see Setting the server font path (section 2.2.4, page 1) below.
2.2.2 Installing scalable fonts
-The XFree86 server supports scalable fonts in four formats: Type 1, Speedo,
+The X11R6.7 server supports scalable fonts in four formats: Type 1, Speedo,
TrueType and CIDFont. This section only applies to the former three; for
information on CIDFonts, please see Installing CIDFonts (section 2.2.3, page
1) later in this document.
@@ -251,7 +252,7 @@ CMap `UniKS-UCS2-H' is called
Munhwa-Regular--UniKS-UCS2-H
-The CIDFont code in XFree86 requires a very rigid directory structure. The
+The CIDFont code in X11R6.7 requires a very rigid directory structure. The
main directory must be called `CID' (its location defaults to
`/usr/X11R6/lib/X11/fonts/CID' but it may be located anywhere), and it should
contain a subdirectory for every CID collection. Every subdirectory must
@@ -310,7 +311,7 @@ For best results, scalable fonts should appear in the font path before the
bitmap fonts; this way, the server will prefer bitmap fonts to scalable fonts
when an exact match is possible, but will avoid scaling bitmap fonts when a
scalable font can be used. (The `:unscaled' hack, while still supported,
-should no longer be necessary in XFree86 4.0 and later.)
+should no longer be necessary in X11R6.7.0.)
You may check the font path of the running server by typing the command
@@ -334,15 +335,15 @@ For more information, please consult the xset(1) manual page.
2.2.4.2 Permanent modification of the font path
The default font path (the one used just after server startup or after `xset
-fp default') is specified in the X server's `XF86Config' file. It is com-
-puted by appending all the directories mentioned in the `FontPath' entries of
-the `Files' section in the order in which they appear.
+fp default') is specified in the X server's `xorg.conf' file. It is computed
+by appending all the directories mentioned in the `FontPath' entries of the
+`Files' section in the order in which they appear.
FontPath "/usr/local/fonts/Type1"
...
FontPath "/usr/local/fonts/bitmap"
-For more information, please consult the XF86Config(5) manual page.
+For more information, please consult the xorg.conf(5) manual page.
2.2.5 Troubleshooting
@@ -353,19 +354,19 @@ mounted font directories). If this doesn't help, it is quite possible that
you are trying to use a font in a format that is not supported by your
server.
-XFree86 supports the BDF, PCF, SNF, Type 1, Speedo, TrueType, OpenType and
-CIDFont font formats. However, not all XFree86 servers come with all the
-font backends configured in.
+X11R6.7 supports the BDF, PCF, SNF, Type 1, Speedo, TrueType, OpenType and
+CIDFont font formats. However, not all X11R6.7 or XFree86 servers come with
+all the font backends configured in.
-On most platforms, the XFree86 servers are modular: the font backends are
+On most platforms, the X11R6.7 servers are modular: the font backends are
included in modules that are loaded at runtime. The modules to be loaded are
-specified in the `XF86Config' file using the `Load' directive:
+specified in the `xorg.conf' file using the `Load' directive:
Load "type1"
If you have trouble installing fonts in a specific format, you may want to
check the server's log file in order to see whether the relevant modules are
-properly loaded. The list of font modules distributed with XFree86 is as
+properly loaded. The list of font modules distributed with X11R6.7 is as
follows:
o "bitmap": bitmap fonts (`*.bdf', `*.pcf' and `*.snf');
@@ -382,7 +383,7 @@ follows:
Please note that the argument of the `Load' directive is case-sensitive.
-3. Fonts included with XFree86
+3. Fonts included with X11R6.7
3.1 Standard bitmap fonts
@@ -391,7 +392,7 @@ fonts, including the `fixed' family, and bitmap versions of Courier, Times,
Helvetica and some members of the Lucida family. In the SI, these fonts are
provided in the ISO 8859-1 encoding (ISO Latin Western-European).
-In XFree86, a number of these fonts are provided in Unicode-encoded font
+In X11R6.7, a number of these fonts are provided in Unicode-encoded font
files instead. At build time, these fonts are split into font files encoded
according to legacy encodings, a process which allows us to provide the stan-
dard fonts in a number of regional encodings with no duplication of work.
@@ -469,7 +470,7 @@ for improved presentation of text.
3.3 Standard scalable fonts
-XFree86 includes all the scalable fonts distributed with X11R6.
+X11R6.7 includes all the scalable fonts distributed with X11R6.
3.3.1 Standard Type 1 fonts
@@ -491,7 +492,7 @@ and reside in the font files
/usr/X11R6/lib/X11/fonts/Type1/UT*.pfa
-Finally, XFree86 also comes with Type 1 versions of Bitstream Courier and
+Finally, X11R6.7 also comes with Type 1 versions of Bitstream Courier and
Charter. These fonts have XLFD
-bitstream-courier-*-*-normal--0-0-0-0-m-0-iso8859-1
@@ -503,7 +504,7 @@ and reside in the font files
3.3.2 Standard Speedo fonts
-XFree86 includes Speedo versions of the Bitstream Courier and Charter fonts.
+X11R6.7 includes Speedo versions of the Bitstream Courier and Charter fonts.
In order to use these fonts, you should ensure that your X server is loading
the `Speedo' font backend; see Troubleshooting (section 2.2.5, page 1).
@@ -519,7 +520,7 @@ and reside in the font files
3.4 The Bigelow & Holmes Luxi family
-XFree86 includes the Luxi family of scalable fonts, in both TrueType and
+X11R6.7 includes the Luxi family of scalable fonts, in both TrueType and
Type 1 format. This family consists of the fonts Luxi Serif, with XLFD
-b&h-luxi serif-medium-*-normal--*-*-*-*-p-*-*-*
@@ -565,11 +566,11 @@ For more information, please contact <design@bigelowandholmes.com> or
An earlier version of the Luxi fonts was made available under the name
Lucidux. This name should no longer be used due to trademark uncertainties,
-and all traces of the Lucidux name have been removed from XFree86.
+and all traces of the Lucidux name have been removed from X11R6.7.
4. More about core fonts
-This section describes XFree86-specific enhancements to the core X11 fonts
+This section describes X11R6.7-specific enhancements to the core X11 fonts
system.
4.1 Core fonts and internationalisation
@@ -655,7 +656,7 @@ option followed by the name of a directory containing encoding files, can be
used to automatically build `encodings.dir' files. Please see the mkfont-
dir(1) manual page for more details.
-A number of encoding files for common encodings are included with XFree86.
+A number of encoding files for common encodings are included with X11R6.7.
Information on writing new encoding files can be found in Format of encodings
directory files (section 4.1.3, page 1) and Format of encoding files (section
4.1.4, page 1) later in this document.
@@ -991,7 +992,7 @@ ings, but instead uses its own database of encodings.
Since the functionalities for CJKV support introduced by X-TT have been
merged into the new FreeType backend, the X-TT backend will be removed from
-XFree86's tree near the future. Therefore, the use of FreeType backend is
+X11R6.7's tree near the future. Therefore, the use of FreeType backend is
preferred over the X-TT backend.
General information on X-TrueType may be found at the After X-TT Project page
@@ -1138,16 +1139,16 @@ last two fields of their XLFD set to `iso10646-1'.
6. References
-XFree86 comes with extensive documentation in the form of manual pages and
+X11R6.7 comes with extensive documentation in the form of manual pages and
typeset documents. Before installing fonts, you really should read the font-
config(3) and mkfontdir(1) manual pages; other manual pages of interest
include X(7), Xserver(1), xset(1), Xft(3), xlsfonts(1) and showfont(1). In
addition, you may want to read the X Logical Font Description document, by
Jim Flowers, which is provided in the file `xc/doc/xlfd.PS.Z'.
-The latest released version of the XFree86 documentation (including this doc-
-ument and all manual pages) is available as current XFree86 documentation
-<URL:http://www.xfree86.org/current/>.
+The latest released version of the X11R6.7 documentation (including this doc-
+ument and all manual pages) can be found from current X11R6.7 documentation
+<URL:http://wiki.x.org/>.
The comp.fonts FAQ <URL:http://www.netmeg.net/faq/computers/fonts/>, which is
unfortunately no longer being maintained, contains a wealth of information
@@ -1181,7 +1182,5 @@ The IANA RFC documents, available from a number of sites throughout the
world, often provide interesting information about character set issues; see
for example RFC 373.
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml,v 1.24 dawes Exp $
+ $Id$
-
-$XFree86: $
diff --git a/hw/xfree86/doc/devel/README.DRIcomp b/hw/xfree86/doc/devel/README.DRIcomp
index 7dab2b108..aafbd4237 100644
--- a/hw/xfree86/doc/devel/README.DRIcomp
+++ b/hw/xfree86/doc/devel/README.DRIcomp
@@ -8,7 +8,7 @@
1.1 Copyright
-Copyright © 2000-2001 by VA Linux Systems, Inc. All Rights Reserved.
+Copyright 2000-2001 by VA Linux Systems, Inc. All Rights Reserved.
Permission is granted to make and distribute verbatim copies of this document
provided the copyright notice and this permission notice are preserved on all
@@ -551,7 +551,5 @@ At this point your X server should be up and running with hardware-acceler-
ated direct rendering. Please read the DRI User Guide for information about
trouble shooting and how to use the DRI-enabled X server for 3D applications.
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.20 dawes Exp $
+ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.19 dawes Exp $
-
-$XFree86: $
diff --git a/hw/xfree86/doc/man/Xorg.man.pre b/hw/xfree86/doc/man/Xorg.man.pre
new file mode 100644
index 000000000..d4bb08bc4
--- /dev/null
+++ b/hw/xfree86/doc/man/Xorg.man.pre
@@ -0,0 +1,691 @@
+.\" $XdotOrg: $
+.TH __xservername__ __appmansuffix__ __vendorversion__
+.SH NAME
+__xservername__ - X11R6 X server
+.SH SYNOPSIS
+.B __xservername__
+.RI [\fB:\fP display ]
+.RI [ option
+.IR ... ]
+.SH DESCRIPTION
+.B __xservername__
+is a full featured X server that was originally designed for UNIX and
+UNIX-like operating systems running on Intel x86 hardware. It now runs
+on a wider range of hardware and OS platforms.
+.PP
+This work was derived from
+.I "XFree86\ 4.4rc2"
+by the X.Org Foundation.
+The XFree86 4.4rc2 release was originally derived from
+.I "X386\ 1.2"
+by Thomas Roell which was contributed to X11R5 by Snitily Graphics
+Consulting Service. The
+.B __xservername__
+server architecture includes
+among many other things a loadable module system derived from code
+donated by Metro Link, Inc. The current __xservername__ release is compatible
+with X11R6.6.
+.SH PLATFORMS
+.PP
+.B __xservername__
+operates under a wide range of operating systems and hardware platforms.
+The Intel x86 (IA32) architecture is the most widely supported hardware
+platform. Other hardware platforms include Compaq Alpha, Intel IA64,
+SPARC and PowerPC. The most widely supported operating systems are the
+free/OpenSource UNIX-like systems such as Linux, FreeBSD, NetBSD and
+OpenBSD. Commercial UNIX operating systems such as Solaris (x86) and
+UnixWare are also supported. Other supported operating systems include
+LynxOS, and GNU Hurd. Darwin and Mac OS X are supported with the
+XDarwin(1) X server. Win32/Cygwin is supported with the XWin X server.
+.PP
+.SH "NETWORK CONNECTIONS"
+.B __xservername__
+supports connections made using the following reliable
+byte-streams:
+.TP 4
+.I "Local"
+On most platforms, the "Local" connection type is a UNIX-domain socket.
+On some System V platforms, the "local" connection types also include
+STREAMS pipes, named pipes, and some other mechanisms.
+.TP 4
+.I TCP\/IP
+.B __xservername__
+listens on port
+.RI 6000+ n ,
+where
+.I n
+is the display number. This connection type can be disabled with the
+.B \-nolisten
+option (see the Xserver(1) man page for details).
+.SH "ENVIRONMENT VARIABLES"
+For operating systems that support local connections other than Unix
+Domain sockets (SVR3 and SVR4), there is a compiled-in list specifying
+the order in which local connections should be attempted. This list
+can be overridden by the
+.I XLOCAL
+environment variable described below. If the display name indicates a
+best-choice connection should be made (e.g.
+.BR :0.0 ),
+each connection mechanism is tried until a connection succeeds or no
+more mechanisms are available. Note: for these OSs, the Unix Domain
+socket connection is treated differently from the other local connection
+types. To use it the connection must be made to
+.BR unix:0.0 .
+.PP
+The
+.I XLOCAL
+environment variable should contain a list of one more
+more of the following:
+.PP
+.RS 8
+.nf
+NAMED
+PTS
+SCO
+ISC
+.fi
+.RE
+.PP
+which represent SVR4 Named Streams pipe, Old-style USL Streams pipe,
+SCO XSight Streams pipe, and ISC Streams pipe, respectively. You can
+select a single mechanism (e.g.
+.IR XLOCAL=NAMED ),
+or an ordered list (e.g. \fIXLOCAL="NAMED:PTS:SCO"\fP).
+his variable overrides the compiled-in defaults. For SVR4 it is
+recommended that
+.I NAMED
+be the first preference connection. The default setting is
+.IR PTS:NAMED:ISC:SCO .
+.PP
+To globally override the compiled-in defaults, you should define (and
+export if using
+.B sh
+or
+.BR ksh )
+.I XLOCAL
+globally. If you use startx(1) or xinit(1), the definition should be
+at the top of your
+.I .xinitrc
+file. If you use xdm(1), the definitions should be early on in the
+.I __projectroot__/lib/X11/xdm/Xsession
+script.
+.SH OPTIONS
+.B __xservername__
+supports several mechanisms for supplying/obtaining configuration and
+run-time parameters: command line options, environment variables, the
+__xconfigfile__(__filemansuffix__) configuration file, auto-detection, and
+fallback defaults. When the same information is supplied in more than
+one way, the highest precedence mechanism is used. The list of mechanisms
+is ordered from highest precedence to lowest. Note that not all parameters
+can be supplied via all methods. The available command line options
+and environment variables (and some defaults) are described here and in
+the Xserver(1) manual page. Most configuration file parameters, with
+their defaults, are described in the __xconfigfile__(__filemansuffix__) manual
+page. Driver and module specific configuration parameters are described
+in the relevant driver or module manual page.
+.PP
+In addition to the normal server options described in the Xserver(1)
+manual page,
+.B __xservername__
+accepts the following command line switches:
+.TP 8
+.BI vt XX
+.I XX
+specifies the Virtual Terminal device number which
+.B __xservername__
+will use. Without this option,
+.B __xservername__
+will pick the first available Virtual Terminal that it can locate. This
+option applies only to platforms such as Linux, BSD, SVR3 and SVR4, that
+have virtual terminal support.
+.TP
+.B \-allowMouseOpenFail
+Allow the server to start up even if the mouse device can't be opened
+or initialised. This is equivalent to the
+.B AllowMouseOpenFail
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B \-allowNonLocalModInDev
+Allow changes to keyboard and mouse settings from non-local clients.
+By default, connections from non-local clients are not allowed to do
+this. This is equivalent to the
+.B AllowNonLocalModInDev
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B \-allowNonLocalXvidtune
+Make the VidMode extension available to remote clients. This allows
+the xvidtune client to connect from another host. This is equivalent
+to the
+.B AllowNonLocalXvidtune
+__xconfigfile__(__filemansuffix__) file option. By default non-local
+connections are not allowed.
+.TP 8
+.BI \-bgamma " value"
+Set the blue gamma correction.
+.I value
+must be between 0.1 and 10.
+The default is 1.0. Not all drivers support this. See also the
+.BR \-gamma ,
+.BR \-rgamma ,
+and
+.B \-ggamma
+options.
+.TP 8
+.BI \-bpp " n"
+No longer supported. Use
+.B \-depth
+to set the color depth, and use
+.B \-fbbpp
+if you really need to force a non-default framebuffer (hardware) pixel
+format.
+.TP
+.B \-configure
+When this option is specified, the
+.B __xservername__
+server loads all video driver modules, probes for available hardware,
+and writes out an initial __xconfigfile__(__filemansuffix__) file based on
+what was detected. This option currently has some problems on some
+platforms, but in most cases it is a good way to bootstrap the
+configuration process. This option is only available when the server
+is run as root (i.e, with real-uid 0).
+.TP 8
+.BI "\-crt /dev/tty" XX
+SCO only. This is the same as the
+.B vt
+option, and is provided for compatibility with the native SCO X server.
+.TP 8
+.BI \-depth " n"
+Sets the default color depth. Legal values are 1, 4, 8, 15, 16, and
+24. Not all drivers support all values.
+.TP 8
+.B \-disableModInDev
+Disable dynamic modification of input device settings. This is equivalent
+to the
+.B DisableModInDev
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B \-disableVidMode
+Disable the the parts of the VidMode extension (used by the xvidtune
+client) that can be used to change the video modes. This is equivalent
+to the
+.B DisableVidModeExtension
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B \-fbbpp \fIn\fP
+Sets the number of framebuffer bits per pixel. You should only set this
+if you're sure it's necessary; normally the server can deduce the correct
+value from
+.B \-depth
+above. Useful if you want to run a depth 24 configuration with a 24
+bpp framebuffer rather than the (possibly default) 32 bpp framebuffer
+(or vice versa). Legal values are 1, 8, 16, 24, 32. Not all drivers
+support all values.
+.TP 8
+.B \-flipPixels
+Swap the default values for the black and white pixels.
+.TP 8
+.BI \-gamma " value"
+Set the gamma correction.
+.I value
+must be between 0.1 and 10. The default is 1.0. This value is applied
+equally to the R, G and B values. Those values can be set independently
+with the
+.BR \-rgamma ,
+.BR \-bgamma ,
+and
+.B \-ggamma
+options. Not all drivers support this.
+.TP 8
+.BI \-ggamma " value"
+Set the green gamma correction.
+.I value
+must be between 0.1 and 10. The default is 1.0. Not all drivers support
+this. See also the
+.BR \-gamma ,
+.BR \-rgamma ,
+and
+.B \-bgamma
+options.
+.TP 8
+.B \-ignoreABI
+The
+.B __xservername__
+server checks the ABI revision levels of each module that it loads. It
+will normally refuse to load modules with ABI revisions that are newer
+than the server's. This is because such modules might use interfaces
+that the server does not have. When this option is specified, mismatches
+like this are downgraded from fatal errors to warnings. This option
+should be used with care.
+.TP 8
+.B \-keeptty
+Prevent the server from detaching its initial controlling terminal.
+This option is only useful when debugging the server. Not all platforms
+support (or can use) this option.
+.TP 8
+.BI \-keyboard " keyboard-name"
+Use the __xconfigfile__(__filemansuffix__) file
+.B InputDevice
+section called
+.I keyboard-name
+as the core keyboard. This option is ignored when the
+.B Layout
+section specifies a core keyboard. In the absence of both a Layout
+section and this option, the first relevant
+.B InputDevice
+section is used for the core keyboard.
+.TP 8
+.BI \-layout " layout-name"
+Use the __xconfigfile__(__filemansuffix__) file
+.B Layout
+section called
+.IR layout-name .
+By default the first
+.B Layout
+section is used.
+.TP 8
+.BI \-logfile " filename"
+Use the file called
+.I filename
+as the
+.B __xservername__
+server log file. The default log file is
+.BI __logdir__/__xservername__. n .log
+on most platforms, where
+.I n
+is the display number of the
+.B __xservername__
+server. The default may be in a different directory on some platforms.
+This option is only available when the server is run as root (i.e, with
+real-uid 0).
+.TP 8
+.BR \-logverbose " [\fIn\fP]"
+Sets the verbosity level for information printed to the
+.B __xservername__
+server log file. If the
+.I n
+value isn't supplied, each occurrence of this option increments the log
+file verbosity level. When the
+.I n
+value is supplied, the log file verbosity level is set to that value.
+The default log file verbosity level is 3.
+.TP 8
+.BI \-modulepath " searchpath"
+Set the module search path to
+.IR searchpath .
+.I searchpath
+is a comma separated list of directories to search for
+.B __xservername__
+server modules. This option is only available when the server is run
+as root (i.e, with real-uid 0).
+.TP 8
+.B \-nosilk
+Disable Silken Mouse support.
+.TP 8
+.B \-pixmap24
+Set the internal pixmap format for depth 24 pixmaps to 24 bits per pixel.
+The default is usually 32 bits per pixel. There is normally little
+reason to use this option. Some client applications don't like this
+pixmap format, even though it is a perfectly legal format. This is
+equivalent to the
+.B Pixmap
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B \-pixmap32
+Set the internal pixmap format for depth 24 pixmaps to 32 bits per pixel.
+This is usually the default. This is equivalent to the
+.B Pixmap
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.BI \-pointer " pointer-name"
+Use the __xconfigfile__(__filemansuffix__) file
+.B InputDevice
+section called
+.I pointer-name
+as the core pointer. This option is ignored when the
+.B Layout
+section specifies a core pointer. In the absence of both a Layout
+section and this option, the first relevant
+.B InputDevice
+section is used for the core pointer.
+.TP 8
+.B \-probeonly
+Causes the server to exit after the device probing stage. The
+__xconfigfile__(__filemansuffix__) file is still used when this option is
+given, so information that can be auto-detected should be commented out.
+.TP 8
+.B \-quiet
+Suppress most informational messages at startup. The verbosity level
+is set to zero.
+.TP 8
+.BI \-rgamma " value"
+Set the red gamma correction.
+.I value
+must be between 0.1 and 10. The default is 1.0. Not all drivers support
+this. See also the
+.BR \-gamma ,
+.BR \-bgamma ,
+and
+.B \-ggamma
+options.
+.TP 8
+.B \-scanpci
+When this option is specified, the
+.B __xservername__
+server scans the PCI bus, and prints out some information about each
+device that was detected. See also scanpci(1) and pcitweak(1).
+.TP 8
+.BI \-screen " screen-name"
+Use the __xconfigfile__(__filemansuffix__) file
+.B Screen
+section called
+.IR screen-name .
+By default the screens referenced by the default
+.B Layout
+section are used, or the first
+.B Screen
+section when there are no
+.B Layout
+sections.
+.TP 8
+.B \-showconfig
+This is the same as the
+.B \-version
+option, and is included for compatibility reasons. It may be removed
+in a future release, so the
+.B \-version
+option should be used instead.
+.TP 8
+.BI \-weight " nnn"
+Set RGB weighting at 16 bpp. The default is 565. This applies only to
+those drivers which support 16 bpp.
+.TP 8
+.BR \-verbose " [\fIn\fP]"
+Sets the verbosity level for information printed on stderr. If the
+.I n
+value isn't supplied, each occurrence of this option increments the
+verbosity level. When the
+.I n
+value is supplied, the verbosity level is set to that value. The default
+verbosity level is 0.
+.TP 8
+.B \-version
+Print out the server version, patchlevel, release date, the operating
+system/platform it was built on, and whether it includes module loader
+support.
+.TP 8
+.BI \-config " file"
+Read the server configuration from
+.IR file .
+This option will work for any file when the server is run as root (i.e,
+with real-uid 0), or for files relative to a directory in the config
+search path for all other users.
+.SH "KEYBOARD"
+.PP
+The
+.B __xservername__
+server is normally configured to recognize various special combinations
+of key presses that instruct the server to perform some action, rather
+than just sending the key press event to a client application. The
+default XKEYBOARD keymap defines the key combinations listed below.
+The server also has these key combinations builtin to its event handler
+for cases where the XKEYBOARD extension is not being used. When using
+the XKEYBOARD extension, which key combinations perform which actions
+is completely configurable.
+.PP
+For more information about when the builtin event handler
+is used to recognize the special key combinations, see
+the documentation on the
+.B HandleSpecialKeys
+option in the __xconfigfile__(__filemansuffix__) man page.
+.PP
+The special combinations of key presses recognized directly
+by
+.B __xservername__
+are:
+.TP 8
+.B Ctrl+Alt+Backspace
+Immediately kills the server -- no questions asked. This can be disabled
+with the
+.B DontZap
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B Ctrl+Alt+Keypad-Plus
+Change video mode to next one specified in the configuration file.
+This can be disabled with the
+.B DontZoom
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B Ctrl+Alt+Keypad-Minus
+Change video mode to previous one specified in the configuration file.
+This can be disabled with the
+.B DontZoom
+__xconfigfile__(__filemansuffix__) file option.
+.TP 8
+.B Ctrl+Alt+Keypad-Multiply
+Not treated specially by default. If the
+.B AllowClosedownGrabs
+__xconfigfile__(__filemansuffix__) file option is specified, this key sequence
+kills clients with an active keyboard or mouse grab as well as killing any
+application that may have locked the server, normally using the
+XGrabServer(__libmansuffix__) Xlib function.
+.TP 8
+.B Ctrl+Alt+Keypad-Divide
+Not treated specially by default. If the
+.B AllowDeactivateGrabs
+__xconfigfile__(__filemansuffix__) file option is specified, this key sequence
+deactivates any active keyboard and mouse grabs.
+.TP 8
+.B Ctrl+Alt+F1...F12
+For BSD and Linux systems with virtual terminal support, these keystroke
+combinations are used to switch to virtual terminals 1 through 12,
+respectively. This can be disabled with the
+.B DontVTSwitch
+__xconfigfile__(__filemansuffix__) file option.
+.SH CONFIGURATION
+.B __xservername__
+typically uses a configuration file called
+.B __xconfigfile__
+for its initial setup.
+Refer to the __xconfigfile__(__filemansuffix__) manual page for information
+about the format of this file.
+.PP
+Starting with version 4.4,
+.B __xservername__
+has a mechanism for automatically generating a built-in configuration
+at run-time when no
+.B __xconfigfile__
+file is present. The current version of this automatic configuration
+mechanism works in three ways.
+.PP
+The first is via enhancements that have made many components of the
+.B __xconfigfile__
+file optional. This means that information that can be probed or
+reasonably deduced doesn't need to be specified explicitly, greatly
+reducing the amount of built-in configuration information that needs to
+be generated at run-time.
+.PP
+The second is to use an external utility called getconfig(1), when
+available, to use meta-configuration information to generate a suitable
+configuration for the primary video device. The meta-configuration
+information can be updated to allow an existing installation to get the
+best out of new hardware or to work around bugs that are found
+post-release.
+.PP
+The third is to have "safe" fallbacks for most configuration information.
+This maximises the likelihood that the
+.B __xservername__
+server will start up in some usable configuration even when information
+about the specific hardware is not available.
+.PP
+The automatic configuration support for __xservername__ is work in progress.
+It is currently aimed at the most popular hardware and software platforms
+supported by __xservername__. Enhancements are planned for future releases.
+.SH FILES
+The
+.B __xservername__
+server config file can be found in a range of locations. These are
+documented fully in the __xconfigfile__(__filemansuffix__) manual page. The
+most commonly used locations are shown here.
+.TP 30
+.B /etc/X11/__xconfigfile__
+Server configuration file.
+.TP 30
+.B /etc/X11/__xconfigfile__-4
+Server configuration file.
+.TP 30
+.B /etc/__xconfigfile__
+Server configuration file.
+.TP 30
+.B __projectroot__/etc/__xconfigfile__
+Server configuration file.
+.TP 30
+.B __projectroot__/lib/X11/__xconfigfile__
+Server configuration file.
+.TP 30
+.BI __logdir__/__xservername__. n .log
+Server log file for display
+.IR n .
+.TP 30
+.B __projectroot__/bin/\(**
+Client binaries.
+.TP 30
+.B __projectroot__/include/\(**
+Header files.
+.TP 30
+.B __projectroot__/lib/\(**
+Libraries.
+.TP 30
+.B __projectroot__/lib/X11/fonts/\(**
+Fonts.
+.TP 30
+.B __projectroot__/lib/X11/rgb.txt
+Color names to RGB mapping.
+.TP 30
+.B __projectroot__/lib/X11/XErrorDB
+Client error message database.
+.TP 30
+.B __projectroot__/lib/X11/app-defaults/\(**
+Client resource specifications.
+.TP 30
+.B __projectroot__/man/man?/\(**
+Manual pages.
+.TP 30
+.BI /etc/X n .hosts
+Initial access control list for display
+.IR n .
+.SH "SEE ALSO"
+X(__miscmansuffix__), Xserver(__appmansuffix__), xdm(__appmansuffix__), xinit(__appmansuffix__),
+__xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), xorgcfg(__appmansuffix__), xvidtune(__appmansuffix__),
+apm(__drivermansuffix__),
+ati(__drivermansuffix__),
+chips(__drivermansuffix__),
+cirrus(__drivermansuffix__),
+cyrix(__drivermansuffix__),
+fbdev(__drivermansuffix__),
+glide(__drivermansuffix__),
+glint(__drivermansuffix__),
+i128(__drivermansuffix__),
+i740(__drivermansuffix__),
+i810(__drivermansuffix__),
+imstt(__drivermansuffix__),
+mga(__drivermansuffix__),
+neomagic(__drivermansuffix__),
+nsc(__drivermansuffix__),
+nv(__drivermansuffix__),
+r128(__drivermansuffix__),
+rendition(__drivermansuffix__),
+s3virge(__drivermansuffix__),
+siliconmotion(__drivermansuffix__),
+sis(__drivermansuffix__),
+sunbw2(__drivermansuffix__),
+suncg14(__drivermansuffix__),
+suncg3(__drivermansuffix__),
+suncg6(__drivermansuffix__),
+sunffb(__drivermansuffix__),
+sunleo(__drivermansuffix__),
+suntcx(__drivermansuffix__),
+tdfx(__drivermansuffix__),
+tga(__drivermansuffix__),
+trident(__drivermansuffix__),
+tseng(__drivermansuffix__),
+v4l(__drivermansuffix__),
+vesa(__drivermansuffix__),
+vga(__drivermansuffix__),
+vmware(__drivermansuffix__),
+.br
+Web site
+.IR <http://www.x.org> .
+
+.SH AUTHORS
+__xservername__ has many contributors world wide. The names of most of them
+can be found in the documentation, CHANGELOG files in the source tree,
+and in the actual source code.
+.PP
+__xservername__ was originally based on XFree86 4.4rc2.
+That was originally based on \fIX386 1.2\fP by Thomas Roell, which
+was contributed to the then X Consortium's X11R5 distribution by SGCS.
+.PP
+__xservername__ is released by the X.org Foundation.
+.PP
+The project that became XFree86 was originally founded in 1992 by
+David Dawes, Glenn Lai, Jim Tsillas and David Wexelblat.
+.PP
+XFree86 was later integrated in the then X Consortium's X11R6 release
+by a group of dedicated XFree86 developers, including the following:
+.PP
+.RS 4
+.nf
+Stuart Anderson \fIanderson@metrolink.com\fP
+Doug Anson \fIdanson@lgc.com\fP
+Gertjan Akkerman \fIakkerman@dutiba.twi.tudelft.nl\fP
+Mike Bernson \fImike@mbsun.mlb.org\fP
+Robin Cutshaw \fIrobin@XFree86.org\fP
+David Dawes \fIdawes@XFree86.org\fP
+Marc Evans \fImarc@XFree86.org\fP
+Pascal Haible \fIhaible@izfm.uni-stuttgart.de\fP
+Matthieu Herrb \fIMatthieu.Herrb@laas.fr\fP
+Dirk Hohndel \fIhohndel@XFree86.org\fP
+David Holland \fIdavidh@use.com\fP
+Alan Hourihane \fIalanh@fairlite.demon.co.uk\fP
+Jeffrey Hsu \fIhsu@soda.berkeley.edu\fP
+Glenn Lai \fIglenn@cs.utexas.edu\fP
+Ted Lemon \fImellon@ncd.com\fP
+Rich Murphey \fIrich@XFree86.org\fP
+Hans Nasten \fInasten@everyware.se\fP
+Mark Snitily \fImark@sgcs.com\fP
+Randy Terbush \fIrandyt@cse.unl.edu\fP
+Jon Tombs \fItombs@XFree86.org\fP
+Kees Verstoep \fIversto@cs.vu.nl\fP
+Paul Vixie \fIpaul@vix.com\fP
+Mark Weaver \fIMark_Weaver@brown.edu\fP
+David Wexelblat \fIdwex@XFree86.org\fP
+Philip Wheatley \fIPhilip.Wheatley@ColumbiaSC.NCR.COM\fP
+Thomas Wolfram \fIwolf@prz.tu-berlin.de\fP
+Orest Zborowski \fIorestz@eskimo.com\fP
+.fi
+.RE
+.PP
+__xservername__ source is available from the FTP server
+\fI<ftp://ftp.x.org/>\fP, and from the X.org
+server \fI<http://www.freedesktop.org/cvs/>\fP. Documentation and other
+information can be found from the X.org web site
+\fI<http://www.x.org/>\fP.
+
+.SH LEGAL
+.PP
+.B __xservername__
+is copyright software, provided under licenses that permit modification
+and redistribution in source and binary form without fee.
+.B __xservername__ is copyright by numerous authors and
+contributors from around the world. Licensing information can be found
+at
+.IR <http://www.x.org> .
+Refer to the source code for specific copyright notices.
+.PP
+.B XFree86(TM)
+is a trademark of The XFree86 Project, Inc.
+.PP
+.B X11(TM)
+and
+.B X Window System(TM)
+are trademarks of The Open Group.
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
new file mode 100644
index 000000000..e530991e8
--- /dev/null
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -0,0 +1,1872 @@
+.\" $XdotOrg: xc/programs/Xserver/hw/xfree86/xorg.conf.man,v 1.1.2.1 2004/03/27 17:01:11 keithp Exp $
+.\" shorthand for double quote that works everywhere.
+.ds q \N'34'
+.TH __xconfigfile__ __filemansuffix__ __vendorversion__
+.SH NAME
+__xconfigfile__ - Configuration File for __xservername__
+.SH INTRODUCTION
+.B __xservername__
+supports several mechanisms for supplying/obtaining configuration and
+run-time parameters: command line options, environment variables, the
+__xconfigfile__ configuration file, auto-detection, and fallback defaults.
+When the same information is supplied in more than one way, the highest
+precedence mechanism is used. The list of mechanisms is ordered from
+highest precedence to lowest. Note that not all parameters can be
+supplied via all methods. The available command line options and
+environment variables (and some defaults) are described in the Xserver(__appmansuffix__)
+and __xservername__(__appmansuffix__) manual pages. Most configuration file parameters, with
+their defaults, are described below. Driver and module specific
+configuration parameters are described in the relevant driver or module
+manual page.
+.SH DESCRIPTION
+.B __xservername__
+uses a configuration file called
+.B __xconfigfile__
+for its initial setup. This configuration file is searched for in the
+following places when the server is started as a normal user:
+.PP
+.RS 4
+.nf
+.IR /etc/X11/ <cmdline>
+.IR __projectroot__/etc/X11/ <cmdline>
+.IB /etc/X11/ $XORGCONFIG
+.IB __projectroot__/etc/X11/ $XORGCONFIG
+.I /etc/X11/__xconfigfile__-4
+.I /etc/X11/__xconfigfile__
+.I /etc/__xconfigfile__
+.IR __projectroot__/etc/X11/__xconfigfile__. <hostname>
+.I __projectroot__/etc/X11/__xconfigfile__-4
+.I __projectroot__/etc/X11/__xconfigfile__
+.IR __projectroot__/lib/X11/__xconfigfile__. <hostname>
+.I __projectroot__/lib/X11/__xconfigfile__-4
+.I __projectroot__/lib/X11/__xconfigfile__
+.fi
+.RE
+.PP
+where
+.I <cmdline>
+is a relative path (with no ".." components) specified with the
+.B \-config
+command line option,
+.B $XORGCONFIG
+is the relative path (with no ".." components) specified by that
+environment variable, and
+.I <hostname>
+is the machine's hostname as reported by gethostname(3).
+.PP
+When the __xservername__ server is started by the "root" user, the config file
+search locations are as follows:
+.PP
+.RS 4
+.nf
+<cmdline>
+.IR /etc/X11/ <cmdline>
+.IR __projectroot__/etc/X11/ <cmdline>
+.B $XORGCONFIG
+.IB /etc/X11/ $XORGCONFIG
+.IB __projectroot__/etc/X11/ $XORGCONFIG
+.BI $HOME /__xconfigfile__
+.I /etc/X11/__xconfigfile__-4
+.I /etc/X11/__xconfigfile__
+.I /etc/__xconfigfile__
+.IR __projectroot__/etc/X11/__xconfigfile__. <hostname>
+.I __projectroot__/etc/X11/__xconfigfile__-4
+.I __projectroot__/etc/X11/__xconfigfile__
+.IR __projectroot__/lib/X11/__xconfigfile__. <hostname>
+.I __projectroot__/lib/X11/__xconfigfile__-4
+.I __projectroot__/lib/X11/__xconfigfile__
+.fi
+.RE
+.PP
+where
+.I <cmdline>
+is the path specified with the
+.B \-config
+command line option (which may be absolute or relative),
+.B $XORGCONFIG
+is the path specified by that
+environment variable (absolute or relative),
+.B $HOME
+is the path specified by that environment variable (usually the home
+directory), and
+.I <hostname>
+is the machine's hostname as reported by gethostname(3).
+.PP
+The
+.B __xconfigfile__
+file is composed of a number of sections which may be present in any
+order. Each section has
+the form:
+.PP
+.RS 4
+.nf
+.BI "Section \*q" SectionName \*q
+.RI " " SectionEntry
+ ...
+.B EndSection
+.fi
+.RE
+.PP
+The section names are:
+.PP
+.RS 4
+.nf
+.BR "Files " "File pathnames"
+.BR "ServerFlags " "Server flags"
+.BR "Module " "Dynamic module loading"
+.BR "InputDevice " "Input device description"
+.BR "Device " "Graphics device description"
+.BR "VideoAdaptor " "Xv video adaptor description"
+.BR "Monitor " "Monitor description"
+.BR "Modes " "Video modes descriptions"
+.BR "Screen " "Screen configuration"
+.BR "ServerLayout " "Overall layout"
+.BR "DRI " "DRI-specific configuration"
+.BR "Vendor " "Vendor-specific configuration"
+.fi
+.RE
+.PP
+The following obsolete section names are still recognised for compatibility
+purposes. In new config files, the
+.B InputDevice
+section should be used instead.
+.PP
+.RS 4
+.nf
+.BR "Keyboard " "Keyboard configuration"
+.BR "Pointer " "Pointer/mouse configuration"
+.fi
+.RE
+.PP
+The old
+.B XInput
+section is no longer recognised.
+.PP
+The
+.B ServerLayout
+sections are at the highest level. They bind together the input and
+output devices that will be used in a session. The input devices
+are described in the
+.B InputDevice
+sections. Output devices usually consist of multiple independent
+components (e.g., and graphics board and a monitor). These multiple
+components are bound together in the
+.B Screen
+sections, and it is these that are referenced by the
+.B ServerLayout
+section. Each
+.B Screen
+section binds together a graphics board and a monitor. The graphics
+boards are described in the
+.B Device
+sections, and the monitors are described in the
+.B Monitor
+sections.
+.PP
+Config file keywords are case-insensitive, and "_" characters are
+ignored. Most strings (including
+.B Option
+names) are also case-insensitive, and insensitive to white space and
+"_" characters.
+.PP
+Each config file entry usually takes up a single line in the file.
+They consist of a keyword, which is possibly followed by one or
+more arguments, with the number and types of the arguments depending
+on the keyword. The argument types are:
+.PP
+.RS 4
+.nf
+.BR "Integer " "an integer number in decimal, hex or octal"
+.BR "Real " "a floating point number"
+.BR "String " "a string enclosed in double quote marks (\*q)"
+.fi
+.RE
+.PP
+Note: hex integer values must be prefixed with "0x", and octal values
+with "0".
+.PP
+A special keyword called
+.B Option
+may be used to provide free-form data to various components of the server.
+The
+.B Option
+keyword takes either one or two string arguments. The first is the option
+name, and the optional second argument is the option value. Some commonly
+used option value types include:
+.PP
+.RS 4
+.nf
+.BR "Integer " "an integer number in decimal, hex or octal"
+.BR "Real " "a floating point number"
+.BR "String " "a sequence of characters"
+.BR "Boolean " "a boolean value (see below)"
+.BR "Frequency " "a frequency value (see below)"
+.fi
+.RE
+.PP
+Note that
+.I all
+.B Option
+values, not just strings, must be enclosed in quotes.
+.PP
+Boolean options may optionally have a value specified. When no value
+is specified, the option's value is
+.BR TRUE .
+The following boolean option values are recognised as
+.BR TRUE :
+.PP
+.RS 4
+.BR 1 ,
+.BR on ,
+.BR true ,
+.B yes
+.RE
+.PP
+and the following boolean option values are recognised as
+.BR FALSE :
+.PP
+.RS 4
+.BR 0 ,
+.BR off ,
+.BR false ,
+.B no
+.RE
+.PP
+If an option name is prefixed with
+.RB \*q No \*q,
+then the option value is negated.
+.PP
+Example: the following option entries are equivalent:
+.PP
+.RS 4
+.nf
+.B "Option \*qAccel\*q \*qOff\*q"
+.B "Option \*qNoAccel\*q"
+.B "Option \*qNoAccel\*q \*qOn\*q"
+.B "Option \*qAccel\*q \*qfalse\*q"
+.B "Option \*qAccel\*q \*qno\*q"
+.fi
+.RE
+.PP
+Frequency option values consist of a real number that is optionally
+followed by one of the following frequency units:
+.PP
+.RS 4
+.BR Hz ,
+.BR k ,
+.BR kHz ,
+.BR M ,
+.B MHz
+.RE
+.PP
+When the unit name is omitted, the correct units will be determined from
+the value and the expectations of the appropriate range of the value.
+It is recommended that the units always be specified when using frequency
+option values to avoid any errors in determining the value.
+.SH FILES SECTION
+The
+.B Files
+section is used to specify some path names required by the server.
+Some of these paths can also be set from the command line (see Xserver(__appmansuffix__)
+and __xservername__(__appmansuffix__)). The command line settings override the values specified
+in the config file. The
+.B Files
+section is optional, as are all of the entries that may appear in it.
+.PP
+The entries that can appear in this section are:
+.TP 7
+.BI "FontPath \*q" path \*q
+sets the search path for fonts. This path is a comma separated list of
+font path elements which the __xservername__ server searches for font databases.
+Multiple
+.B FontPath
+entries may be specified, and they will be concatenated to build up the
+fontpath used by the server. Font path elements may be either absolute
+directory paths, or a font server identifier. Font server identifiers
+have the form:
+.PP
+.RS 11
+.IR <trans> / <hostname> : <port-number>
+.RE
+.PP
+.RS 7
+where
+.I <trans>
+is the transport type to use to connect to the font server (e.g.,
+.B unix
+for UNIX-domain sockets or
+.B tcp
+for a TCP/IP connection),
+.I <hostname>
+is the hostname of the machine running the font server, and
+.I <port-number>
+is the port number that the font server is listening on (usually 7100).
+.PP
+When this entry is not specified in the config file, the server falls back
+to the compiled-in default font path, which contains the following
+font path elements:
+.PP
+.RS 4
+.nf
+.I __projectroot__/lib/X11/fonts/misc/
+.I __projectroot__/lib/X11/fonts/Speedo/
+.I __projectroot__/lib/X11/fonts/Type1/
+.I __projectroot__/lib/X11/fonts/CID/
+.I __projectroot__/lib/X11/fonts/75dpi/
+.I __projectroot__/lib/X11/fonts/100dpi/
+.fi
+.RE
+.PP
+The recommended font path contains the following font path elements:
+.PP
+.RS 4
+.nf
+.I __projectroot__/lib/X11/fonts/local/
+.I __projectroot__/lib/X11/fonts/misc/
+.I __projectroot__/lib/X11/fonts/75dpi/:unscaled
+.I __projectroot__/lib/X11/fonts/100dpi/:unscaled
+.I __projectroot__/lib/X11/fonts/Type1/
+.I __projectroot__/lib/X11/fonts/CID/
+.I __projectroot__/lib/X11/fonts/Speedo/
+.I __projectroot__/lib/X11/fonts/75dpi/
+.I __projectroot__/lib/X11/fonts/100dpi/
+.fi
+.RE
+.PP
+Font path elements that are found to be invalid are removed from the
+font path when the server starts up.
+.RE
+.TP 7
+.BI "RGBPath \*q" path \*q
+sets the path name for the RGB color database.
+When this entry is not specified in the config file, the server falls back
+to the compiled-in default RGB path, which is:
+.PP
+.RS 11
+.I __projectroot__/lib/X11/rgb
+.RE
+.PP
+Note that an implicit
+.I .txt
+is added to this path if the server was compiled to use text rather than
+binary format RGB color databases.
+.TP 7
+.BI "ModulePath \*q" path \*q
+sets the search path for loadable __xservername__ server modules. This path is
+a comma separated list of directories which the __xservername__ server searches
+for loadable modules loading in the order specified. Multiple
+.B ModulePath
+entries may be specified, and they will be concatenated to build the
+module search path used by the server.
+.\" The LogFile keyword is not currently implemented
+.ig
+.TP 7
+.BI "LogFile \*q" path \*q
+sets the name of the __xservername__ server log file. The default log file name
+is
+.PP
+.RS 11
+.RI __logdir__/__xservername__. <n> .log
+.RE
+.PP
+.RS 7
+where
+.I <n>
+is the display number for the __xservername__ server.
+..
+.SH SERVERFLAGS SECTION
+The
+.B ServerFlags
+section is used to specify some global
+__xservername__ server options. All of the entries in this section are
+.BR Options ,
+although for compatibility purposes some of the old style entries are
+still recognised. Those old style entries are not documented here, and
+using them is discouraged. The
+.B ServerFlags
+section is optional, as are the entries that may be specified in it.
+.PP
+.B Options
+specified in this section (with the exception of the
+.B \*qDefaultServerLayout\*q
+.BR Option )
+may be overridden by
+.B Options
+specified in the active
+.B ServerLayout
+section. Options with command line equivalents are overridden when their
+command line equivalent is used. The options recognised by this section
+are:
+.TP 7
+.BI "Option \*qDefaultServerLayout\*q \*q" layout-id \*q
+This specifies the default
+.B ServerLayout
+section to use in the absence of the
+.B \-layout
+command line option.
+.TP 7
+.BI "Option \*qNoTrapSignals\*q \*q" boolean \*q
+This prevents the __xservername__ server from trapping a range of unexpected
+fatal signals and exiting cleanly. Instead, the __xservername__ server will die
+and drop core where the fault occurred. The default behaviour is
+for the __xservername__ server to exit cleanly, but still drop a core file. In
+general you never want to use this option unless you are debugging
+an __xservername__ server problem and know how to deal with the consequences.
+.TP 7
+.BI "Option \*qDontVTSwitch\*q \*q" boolean \*q
+This disallows the use of the
+.BI Ctrl+Alt+F n
+sequence (where
+.RI F n
+refers to one of the numbered function keys). That sequence is normally
+used to switch to another \*qvirtual terminal\*q on operating systems
+that have this feature. When this option is enabled, that key sequence has
+no special meaning and is passed to clients. Default: off.
+.TP 7
+.BI "Option \*qDontZap\*q \*q" boolean \*q
+This disallows the use of the
+.B Ctrl+Alt+Backspace
+sequence. That sequence is normally used to terminate the __xservername__ server.
+When this option is enabled, that key sequence has no special meaning
+and is passed to clients. Default: off.
+.TP 7
+.BI "Option \*qDontZoom\*q \*q" boolean \*q
+This disallows the use of the
+.B Ctrl+Alt+Keypad-Plus
+and
+.B Ctrl+Alt+Keypad-Minus
+sequences. These sequences allows you to switch between video modes.
+When this option is enabled, those key sequences have no special meaning
+and are passed to clients. Default: off.
+.TP 7
+.BI "Option \*qDisableVidModeExtension\*q \*q" boolean \*q
+This disables the parts of the VidMode extension used by the xvidtune client
+that can be used to change the video modes. Default: the VidMode extension
+is enabled.
+.TP 7
+.BI "Option \*qAllowNonLocalXvidtune\*q \*q" boolean \*q
+This allows the xvidtune client (and other clients that use the VidMode
+extension) to connect from another host. Default: off.
+.TP 7
+.BI "Option \*qDisableModInDev\*q \*q" boolean \*q
+This disables the parts of the __xservername__-Misc extension that can be used to
+modify the input device settings dynamically. Default: that functionality
+is enabled.
+.TP 7
+.BI "Option \*qAllowNonLocalModInDev\*q \*q" boolean \*q
+This allows a client to connect from another host and change keyboard
+and mouse settings in the running server. Default: off.
+.TP 7
+.BI "Option \*qAllowMouseOpenFail\*q \*q" boolean \*q
+This allows the server to start up even if the mouse device can't be
+opened/initialised. Default: false.
+.TP 7
+.BI "Option \*qVTInit\*q \*q" command \*q
+Runs
+.I command
+after the VT used by the server has been opened.
+The command string is passed to "/bin/sh -c", and is run with the
+real user's id with stdin and stdout set to the VT. The purpose
+of this option is to allow system dependent VT initialisation
+commands to be run. This option should rarely be needed. Default: not set.
+.TP 7
+.BI "Option \*qVTSysReq\*q \*q" boolean \*q
+enables the SYSV-style VT switch sequence for non-SYSV systems
+which support VT switching. This sequence is
+.B Alt-SysRq
+followed
+by a function key
+.RB ( Fn ).
+This prevents the __xservername__ server trapping the
+keys used for the default VT switch sequence, which means that clients can
+access them. Default: off.
+.TP 7
+.BI "Option \*qXkbDisable\*q \*q" boolean \*q
+disable/enable the XKEYBOARD extension. The \-kb command line
+option overrides this config file option. Default: XKB is enabled.
+.\" The following four options are "undocumented".
+.ig
+.TP 7
+.BI "Option \*qPciProbe1\*q"
+Use PCI probe method 1. Default: set.
+.TP 7
+.BI "Option \*qPciProbe2\*q"
+Use PCI probe method 2. Default: not set.
+.TP 7
+.BI "Option \*qPciForceConfig1\*q"
+Force the use PCI config type 1. Default: not set.
+.TP 7
+.BI "Option \*qPciForceConfig2\*q"
+Force the use PCI config type 2. Default: not set.
+..
+.TP 7
+.BI "Option \*qBlankTime\*q \*q" time \*q
+sets the inactivity timeout for the blanking phase of the screensaver.
+.I time
+is in minutes. This is equivalent to the __xservername__ server's `-s' flag,
+and the value can be changed at run-time with xset(__appmansuffix__). Default: 10
+minutes.
+.TP 7
+.BI "Option \*qStandbyTime\*q \*q" time \*q
+sets the inactivity timeout for the "standby" phase of DPMS mode.
+.I time
+is in minutes, and the value can be changed at run-time with xset(__appmansuffix__).
+Default: 20 minutes. This is only suitable for VESA DPMS compatible
+monitors, and may not be supported by all video drivers. It is only
+enabled for screens that have the
+.B \*qDPMS\*q
+option set (see the MONITOR section below).
+.TP 7
+.BI "Option \*qSuspendTime\*q \*q" time \*q
+sets the inactivity timeout for the "suspend" phase of DPMS mode.
+.I time
+is in minutes, and the value can be changed at run-time with xset(__appmansuffix__).
+Default: 30 minutes. This is only suitable for VESA DPMS compatible
+monitors, and may not be supported by all video drivers. It is only
+enabled for screens that have the
+.B \*qDPMS\*q
+option set (see the MONITOR section below).
+.TP 7
+.BI "Option \*qOffTime\*q \*q" time \*q
+sets the inactivity timeout for the "off" phase of DPMS mode.
+.I time
+is in minutes, and the value can be changed at run-time with xset(__appmansuffix__).
+Default: 40 minutes. This is only suitable for VESA DPMS compatible
+monitors, and may not be supported by all video drivers. It is only
+enabled for screens that have the
+.B \*qDPMS\*q
+option set (see the MONITOR section below).
+.TP 7
+.BI "Option \*qPixmap\*q \*q" bpp \*q
+This sets the pixmap format to use for depth 24. Allowed values for
+.I bpp
+are 24 and 32. Default: 32 unless driver constraints don't allow this
+(which is rare). Note: some clients don't behave well when this value
+is set to 24.
+.TP 7
+.BI "Option \*qPC98\*q \*q" boolean \*q
+Specify that the machine is a Japanese PC-98 machine. This should not
+be enabled for anything other than the Japanese-specific PC-98
+architecture. Default: auto-detected.
+.\" Doubt this should be documented.
+.ig
+.TP 7
+.BI "Option \*qEstimateSizesAggressively\*q \*q" value \*q
+This option affects the way that bus resource sizes are estimated.
+Default: 0.
+..
+.TP 7
+.BI "Option \*qNoPM\*q \*q" boolean \*q
+Disables something to do with power management events. Default: PM
+enabled on platforms that support it.
+.TP 7
+.BI "Option \*qXinerama\*q \*q" boolean \*q
+enable or disable XINERAMA extension. Default is disabled.
+.TP 7
+.BI "Option \*qAllowDeactivateGrabs\*q \*q" boolean \*q
+This option enables the use of the
+.B Ctrl+Alt+Keypad-Divide
+key sequence to deactivate any active keyboard and mouse grabs. Default:
+off.
+.TP 7
+.BI "Option \*qAllowClosedownGrabs\*q \*q" boolean \*q
+This option enables the use of the
+.B Ctrl+Alt+Keypad-Multiply
+key sequence to kill clients with an active keyboard or mouse grab as
+well as killing any application that may have locked the server, normally
+using the XGrabServer(__libmansuffix__) Xlib function. Default: off.
+.br
+Note that the options
+.BI AllowDeactivateGrabs
+and
+.BI AllowClosedownGrabs
+will allow users to remove the grab used by screen saver/locker programs.
+An API was written to such cases. If you enable this option, make sure
+your screen saver/locker is updated.
+.TP 7
+.BI "Option \*qHandleSpecialKeys\*q \*q" when \*q
+This option controls when the server uses the builtin handler to process
+special key combinations (such as
+.BR Ctrl+Alt+Backspace ).
+Normally the XKEYBOARD extension keymaps will provide mappings for each
+of the special key combinations, so the builtin handler is not needed
+unless the XKEYBOARD extension is disabled. The value of
+.I when
+can be
+.BR Always ,
+.BR Never ,
+or
+.BR WhenNeeded .
+Default: Use the builtin handler only if needed. The server will scan
+the keymap for a mapping to the
+.B Terminate
+action and, if found, use XKEYBOARD for processing actions, otherwise
+the builtin handler will be used.
+.SH MODULE SECTION
+The
+.B Module
+section is used to specify which __xservername__ server modules should be loaded.
+This section is ignored when the __xservername__ server is built in static form.
+The types of modules normally loaded in this section are __xservername__ server
+extension modules, and font rasteriser modules. Most other module types
+are loaded automatically when they are needed via other mechanisms.
+The
+.B Module
+section is optional, as are all of the entries that may be specified in
+it.
+.PP
+Entries in this section may be in two forms. The first and most commonly
+used form is an entry that uses the
+.B Load
+keyword, as described here:
+.TP 7
+.BI "Load \*q" modulename \*q
+This instructs the server to load the module called
+.IR modulename .
+The module name given should be the module's standard name, not the
+module file name. The standard name is case-sensitive, and does not
+include the "lib" prefix, or the ".a", ".o", or ".so" suffixes.
+.PP
+.RS 7
+Example: the Type 1 font rasteriser can be loaded with the following entry:
+.PP
+.RS 4
+.B "Load \*qtype1\*q"
+.RE
+.RE
+.PP
+The second form of entry is a
+.BR SubSection,
+with the subsection name being the module name, and the contents of the
+.B SubSection
+being
+.B Options
+that are passed to the module when it is loaded.
+.PP
+Example: the extmod module (which contains a miscellaneous group of
+server extensions) can be loaded, with the __xservername__-DGA extension
+disabled by using the following entry:
+.PP
+.RS 4
+.nf
+.B "SubSection \*qextmod\*q"
+.B " Option \*qomit XFree86-DGA\*q"
+.B EndSubSection
+.fi
+.RE
+.PP
+Modules are searched for in each directory specified in the
+.B ModulePath
+search path, and in the drivers, input, extensions, fonts, and
+internal subdirectories of each of those directories.
+In addition to this, operating system specific subdirectories of all
+the above are searched first if they exist.
+.PP
+To see what font and extension modules are available, check the contents
+of the following directories:
+.PP
+.RS 4
+.nf
+__projectroot__/lib/modules/fonts
+__projectroot__/lib/modules/extensions
+.fi
+.RE
+.PP
+The "bitmap" font modules is loaded automatically. It is recommended
+that at very least the "extmod" extension module be loaded. If it isn't
+some commonly used server extensions (like the SHAPE extension) will not be
+available.
+.SH INPUTDEVICE SECTION
+The config file may have multiple
+.B InputDevice
+sections. There will normally be at least two: one for the core (primary)
+keyboard, and one of the core pointer. If either of these two is missing,
+a default configuration for the missing ones will be used. Currently the
+default configuration may not work as expected on all platforms.
+.PP
+.B InputDevice
+sections have the following format:
+.PP
+.RS 4
+.nf
+.B "Section \*qInputDevice\*q"
+.BI " Identifier \*q" name \*q
+.BI " Driver \*q" inputdriver \*q
+.I " options"
+.I " ..."
+.B "EndSection"
+.fi
+.RE
+.PP
+The
+.B Identifier
+and
+.B Driver
+entries are required in all
+.B InputDevice
+sections. All other entries are optional.
+.PP
+The
+.B Identifier
+entry specifies the unique name for this input device. The
+.B Driver
+entry specifies the name of the driver to use for this input device.
+When using the loadable server, the input driver module
+.RI \*q inputdriver \*q
+will be loaded for each active
+.B InputDevice
+section. An
+.B InputDevice
+section is considered active if it is referenced by an active
+.B ServerLayout
+section, if it is referenced by the
+.B \-keyboard
+or
+.B \-pointer
+command line options, or if it is selected implicitly as the core pointer
+or keyboard device in the absence of such explicit references.
+The most commonly used input drivers are "keyboard" and "mouse".
+.PP
+In the absence of an explicitly specified core input device, the first
+.B InputDevice
+marked as
+.B CorePointer
+(or
+.BR CoreKeyboard )
+is used. If there is no match there, the first
+.B InputDevice
+that uses the "mouse" (or "keyboard" or "kbd") driver is used. The final
+fallback is to use built-in default configurations.
+.PP
+.B InputDevice
+sections recognise some driver-independent
+.BR Options ,
+which are described here. See the individual input driver manual pages
+for a description of the device-specific options.
+.TP 7
+.BI "Option \*qCorePointer\*q"
+When this is set, the input device is installed as the core (primary)
+pointer device. There must be exactly one core pointer. If this option
+is not set here, or in the
+.B ServerLayout
+section, or from the
+.B \-pointer
+command line option, then the first input device that is capable of
+being used as a core pointer will be selected as the core pointer.
+This option is implicitly set when the obsolete
+.B Pointer
+section is used.
+.TP 7
+.BI "Option \*qCoreKeyboard\*q"
+When this is set, the input device is to be installed as the core
+(primary) keyboard device. There must be exactly one core keyboard. If
+this option is not set here, in the
+.B ServerLayout
+section, or from the
+.B \-keyboard
+command line option, then the first input device that is capable of
+being used as a core keyboard will be selected as the core keyboard.
+This option is implicitly set when the obsolete
+.B Keyboard
+section is used.
+.TP 7
+.BI "Option \*qAlwaysCore\*q \*q" boolean \*q
+.TP 7
+.BI "Option \*qSendCoreEvents\*q \*q" boolean \*q
+Both of these options are equivalent, and when enabled cause the
+input device to always report core events. This can be used, for
+example, to allow an additional pointer device to generate core
+pointer events (like moving the cursor, etc).
+.TP 4
+.BI "Option \*qHistorySize\*q \*q" number \*q
+Sets the motion history size. Default: 0.
+.TP 7
+.BI "Option \*qSendDragEvents\*q \*q" boolean \*q
+???
+.SH DEVICE SECTION
+The config file may have multiple
+.B Device
+sections. There must be at least one, for the video card being used.
+.PP
+.B Device
+sections have the following format:
+.PP
+.RS 4
+.nf
+.B "Section \*qDevice\*q"
+.BI " Identifier \*q" name \*q
+.BI " Driver \*q" driver \*q
+.I " entries"
+.I " ..."
+.B "EndSection"
+.fi
+.RE
+.PP
+The
+.B Identifier
+and
+.B Driver
+entries are required in all
+.B Device
+sections. All other entries are optional.
+.PP
+The
+.B Identifier
+entry specifies the unique name for this graphics device. The
+.B Driver
+entry specifies the name of the driver to use for this graphics device.
+When using the loadable server, the driver module
+.RI \*q driver \*q
+will be loaded for each active
+.B Device
+section. A
+.B Device
+section is considered active if it is referenced by an active
+.B Screen
+section.
+.PP
+.B Device
+sections recognise some driver-independent entries and
+.BR Options ,
+which are described here. Not all drivers make use of these
+driver-independent entries, and many of those that do don't require them
+to be specified because the information is auto-detected. See the
+individual graphics driver manual pages for further information about
+this, and for a description of the device-specific options.
+Note that most of the
+.B Options
+listed here (but not the other entries) may be specified in the
+.B Screen
+section instead of here in the
+.B Device
+section.
+.TP 7
+.BI "BusID \*q" bus-id \*q
+This specifies the bus location of the graphics card. For PCI/AGP cards,
+the
+.I bus-id
+string has the form
+.BI PCI: bus : device : function
+(e.g., "PCI:1:0:0" might be appropriate for an AGP card).
+This field is usually optional in single-head configurations when using
+the primary graphics card. In multi-head configurations, or when using
+a secondary graphics card in a single-head configuration, this entry is
+mandatory. Its main purpose is to make an unambiguous connection between
+the device section and the hardware it is representing. This information
+can usually be found by running the __xservername__ server with the
+.B \-scanpci
+command line option.
+.TP 7
+.BI "Screen " number
+This option is mandatory for cards where a single PCI entity can drive more
+than one display (i.e., multiple CRTCs sharing a single graphics accelerator
+and video memory). One
+.B Device
+section is required for each head, and this
+parameter determines which head each of the
+.B Device
+sections applies to. The legal values of
+.I number
+range from 0 to one less than the total number of heads per entity.
+Most drivers require that the primary screen (0) be present.
+.TP 7
+.BI "Chipset \*q" chipset \*q
+This usually optional entry specifies the chipset used on the graphics
+board. In most cases this entry is not required because the drivers
+will probe the hardware to determine the chipset type. Don't
+specify it unless the driver-specific documentation recommends that you
+do.
+.TP 7
+.BI "Ramdac \*q" ramdac-type \*q
+This optional entry specifies the type of RAMDAC used on the graphics
+board. This is only used by a few of the drivers, and in most cases it
+is not required because the drivers will probe the hardware to determine
+the RAMDAC type where possible. Don't specify it unless the
+driver-specific documentation recommends that you do.
+.TP 7
+.BI "DacSpeed " speed
+.TP 7
+.BI "DacSpeed " "speed-8 speed-16 speed-24 speed-32"
+This optional entry specifies the RAMDAC speed rating (which is usually
+printed on the RAMDAC chip). The speed is in MHz. When one value is
+given, it applies to all framebuffer pixel sizes. When multiple values
+are give, they apply to the framebuffer pixel sizes 8, 16, 24 and 32
+respectively. This is not used by many drivers, and only needs to be
+specified when the speed rating of the RAMDAC is different from the
+defaults built in to driver, or when the driver can't auto-detect the
+correct defaults. Don't specify it unless the driver-specific
+documentation recommends that you do.
+.TP 7
+.BI "Clocks " "clock ..."
+specifies the pixel that are on your graphics board. The clocks are in
+MHz, and may be specified as a floating point number. The value is
+stored internally to the nearest kHz. The ordering of the clocks is
+important. It must match the order in which they are selected on the
+graphics board. Multiple
+.B Clocks
+lines may be specified, and each is concatenated to form the list. Most
+drivers do not use this entry, and it is only required for some older
+boards with non-programmable clocks. Don't specify this entry unless
+the driver-specific documentation explicitly recommends that you do.
+.TP
+.BI "ClockChip \*q" clockchip-type \*q
+This optional entry is used to specify the clock chip type on graphics
+boards which have a programmable clock generator. Only a few __xservername__
+drivers support programmable clock chips. For details, see the appropriate
+driver manual page.
+.TP 7
+.BI "VideoRam " "mem"
+This optional entry specifies the amount of video ram that is installed
+on the graphics board. This is measured in kBytes. In most cases this
+is not required because the __xservername__ server probes the graphics board to
+determine this quantity. The driver-specific documentation should
+indicate when it might be needed.
+.TP 7
+.BI "BiosBase " "baseaddress"
+This optional entry specifies the base address of the video BIOS for
+the VGA board. This address is normally auto-detected, and should only
+be specified if the driver-specific documentation recommends it.
+.TP 7
+.BI "MemBase " "baseaddress"
+This optional entry specifies the memory base address of a graphics
+board's linear frame buffer. This entry is not used by many drivers,
+and it should only be specified if the driver-specific documentation
+recommends it.
+.TP 7
+.BI "IOBase " "baseaddress"
+This optional entry specifies the IO base address. This entry is not
+used by many drivers, and it should only be specified if the
+driver-specific documentation recommends it.
+.TP 7
+.BI "ChipID " "id"
+This optional entry specifies a numerical ID representing the chip type.
+For PCI cards, it is usually the device ID. This can be used to override
+the auto-detection, but that should only be done when the driver-specific
+documentation recommends it.
+.TP 7
+.BI "ChipRev " "rev"
+This optional entry specifies the chip revision number. This can be
+used to override the auto-detection, but that should only be done when
+the driver-specific documentation recommends it.
+.TP 7
+.BI "TextClockFreq " "freq"
+This optional entry specifies the pixel clock frequency that is used
+for the regular text mode. The frequency is specified in MHz. This is
+rarely used.
+.ig
+.TP 7
+This optional entry allows an IRQ number to be specified.
+..
+.TP 7
+.B Options
+Option flags may be specified in the
+.B Device
+sections. These include driver-specific options and driver-independent
+options. The former are described in the driver-specific documentation.
+Some of the latter are described below in the section about the
+.B Screen
+section, and they may also be included here.
+
+.SH VIDEOADAPTOR SECTION
+Nobody wants to say how this works. Maybe nobody knows ...
+
+.SH MONITOR SECTION
+The config file may have multiple
+.B Monitor
+sections. There should normally be at least one, for the monitor being used,
+but a default configuration will be created when one isn't specified.
+.PP
+.B Monitor
+sections have the following format:
+.PP
+.RS 4
+.nf
+.B "Section \*qMonitor\*q"
+.BI " Identifier \*q" name \*q
+.I " entries"
+.I " ..."
+.B "EndSection"
+.fi
+.RE
+.PP
+The only mandatory entry in a
+.B Monitor
+section is the
+.B Identifier
+entry.
+.PP
+The
+.B Identifier
+entry specifies the unique name for this monitor. The
+.B Monitor
+section provides information about the specifications of the monitor,
+monitor-specific
+.BR Options ,
+and information about the video modes to use with the monitor. Specifying
+video modes is optional because the server now has a built-in list of
+VESA standard modes. When modes are specified explicitly in the
+.B Monitor
+section (with the
+.BR Modes ,
+.BR ModeLine ,
+or
+.B UseModes
+keywords), built-in modes with the same names are not included. Built-in
+modes with different names are, however, still implicitly included.
+.PP
+The entries that may be used in
+.B Monitor
+sections are described below.
+.TP 7
+.BI "VendorName \*q" vendor \*q
+This optional entry specifies the monitor's manufacturer.
+.TP 7
+.BI "ModelName \*q" model \*q
+This optional entry specifies the monitor's model.
+.TP 7
+.BI "HorizSync " "horizsync-range"
+gives the range(s) of horizontal sync frequencies supported by the
+monitor.
+.I horizsync-range
+may be a comma separated list of either discrete values or ranges of
+values. A range of values is two values separated by a dash. By default
+the values are in units of kHz. They may be specified in MHz or Hz if
+.B MHz
+or
+.B Hz
+is added to the end of the line. The data given here is used by the
+__xservername__ server to determine if video modes are within the specifications
+of the monitor. This information should be available in the monitor's
+handbook. If this entry is omitted, a default range of 28\-33kHz is
+used.
+.TP 7
+.BI "VertRefresh " "vertrefresh-range"
+gives the range(s) of vertical refresh frequencies supported by the
+monitor.
+.I vertrefresh-range
+may be a comma separated list of either discrete values or ranges of
+values. A range of values is two values separated by a dash. By default
+the values are in units of Hz. They may be specified in MHz or kHz if
+.B MHz
+or
+.B kHz
+is added to the end of the line. The data given here is used by the
+__xservername__ server to determine if video modes are within the specifications
+of the monitor. This information should be available in the monitor's
+handbook. If this entry is omitted, a default range of 43-72Hz is used.
+.TP 7
+.BI "DisplaySize " "width height"
+This optional entry gives the width and height, in millimetres, of the
+picture area of the monitor. If given this is used to calculate the
+horizontal and vertical pitch (DPI) of the screen.
+.TP 7
+.BI "Gamma " "gamma-value"
+.TP 7
+.BI "Gamma " "red-gamma green-gamma blue-gamma"
+This is an optional entry that can be used to specify the gamma correction
+for the monitor. It may be specified as either a single value or as
+three separate RGB values. The values should be in the range 0.1 to
+10.0, and the default is 1.0. Not all drivers are capable of using this
+information.
+.TP 7
+.BI "UseModes \*q" modesection-id \*q
+Include the set of modes listed in the
+.B Modes
+section called
+.IR modesection-id.
+This make all of the modes defined in that section available for use by
+this monitor.
+.TP 7
+.BI "Mode \*q" name \*q
+This is an optional multi-line entry that can be used to provide
+definitions for video modes for the monitor. In most cases this isn't
+necessary because the built-in set of VESA standard modes will be
+sufficient. The
+.B Mode
+keyword indicates the start of a multi-line video mode description.
+The mode description is terminated with the
+.B EndMode
+keyword. The mode description consists of the following entries:
+.RS 7
+.TP 4
+.BI "DotClock " clock
+is the dot (pixel) clock rate to be used for the mode.
+.TP 4
+.BI "HTimings " "hdisp hsyncstart hsyncend htotal"
+specifies the horizontal timings for the mode.
+.TP 4
+.BI "VTimings " "vdisp vsyncstart vsyncend vtotal"
+specifies the vertical timings for the mode.
+.TP 4
+.BI "Flags \*q" flag \*q " ..."
+specifies an optional set of mode flags, each of which is a separate
+string in double quotes.
+.B \*qInterlace\*q
+indicates that the mode is interlaced.
+.B \*qDoubleScan\*q
+indicates a mode where each scanline is doubled.
+.B \*q+HSync\*q
+and
+.B \*q\-HSync\*q
+can be used to select the polarity of the HSync signal.
+.B \*q+VSync\*q
+and
+.B \*q\-VSync\*q
+can be used to select the polarity of the VSync signal.
+.B \*qComposite\*q
+can be used to specify composite sync on hardware where this is supported.
+Additionally, on some hardware,
+.B \*q+CSync\*q
+and
+.B \*q\-CSync\*q
+may be used to select the composite sync polarity.
+.TP 4
+.BI "HSkew " hskew
+specifies the number of pixels (towards the right edge of the screen)
+by which the display enable signal is to be skewed. Not all drivers
+use this information. This option might become necessary to override
+the default value supplied by the server (if any). "Roving" horizontal
+lines indicate this value needs to be increased. If the last few pixels
+on a scan line appear on the left of the screen, this value should be
+decreased.
+.TP 4
+.BI "VScan " vscan
+specifies the number of times each scanline is painted on the screen.
+Not all drivers use this information. Values less than 1 are treated
+as 1, which is the default. Generally, the
+.B \*qDoubleScan\*q
+.B Flag
+mentioned above doubles this value.
+.RE
+.TP 7
+.BI "ModeLine \*q" name \*q " mode-description"
+This entry is a more compact version of the
+.B Mode
+entry, and it also can be used to specify video modes for the monitor.
+is a single line format for specifying video modes. In most cases this
+isn't necessary because the built-in set of VESA standard modes will be
+sufficient.
+.PP
+.RS 7
+The
+.I mode-description
+is in four sections, the first three of which are mandatory. The first
+is the dot (pixel) clock. This is a single number specifying the pixel
+clock rate for the mode in MHz. The second section is a list of four
+numbers specifying the horizontal timings. These numbers are the
+.IR hdisp ,
+.IR hsyncstart ,
+.IR hsyncend ,
+and
+.I htotal
+values. The third section is a list of four numbers specifying the
+vertical timings. These numbers are the
+.IR vdisp ,
+.IR vsyncstart ,
+.IR vsyncend ,
+and
+.I vtotal
+values. The final section is a list of flags specifying other
+characteristics of the mode.
+.B Interlace
+indicates that the mode is interlaced.
+.B DoubleScan
+indicates a mode where each scanline is doubled.
+.B +HSync
+and
+.B \-HSync
+can be used to select the polarity of the HSync signal.
+.B +VSync
+and
+.B \-VSync
+can be used to select the polarity of the VSync signal.
+.B Composite
+can be used to specify composite sync on hardware where this is supported.
+Additionally, on some hardware,
+.B +CSync
+and
+.B \-CSync
+may be used to select the composite sync polarity. The
+.B HSkew
+and
+.B VScan
+options mentioned above in the
+.B Modes
+entry description can also be used here.
+.RE
+.TP 7
+.B Options
+Some
+.B Option
+flags that may be useful to include in
+.B Monitor
+sections (when needed) include
+.BR \*qDPMS\*q ,
+and
+.BR \*qSyncOnGreen\*q .
+
+.SH MODES SECTION
+The config file may have multiple
+.B Modes
+sections, or none. These sections provide a way of defining sets of
+video modes independently of the
+.B Monitor
+sections.
+.B Monitor
+sections may include the definitions provided in these sections by
+using the
+.B UseModes
+keyword. In most cases the
+.B Modes
+sections are not necessary because the built-in set of VESA standard modes
+will be sufficient.
+.PP
+.B Modes
+sections have the following format:
+.PP
+.RS 4
+.nf
+.B "Section \*qModes\*q"
+.BI " Identifier \*q" name \*q
+.I " entries"
+.I " ..."
+.B "EndSection"
+.fi
+.RE
+.PP
+The
+.B Identifier
+entry specifies the unique name for this set of mode descriptions.
+The other entries permitted in
+.B Modes
+sections are the
+.B Mode
+and
+.B ModeLine
+entries that are described above in the
+.B Monitor
+section.
+.SH SCREEN SECTION
+The config file may have multiple
+.B Screen
+sections. There must be at least one, for the "screen" being used.
+A "screen" represents the binding of a graphics device
+.RB ( Device
+section) and a monitor
+.RB ( Monitor
+section). A
+.B Screen
+section is considered "active" if it is referenced by an active
+.B ServerLayout
+section or by the
+.B \-screen
+command line option. If neither of those is present, the first
+.B Screen
+section found in the config file is considered the active one.
+.PP
+.B Screen
+sections have the following format:
+.PP
+.RS 4
+.nf
+.B "Section \*qScreen\*q"
+.BI " Identifier \*q" name \*q
+.BI " Device \*q" devid \*q
+.BI " Monitor \*q" monid \*q
+.I " entries"
+.I " ..."
+.BI " SubSection \*qDisplay\*q"
+.I " entries"
+.I " ...
+.B " EndSubSection"
+.I " ..."
+.B "EndSection"
+.fi
+.RE
+.PP
+The
+.B Identifier
+and
+.B Device
+entries are mandatory. All others are optional.
+.PP
+The
+.B Identifier
+entry specifies the unique name for this screen. The
+.B Screen
+section provides information specific to the whole screen, including
+screen-specific
+.BR Options .
+In multi-head configurations, there will be multiple active
+.B Screen
+sections, one for each head.
+The entries available
+for this section are:
+.TP 7
+.BI "Device \*q" device-id \*q
+This mandatory entry specifies the
+.B Device
+section to be used for this screen. This is what ties a specific
+graphics card to a screen. The
+.I device-id
+must match the
+.B Identifier
+of a
+.B Device
+section in the config file.
+.TP 7
+.BI "Monitor \*q" monitor-id \*q
+specifies which monitor description is to be used for this screen.
+If a
+.B Monitor
+name is not specified, a default configuration is used. Currently the default
+configuration may not function as expected on all platforms.
+.TP 7
+.BI "VideoAdaptor \*q" xv-id \*q
+specifies an optional Xv video adaptor description to be used with this
+screen.
+.TP 7
+.BI "DefaultDepth " depth
+specifies which color depth the server should use by default. The
+.B \-depth
+command line option can be used to override this. If neither is specified,
+the default depth is driver-specific, but in most cases is 8.
+.TP 7
+.BI "DefaultFbBpp " bpp
+specifies which framebuffer layout to use by default. The
+.B \-fbbpp
+command line option can be used to override this. In most cases the
+driver will chose the best default value for this. The only case where
+there is even a choice in this value is for depth 24, where some hardware
+supports both a packed 24 bit framebuffer layout and a sparse 32 bit
+framebuffer layout.
+.TP 7
+.B Options
+Various
+.B Option
+flags may be specified in the
+.B Screen
+section. Some are driver-specific and are described in the driver
+documentation. Others are driver-independent, and will eventually be
+described here.
+.\" XXX These should really be in an xaa man page.
+.TP 7
+.BI "Option \*qAccel\*q"
+Enables XAA (X Acceleration Architecture), a mechanism that makes video
+cards' 2D hardware acceleration available to the
+__xservername__ server. This
+option is on by default, but it may be necessary to turn it off if there
+are bugs in the driver. There are many options to disable specific
+accelerated operations, listed below. Note that disabling an operation
+will have no effect if the operation is not accelerated (whether due to
+lack of support in the hardware or in the driver).
+.TP 7
+.BI "Option \*qBiosLocation\*q \*q" address \*q
+Set the location of the BIOS for the Int10 module. One may select a BIOS
+of another card for posting or the legacy V_BIOS range located at 0xc0000
+or an alternative address (BUS_ISA). This is only useful under very
+special circumstances and should be used with extreme care.
+.TP 7
+.BI "Option \*qInitPrimary\*q \*q" boolean \*q
+Use the Int10 module to initialize the primary graphics card. Normally,
+only secondary cards are soft-booted using the Int10 module, as the
+primary card has already been initialized by the BIOS at boot time.
+Default: false.
+.TP 7
+.BI "Option \*qNoInt10\*q \*q" boolean \*q
+Disables the Int10 module, a module that uses the int10 call to the BIOS
+of the graphics card to initialize it. Default: false.
+.TP 7
+.BI "Option \*qNoMTRR\*q"
+Disables MTRR (Memory Type Range Register) support, a feature of modern
+processors which can improve video performance by a factor of up to 2.5.
+Some hardware has buggy MTRR support, and some video drivers have been
+known to exhibit problems when MTRR's are used.
+.TP 7
+.BI "Option \*qXaaNoCPUToScreenColorExpandFill\*q"
+Disables accelerated rectangular expansion blits from source patterns
+stored in system memory (using a memory-mapped aperture).
+.TP 7
+.BI "Option \*qXaaNoColor8x8PatternFillRect\*q"
+Disables accelerated fills of a rectangular region with a full-color
+pattern.
+.TP 7
+.BI "Option \*qXaaNoColor8x8PatternFillTrap\*q"
+Disables accelerated fills of a trapezoidal region with a full-color
+pattern.
+.TP 7
+.BI "Option \*qXaaNoDashedBresenhamLine\*q"
+Disables accelerated dashed Bresenham line draws.
+.TP 7
+.BI "Option \*qXaaNoDashedTwoPointLine\*q"
+Disables accelerated dashed line draws between two arbitrary points.
+.TP 7
+.BI "Option \*qXaaNoImageWriteRect\*q"
+Disables accelerated transfers of full-color rectangular patterns from
+system memory to video memory (using a memory-mapped aperture).
+.TP 7
+.BI "Option \*qXaaNoMono8x8PatternFillRect\*q"
+Disables accelerated fills of a rectangular region with a monochrome
+pattern.
+.TP 7
+.BI "Option \*qXaaNoMono8x8PatternFillTrap\*q"
+Disables accelerated fills of a trapezoidal region with a monochrome
+pattern.
+.TP 7
+.BI "Option \*qXaaNoOffscreenPixmaps\*q"
+Disables accelerated draws into pixmaps stored in offscreen video memory.
+.TP 7
+.BI "Option \*qXaaNoPixmapCache\*q"
+Disables caching of patterns in offscreen video memory.
+.TP 7
+.BI "Option \*qXaaNoScanlineCPUToScreenColorExpandFill\*q"
+Disables accelerated rectangular expansion blits from source patterns
+stored in system memory (one scan line at a time).
+.TP 7
+.BI "Option \*qXaaNoScanlineImageWriteRect\*q"
+Disables accelerated transfers of full-color rectangular patterns from
+system memory to video memory (one scan line at a time).
+.TP 7
+.BI "Option \*qXaaNoScreenToScreenColorExpandFill\*q"
+Disables accelerated rectangular expansion blits from source patterns
+stored in offscreen video memory.
+.TP 7
+.BI "Option \*qXaaNoScreenToScreenCopy\*q"
+Disables accelerated copies of rectangular regions from one part of
+video memory to another part of video memory.
+.TP 7
+.BI "Option \*qXaaNoSolidBresenhamLine\*q"
+Disables accelerated solid Bresenham line draws.
+.TP 7
+.BI "Option \*qXaaNoSolidFillRect\*q"
+Disables accelerated solid-color fills of rectangles.
+.TP 7
+.BI "Option \*qXaaNoSolidFillTrap\*q"
+Disables accelerated solid-color fills of Bresenham trapezoids.
+.TP 7
+.BI "Option \*qXaaNoSolidHorVertLine\*q"
+Disables accelerated solid horizontal and vertical line draws.
+.TP 7
+.BI "Option \*qXaaNoSolidTwoPointLine\*q"
+Disables accelerated solid line draws between two arbitrary points.
+.PP
+Each
+.B Screen
+section may optionally contain one or more
+.B Display
+subsections. Those subsections provide depth/fbbpp specific configuration
+information, and the one chosen depends on the depth and/or fbbpp that
+is being used for the screen. The
+.B Display
+subsection format is described in the section below.
+
+.SH DISPLAY SUBSECTION
+Each
+.B Screen
+section may have multiple
+.B Display
+subsections.
+The "active"
+.B Display
+subsection is the first that matches the depth and/or fbbpp values being
+used, or failing that, the first that has neither a depth or fbbpp value
+specified. The
+.B Display
+subsections are optional. When there isn't one that matches the depth
+and/or fbbpp values being used, all the parameters that can be specified
+here fall back to their defaults.
+.PP
+.B Display
+subsections have the following format:
+.PP
+.RS 4
+.nf
+.B " SubSection \*qDisplay\*q"
+.BI " Depth " depth
+.I " entries"
+.I " ..."
+.B " EndSubSection"
+.fi
+.RE
+.PP
+.TP 7
+.BI "Depth " depth
+This entry specifies what colour depth the
+.B Display
+subsection is to be used for. This entry is usually specified,
+but it may be omitted to create a match-all
+.B Display
+subsection or when wishing to match only against the
+.B FbBpp
+parameter. The range of
+.I depth
+values that are allowed depends on the driver. Most driver support
+8, 15, 16 and 24. Some also support 1 and/or 4, and some may support
+other values (like 30). Note:
+.I depth
+means the number of bits in a pixel that are actually used to determine
+the pixel colour. 32 is not a valid
+.I depth
+value. Most hardware that uses 32 bits per pixel only uses 24 of them
+to hold the colour information, which means that the colour depth is
+24, not 32.
+.TP 7
+.BI "FbBpp " bpp
+This entry specifies the framebuffer format this
+.B Display
+subsection is to be used for. This entry is only needed when providing
+depth 24 configurations that allow a choice between a 24 bpp packed
+framebuffer format and a 32bpp sparse framebuffer format. In most cases
+this entry should not be used.
+.TP 7
+.BI "Weight " "red-weight green-weight blue-weight"
+This optional entry specifies the relative RGB weighting to be used
+for a screen is being used at depth 16 for drivers that allow multiple
+formats. This may also be specified from the command line with the
+.B \-weight
+option (see __xservername__(__appmansuffix__)).
+.TP 7
+.BI "Virtual " "xdim ydim"
+This optional entry specifies the virtual screen resolution to be used.
+.I xdim
+must be a multiple of either 8 or 16 for most drivers, and a multiple
+of 32 when running in monochrome mode. The given value will be rounded
+down if this is not the case. Video modes which are too large for the
+specified virtual size will be rejected. If this entry is not present,
+the virtual screen resolution will be set to accommodate all the valid
+video modes given in the
+.B Modes
+entry. Some drivers/hardware combinations do not support virtual screens.
+Refer to the appropriate driver-specific documentation for details.
+.TP 7
+.BI "ViewPort " "x0 y0"
+This optional entry sets the upper left corner of the initial display.
+This is only relevant when the virtual screen resolution is different
+from the resolution of the initial video mode. If this entry is not
+given, then the initial display will be centered in the virtual display
+area.
+.TP 7
+.BI "Modes \*q" mode-name \*q " ..."
+This optional entry specifies the list of video modes to use. Each
+.I mode-name
+specified must be in double quotes. They must correspond to those
+specified or referenced in the appropriate
+.B Monitor
+section (including implicitly referenced built-in VESA standard modes).
+The server will delete modes from this list which don't satisfy various
+requirements. The first valid mode in this list will be the default
+display mode for startup. The list of valid modes is converted internally
+into a circular list. It is possible to switch to the next mode with
+.B Ctrl+Alt+Keypad-Plus
+and to the previous mode with
+.BR Ctrl+Alt+Keypad-Minus .
+When this entry is omitted, the valid modes referenced by the appropriate
+.B Monitor
+section will be used. If the
+.B Monitor
+section contains no modes, then the selection will be taken from the
+built-in VESA standard modes.
+.TP 7
+.BI "Visual \*q" visual-name \*q
+This optional entry sets the default root visual type. This may also
+be specified from the command line (see the Xserver(__appmansuffix__) man page). The
+visual types available for depth 8 are (default is
+.BR PseudoColor ):
+.PP
+.RS 11
+.nf
+.B StaticGray
+.B GrayScale
+.B StaticColor
+.B PseudoColor
+.B TrueColor
+.B DirectColor
+.fi
+.RE
+.PP
+.RS 7
+The visual type available for the depths 15, 16 and 24 are (default is
+.BR TrueColor ):
+.PP
+.RS 4
+.nf
+.B TrueColor
+.B DirectColor
+.fi
+.RE
+.PP
+Not all drivers support
+.B DirectColor
+at these depths.
+.PP
+The visual types available for the depth 4 are (default is
+.BR StaticColor ):
+.PP
+.RS 4
+.nf
+.B StaticGray
+.B GrayScale
+.B StaticColor
+.B PseudoColor
+.fi
+.RE
+.PP
+The visual type available for the depth 1 (monochrome) is
+.BR StaticGray .
+.RE
+.TP 7
+.BI "Black " "red green blue"
+This optional entry allows the "black" colour to be specified. This
+is only supported at depth 1. The default is black.
+.TP 7
+.BI "White " "red green blue"
+This optional entry allows the "white" colour to be specified. This
+is only supported at depth 1. The default is white.
+.TP 7
+.B Options
+Option flags may be specified in the
+.B Display
+subsections. These may include driver-specific options and
+driver-independent options. The former are described in the
+driver-specific documentation. Some of the latter are described above
+in the section about the
+.B Screen
+section, and they may also be included here.
+.SH SERVERLAYOUT SECTION
+The config file may have multiple
+.B ServerLayout
+sections.
+A "server layout" represents the binding of one or more screens
+.RB ( Screen
+sections) and one or more input devices
+.RB ( InputDevice
+sections) to form a complete configuration. In multi-head configurations,
+it also specifies the relative layout of the heads. A
+.B ServerLayout
+section is considered "active" if it is referenced by the
+.B \-layout
+command line option or by an
+.B "Option \*qDefaultServerLayout\*q"
+entry in the
+.B ServerFlags
+section (the former takes precedence over the latter). If those options are
+not used, the first
+.B ServerLayout
+section found in the config file is considered the active one. If no
+.B ServerLayout
+sections are present, the single active screen and two active (core)
+input devices are selected as described in the relevant sections above.
+.PP
+.B ServerLayout
+sections have the following format:
+.PP
+.RS 4
+.nf
+.B "Section \*qServerLayout\*q"
+.BI " Identifier \*q" name \*q
+.BI " Screen \*q" screen-id \*q
+.I " ..."
+.BI " InputDevice \*q" idev-id \*q
+.I " ..."
+.I " options"
+.I " ..."
+.B "EndSection"
+.fi
+.RE
+.PP
+Each
+.B ServerLayout
+section must have an
+.B Identifier
+entry and at least one
+.B Screen
+entry.
+.PP
+The
+.B Identifier
+entry specifies the unique name for this server layout. The
+.B ServerLayout
+section provides information specific to the whole session, including
+session-specific
+.BR Options .
+The
+.B ServerFlags
+options (described above) may be specified here, and ones given here
+override those given in the
+.B ServerFlags
+section.
+.PP
+The entries that may be used in this section are described here.
+.TP 7
+.BI "Screen " "screen-num" " \*qscreen-id\*q " "position-information"
+One of these entries must be given for each screen being used in
+a session. The
+.I screen-id
+field is mandatory, and specifies the
+.B Screen
+section being referenced. The
+.I screen-num
+field is optional, and may be used to specify the screen number
+in multi-head configurations. When this field is omitted, the
+screens will be numbered in the order that they are listed in.
+The numbering starts from 0, and must be consecutive. The
+.I position-information
+field describes the way multiple screens are positioned. There are
+a number of different ways that this information can be provided:
+.RS 7
+.TP 4
+.I "x y"
+.TP 4
+.BI "Absolute " "x y"
+These both specify that the upper left corner's coordinates are
+.RI ( x , y ).
+The
+.B Absolute
+keyword is optional. Some older versions of __xservername__ (4.2 and earlier) don't
+recognise the
+.B Absolute
+keyword, so it's safest to just specify the coordinates without it.
+.TP 4
+.BI "RightOf \*q" screen-id \*q
+.TP 4
+.BI "LeftOf \*q" screen-id \*q
+.TP 4
+.BI "Above \*q" screen-id \*q
+.TP 4
+.BI "Below \*q" screen-id \*q
+.TP 4
+.BI "Relative \*q" screen-id \*q " x y"
+These give the screen's location relative to another screen. The first four
+position the screen immediately to the right, left, above or below the
+other screen. When positioning to the right or left, the top edges are
+aligned. When positioning above or below, the left edges are aligned.
+The
+.B Relative
+form specifies the offset of the screen's origin (upper left corner)
+relative to the origin of another screen.
+.RE
+.TP 7
+.BI "InputDevice \*q" idev-id "\*q \*q" option \*q " ..."
+One of these entries should be given for each input device being used in
+a session. Normally at least two are required, one each for the core
+pointer and keyboard devices. If either of those is missing, suitable
+.B InputDevice
+entries are searched for using the method described above in the
+.B INPUTDEVICE
+section. The
+.I idev-id
+field is mandatory, and specifies the name of the
+.B InputDevice
+section being referenced. Multiple
+.I option
+fields may be specified, each in double quotes. The options permitted
+here are any that may also be given in the
+.B InputDevice
+sections. Normally only session-specific input device options would be
+used here. The most commonly used options are:
+.PP
+.RS 11
+.nf
+.B \*qCorePointer\*q
+.B \*qCoreKeyboard\*q
+.B \*qSendCoreEvents\*q
+.fi
+.RE
+.PP
+.RS 7
+and the first two should normally be used to indicate the core pointer
+and core keyboard devices respectively.
+.RE
+.TP 7
+.B Options
+Any option permitted in the
+.B ServerFlags
+section may also be specified here. When the same option appears in both
+places, the value given here overrides the one given in the
+.B ServerFlags
+section.
+.PP
+Here is an example of a
+.B ServerLayout
+section for a dual headed configuration with two mice:
+.PP
+.RS 4
+.nf
+.B "Section \*qServerLayout\*q"
+.B " Identifier \*qLayout 1\*q"
+.B " Screen \*qMGA 1\*q"
+.B " Screen \*qMGA 2\*q RightOf \*qMGA 1\*q"
+.B " InputDevice \*qKeyboard 1\*q \*qCoreKeyboard\*q"
+.B " InputDevice \*qMouse 1\*q \*qCorePointer\*q"
+.B " InputDevice \*qMouse 2\*q \*qSendCoreEvents\*q"
+.B " Option \*qBlankTime\*q \*q5\*q"
+.B "EndSection"
+.fi
+.RE
+.SH DRI SECTION
+This optional section is used to provide some information for the
+Direct Rendering Infrastructure. Details about the format of this section
+can be found in the README.DRI document, which is also available on-line
+at
+.IR <http://www.x.org> .
+.SH VENDOR SECTION
+The optional
+.B Vendor
+section may be used to provide vendor-specific configuration information.
+Multiple
+.B Vendor
+sections may be present, and they may contain an
+.B Identifier
+entry and multiple
+.B Option
+flags. The data therein is not used in this release.
+.PP
+.SH FILES
+For an example of an __xconfigfile__ file, see the file installed as
+__projectroot__/lib/X11/__xconfigfile__.eg.
+.fi
+.SH "SEE ALSO"
+X(__miscmansuffix__),
+Xserver(__appmansuffix__),
+__xservername__(__appmansuffix__),
+apm(__drivermansuffix__),
+.\" .IR ati(__drivermansuffix__),
+chips(__drivermansuffix__),
+cirrus(__drivermansuffix__),
+cyrix(__drivermansuffix__),
+fbdev(__drivermansuffix__),
+glide(__drivermansuffix__),
+glint(__drivermansuffix__),
+i128(__drivermansuffix__),
+i740(__drivermansuffix__),
+i810(__drivermansuffix__),
+imstt(__drivermansuffix__),
+mga(__drivermansuffix__),
+neomagic(__drivermansuffix__),
+nv(__drivermansuffix__),
+r128(__drivermansuffix__),
+rendition(__drivermansuffix__),
+savage(__drivermansuffix__),
+s3virge(__drivermansuffix__),
+.\" .IR shadowfb(__drivermansuffix__),
+siliconmotion(__drivermansuffix__),
+sis(__drivermansuffix__),
+sunbw2(__drivermansuffix__),
+suncg14(__drivermansuffix__),
+suncg3(__drivermansuffix__),
+suncg6(__drivermansuffix__),
+sunffb(__drivermansuffix__),
+sunleo(__drivermansuffix__),
+suntcx(__drivermansuffix__),
+tdfx(__drivermansuffix__),
+tga(__drivermansuffix__),
+trident(__drivermansuffix__),
+tseng(__drivermansuffix__),
+v4l(__drivermansuffix__),
+vesa(__drivermansuffix__),
+vga(__drivermansuffix__),
+vmware(__drivermansuffix__),
+.br
+.SH AUTHORS
+This manual page was largely rewritten by David Dawes
+.IR <dawes@xfree86.org> .
diff --git a/hw/xfree86/doc/sgml/DESIGN.sgml b/hw/xfree86/doc/sgml/DESIGN.sgml
index 0478a0598..84e4fad21 100644
--- a/hw/xfree86/doc/sgml/DESIGN.sgml
+++ b/hw/xfree86/doc/sgml/DESIGN.sgml
@@ -1,4 +1,5 @@
-<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [
+<!DOCTYPE linuxdoc PUBLIC "-//Xorg//DTD linuxdoc//EN" [
+ <!ENTITY % defs SYSTEM "defs.ent"> %defs;
<!-- config file keyword markup -->
<!ENTITY s.key STARTTAG "bf">
<!ENTITY e.key ENDTAG "bf">
@@ -27,6 +28,7 @@
<title>XFree86 server 4.x Design (DRAFT)
<author>The XFree86 Project, Inc
+<and>Updates for X11R&relvers; by Jim Gettys
<date>19 December 2003
@@ -79,10 +81,10 @@ The broad design principles are:
Unless we find major deficiencies in the DIX layer, we should avoid
making changes there.
-<sect>The XF86Config File
+<sect>The xorg.conf File
<p>
-The XF86Config file format is similar to the old format, with the following
+The xorg.conf file format is similar to the old format, with the following
changes:
<sect1>&k.device; section
@@ -315,7 +317,7 @@ the XFree86 common layer:
<tag>PreInit</tag>
- Process information from the XF86Config file, determine the
+ Process information from the xorg.conf file, determine the
full characteristics of the hardware, and determine if a valid
configuration is present.
</descrip>
@@ -426,12 +428,12 @@ control. &s.code;InitOutput()&e.code; is expected to fill in the global
&s.code;screenInfo.screen[]&e.code; entry for each screen present. Here
is what &s.code;InitOutput()&e.code; does:
-<sect1>Parse the XF86Config file
+<sect1>Parse the xorg.conf file
<p>
This is done at the start of the first server generation only.
- The XF86Config file is read in full, and the resulting information
+ The xorg.conf file is read in full, and the resulting information
stored in data structures. None of the parsed information is
processed at this point. The parser data structures are opaque to
the video drivers and to most of the common layer code.
@@ -595,7 +597,7 @@ is what &s.code;InitOutput()&e.code; does:
&s.code;PROBE_DETECT&e.code; is used if "-configure" or "-probe"
command line arguments are given and indicates to the
&s.code;Probe()&e.code; function that it should not configure the
- bus entities and that no XF86Config information is available.
+ bus entities and that no xorg.conf information is available.
The probe must find the active device sections that match the
driver by calling &s.code;xf86MatchDevice()&e.code;. The number
@@ -746,7 +748,7 @@ is what &s.code;InitOutput()&e.code; does:
After the Probe phase is finished, there will be some number of
&s.code;ScrnInfoRecs&e.code;. These are then matched with the active
- &k.screen; sections in the XF86Config, and those not having an active
+ &k.screen; sections in the xorg.conf, and those not having an active
&k.screen; section are deleted. If the number of remaining screens
is 0, &s.code;InitOutput()&e.code; sets
&s.code;screenInfo.numScreens&e.code; to &s.code;0&e.code; and
@@ -1294,10 +1296,10 @@ The function should not modify any other mode field, unless it wants to modify
the mode timings reported to the user by &s.code;xf86PrintModes()&e.code;.
<p>
-The function is called once for every mode in the XF86Config Monitor section
+The function is called once for every mode in the xorg.conf Monitor section
assigned to the screen, with &s.code;flags&e.code; set to
&s.code;MODECHECK_INITIAL&e.code;. It is subsequently called for every mode
-in the XF86Config Display subsection assigned to the screen, with
+in the xorg.conf Display subsection assigned to the screen, with
&s.code;flags&e.code; set to &s.code;MODECHECK_FINAL&e.code;. In the second
case, the mode will have successfully passed all other tests. In addition,
the &s.code;ScrnInfoRec&e.code;'s &s.code;virtualX&e.code;,
@@ -1866,7 +1868,7 @@ creates an entity record for each of them, registers non-relocatable
resources and allocates screens and adds the resources to screens.
Two helper functions are provided for matching device sections in the
-XF86Config file to the devices:
+xorg.conf file to the devices:
<quote><p>
&s.code;int xf86MatchPciInstances(const char *driverName, int vendorID,
@@ -5271,7 +5273,7 @@ be catered for the by the helpers.
<quote>Allow halved clocks</quote>
&s.code;LOOKUP_OPTIONAL_TOLERANCES&e.code;
<quote>Allow missing horizontal sync and/or vertical refresh
- ranges in the XF86Config Monitor section</quote>
+ ranges in the xorg.conf Monitor section</quote>
&s.code;LOOKUP_OPTIONAL_TOLERANCES&e.code; should only be
specified when the driver can ensure all modes it generates
@@ -5291,7 +5293,7 @@ be catered for the by the helpers.
&s.code;progClock&e.code;
<quote>Whether the clock is programmable or not</quote>
&s.code;monitor&e.code;
- <quote>Pointer to the applicable XF86Config monitor section</quote>
+ <quote>Pointer to the applicable xorg.conf monitor section</quote>
&s.code;fdFormat&e.code;
<quote>Format of the screen buffer</quote>
&s.code;videoRam&e.code;
@@ -6731,7 +6733,7 @@ ZZZProbe(DriverPtr drv, int flags)
Define the &s.code;AvailableOptions()&e.code; function. The purpose
of this is to return the available driver options back to the
- -configure option, so that an XF86Config file can be built and the
+ -configure option, so that an xorg.conf file can be built and the
user can see which options are available for them to use.
<sect2>PreInit
diff --git a/hw/xfree86/fbdevhw/fbdevhw.man.pre b/hw/xfree86/fbdevhw/fbdevhw.man.pre
index e1ebe5c51..deeced860 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.man.pre
+++ b/hw/xfree86/fbdevhw/fbdevhw.man.pre
@@ -14,7 +14,8 @@ fbdev(__drivermansuffix__) is a non-accelerated driver which runs on top of the
fbdevhw module. fbdevhw can be used by other drivers too, this
is usually activated with `Option "UseFBDev"' in the device section.
.SH "SEE ALSO"
-XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(__miscmansuffix__),
+__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__),
+xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__),
fbdev(__drivermansuffix__)
.SH AUTHORS
Authors include: Gerd Knorr, based on the XF68_FBDev Server code
diff --git a/hw/xfree86/getconfig/cfg.man.pre b/hw/xfree86/getconfig/cfg.man.pre
index 79db0b100..45301e707 100644
--- a/hw/xfree86/getconfig/cfg.man.pre
+++ b/hw/xfree86/getconfig/cfg.man.pre
@@ -1,4 +1,3 @@
-.\" $XFree86$
.TH getconfig __filemansuffix__ __vendorversion__
.SH NAME
getconfig - meta configuration files for getconfig(1)
@@ -7,10 +6,10 @@ getconfig - meta configuration files for getconfig(1)
.SH DESCRIPTION
.B getconfig
is a programatic interface that is used by the
-.B XFree86
+.B __xservername__
server to get configuration information about video hardware when
operating without an
-.B XF86Config
+.B __xconfigfile__
file.
.PP
This implementation of
@@ -29,7 +28,7 @@ the file format version number. The signature string is
.PP
.RS 4
.nf
-"XFree86 Project getconfig rules file.\ \ Version: "
+"Xorg getconfig rules file.\ \ Version: "
.fi
.RE
.PP
@@ -44,10 +43,10 @@ continuation convention ('\e' at the end of the line). The first logical
line of each rule is a perl expression. It may be any valid perl
expression whose evaluated (with 'eval') result may be used as the
argument to a perl 'if' statement. The second logical line should be
-the name of the XFree86 video driver to use when the rule is true, and
+the name of the __xservername__ video driver to use when the rule is true, and
subsequent logical lines of each rule, if present, are additional
configuration output for the video device's
-.B XF86Config
+.B __xconfigfile__
.B Device
section. The driver name and additional lines of configuration information
are written to standard output when the rule is chosen as the successful
@@ -70,12 +69,12 @@ They include:
.BR "$subsys " "PCI subsystem ID"
.BR "$subsysVendor " "PCI subsystem vendor ID"
.BR "$class " "PCI class"
-.BR "$XFree86Version " "XFree86 version, as a 'v' string"
-.BR "$XFree86VersionNumeric " "XFree86 numeric version"
-.BR "$XFree86VersionMajor " "XFree86 major version"
-.BR "$XFree86VersionMinor " "XFree86 minor version"
-.BR "$XFree86VersionPatch " "XFree86 patch version"
-.BR "$XFree86VersionSnap " "XFree86 snap version"
+.BR "$XorgVersion " "Xorg version, as a 'v' string"
+.BR "$XorgVersionNumeric " "Xorg numeric version"
+.BR "$XorgVersionMajor " "Xorg major version"
+.BR "$XorgVersionMinor " "Xorg minor version"
+.BR "$XorgVersionPatch " "Xorg patch version"
+.BR "$XorgVersionSnap " "Xorg snap version"
.BR "$weight " "current rule weight"
.fi
.RE
@@ -99,7 +98,7 @@ rule that evaluates to true.
.I .cfg
files located in the search path. The search path typically specified
by the
-.B XFree86
+.B __xservername__
server is:
.PP
.RS 4
@@ -114,11 +113,11 @@ server is:
where
.I <modulepath>
is the
-.B XFree86
+.B __xservername__
server's module search path.
.PP
.TP 30
-.I __projectroot__/lib/X11/getconfig/xfree86.cfg
+.I __projectroot__/lib/X11/getconfig/xorg.cfg
Default rules file that gets installed. This file doesn't contain any
rules by default.
.TP 30
@@ -128,11 +127,11 @@ appear in rules files.
.SH "SEE ALSO"
getconfig(1),
-XFree86(1),
-XF86Config(__filemansuffix__).
+__xservername__(__appmansuffix__),
+__xconfigfile__(__filemansuffix__).
.SH AUTHORS
-The XFree86 automatic configuration support and the
+The __xservername__ automatic configuration support and the
.B getconfig
interface was written by David H. Dawes, with the support of X-Oz
-Technologies.
+Technologies for XFree86.
diff --git a/hw/xfree86/getconfig/cfg.sample b/hw/xfree86/getconfig/cfg.sample
index 62d06ad38..8e26fd2e3 100644
--- a/hw/xfree86/getconfig/cfg.sample
+++ b/hw/xfree86/getconfig/cfg.sample
@@ -1,14 +1,13 @@
-# $DHD: xc/programs/Xserver/hw/xfree86/getconfig/cfg.sample,v 1.2 2003/09/23 05:12:07 dawes Exp $
-# $XFree86: xc/programs/Xserver/hw/xfree86/getconfig/cfg.sample,v 1.1 2003/10/08 14:58:29 dawes Exp $
+# $XdotOrg$
-# Some sample XFree86 getconfig rules file.
+# Some sample Xorg getconfig rules file.
#
# The line below is the getconfig rules file signature, and must be the
# first non-blank, non-comment line.
#
-XFree86 Project getconfig rules file. Version: 1.0
+Xorg Project getconfig rules file. Version: 1.0
#
# Set the weight for the following rules. This should be set, otherwise
@@ -38,15 +37,15 @@ $weight = 1000
# $subsys PCI subsystem ID
# $subsysVendor PCI subsystem vendor ID
# $class PCI class
-# $XFree86Version XFree86 version, as a 'v' string.
+# $XorgVersion Xorg version, as a 'v' string.
#
-# The XFree86 version information is also available as the following:
+# The Xorg version information is also available as the following:
#
-# $XFree86VersionNumeric
-# $XFree86VersionMajor
-# $XFree86VersionMinor
-# $XFree86VersionPatch
-# $XFree86VersionSnap
+# $XorgVersionNumeric
+# $XorgVersionMajor
+# $XorgVersionMinor
+# $XorgVersionPatch
+# $XorgVersionSnap
#
# Define a fake vendor ID for some sample rules.
@@ -67,10 +66,10 @@ $device == $nodevice
Option \
"yy"
-# Increase the weight of the following rules if the XFree86 version is 4.3 or
+# Increase the weight of the following rules if the Xorg version is 4.3 or
# higher.
-$weight++ if ($XFree86Version ge v4.3)
+$weight++ if ($XorgVersion ge v4.3)
$vendor == $novendor
nodriver
@@ -83,7 +82,7 @@ $vendor == $novendor
$weight = 100
-$vendor == $novendor && $XFree86Version eq v4.3.2.1
+$vendor == $novendor && $XorgVersion eq v4.3.2.1
nodriver3
$weight = 600
diff --git a/hw/xfree86/getconfig/getconfig b/hw/xfree86/getconfig/getconfig
index d2acc9bb8..a9e2b3ef2 100644
--- a/hw/xfree86/getconfig/getconfig
+++ b/hw/xfree86/getconfig/getconfig
@@ -1,6 +1,6 @@
#!/bin/sh
-# $DHD: xc/programs/Xserver/hw/xfree86/getconfig/getconfig.sh,v 1.2 2003/09/20 01:45:57 dawes Exp $
+# $XdotOrg$
#
# Copyright 2003 by David H. Dawes.
@@ -33,8 +33,6 @@
# Author: David Dawes <dawes@XFree86.Org>.
#
-# $XFree86: xc/programs/Xserver/hw/xfree86/getconfig/getconfig.sh,v 1.1 2003/10/08 14:58:29 dawes Exp $
-
# A simple wrapper to execute the real getconfig program. So long as perl
# is in $PATH, we don't need to know where it is this way.
diff --git a/hw/xfree86/getconfig/getconfig.man.pre b/hw/xfree86/getconfig/getconfig.man.pre
index 6b43047c3..8d80e9208 100644
--- a/hw/xfree86/getconfig/getconfig.man.pre
+++ b/hw/xfree86/getconfig/getconfig.man.pre
@@ -1,7 +1,6 @@
-.\" $XFree86$
.TH getconfig 1 __vendorversion__
.SH NAME
-getconfig - get configuration information for the XFree86 server
+getconfig - get configuration information for the __xservername__ server
.SH SYNOPSIS
.B getconfig
.RI [ option
@@ -9,10 +8,10 @@ getconfig - get configuration information for the XFree86 server
.SH DESCRIPTION
.B getconfig
is a programatic interface that is used by the
-.B XFree86
+.B __xservername__
server to get configuration information about video hardware when
operating without an
-.B XF86Config
+.B __xconfigfile__
file.
.PP
This implementation of
@@ -21,7 +20,7 @@ is written in perl. It processes a prioritized and ordered list of
rules supplied internally and from meta-configuration files. The rules
are in the form of perl expressions.
.B getconfig
-writes to standard output the XF86Config-style configuration data
+writes to standard output the __xconfigfile__-style configuration data
specified by the last highest priority rule that evaluates to true.
Information about the format of the meta-configuration files can be
found in the getconfig(__filemansuffix__) manual page.
@@ -44,8 +43,9 @@ Enable debugging output.
.B \-V
Print out the version information and exit.
.TP 8
-.BI \-X " XFree86-version"
-Specify the XFree86 version in numeric (integer) form.
+.BI \-X
+.BI __xservername__-version
+Specify the __xservername__ version in numeric (integer) form.
.TP 8
.BI \-b " subsys-id"
Specify the PCI subsystem ID of the video device.
@@ -68,7 +68,7 @@ Specify the PCI vendor ID of the video device.
.I .cfg
files located in the search path. The search path typically specified
by the
-.B XFree86
+.B __xservername__
server is:
.PP
.RS 4
@@ -83,16 +83,16 @@ server is:
where
.I <modulepath>
is the
-.B XFree86
+.B __xservername__
server's module search path.
.SH "SEE ALSO"
getconfig(__filemansuffix__),
-XFree86(1),
-XF86Config(__filemansuffix__).
+__xservername__(__appmansuffix__),
+__xconfigfile__(__filemansuffix__).
.SH AUTHORS
-The XFree86 automatic configuration support and the
+The __xservername__ automatic configuration support and the
.B getconfig
interface was written by David H. Dawes, with the support of X-Oz
-Technologies.
+Technologies for XFree86.
diff --git a/hw/xfree86/getconfig/getconfig.pl b/hw/xfree86/getconfig/getconfig.pl
index fcfd7d057..85caf81f5 100644
--- a/hw/xfree86/getconfig/getconfig.pl
+++ b/hw/xfree86/getconfig/getconfig.pl
@@ -33,7 +33,6 @@
# Author: David Dawes <dawes@XFree86.Org>.
#
-# $XFree86: xc/programs/Xserver/hw/xfree86/getconfig/getconfig.pl,v 1.1 2003/10/08 14:58:29 dawes Exp $
#
# This script takes PCI id information, compares it against an ordered list
@@ -52,7 +51,7 @@ $debug = 0;
$myname = $0;
$myname =~ s/.*\///;
-$signature = "XFree86 Project getconfig rules file. Version: ";
+$signature = "Xorg Foundation getconfig rules file. Version: ";
while (@ARGV[0] =~ /^-[A-Za-z]$/) {
$f = shift;
@@ -70,9 +69,9 @@ while (@ARGV[0] =~ /^-[A-Za-z]$/) {
exit 0;
}
if ($f eq "-X") {
- $XFree86VersionNumeric = shift;
- if (!defined($XFree86VersionNumeric)) {
- print STDERR "$myname: -X requires the XFree86 version.\n";
+ $XorgVersionNumeric = shift;
+ if (!defined($XorgVersionNumeric)) {
+ print STDERR "$myname: -X requires the Xorg version.\n";
exit 1;
}
}
@@ -129,21 +128,21 @@ while (@ARGV[0] =~ /^-[A-Za-z]$/) {
printf STDERR "$myname: Version %vd.\n", $GetconfigVersion;
-if (defined($XFree86VersionNumeric)) {
- $XFree86VersionMajor = $XFree86VersionNumeric / 10000000;
- $XFree86VersionMinor = ($XFree86VersionNumeric % 10000000) / 100000;
- $XFree86VersionPatch = ($XFree86VersionNumeric % 100000) / 1000;
- $XFree86VersionSnapshot = $XFree86VersionNumeric % 1000;
- $XFree86Version = chr($XFree86VersionMajor) . chr($XFree86VersionMinor) .
- chr($XFree86VersionPatch) . chr($XFree86VersionSnapshot);
+if (defined($XorgVersionNumeric)) {
+ $XorgVersionMajor = $XorgVersionNumeric / 10000000;
+ $XorgVersionMinor = ($XorgVersionNumeric % 10000000) / 100000;
+ $XorgVersionPatch = ($XorgVersionNumeric % 100000) / 1000;
+ $XorgVersionSnapshot = $XorgVersionNumeric % 1000;
+ $XorgVersion = chr($XorgVersionMajor) . chr($XorgVersionMinor) .
+ chr($XorgVersionPatch) . chr($XorgVersionSnapshot);
}
if ($debug) {
- printf STDERR "$myname: XFree86 Version: %d, %d.%d.%d.%d, %vd.\n",
- $XFree86VersionNumeric, $XFree86VersionMajor, $XFree86VersionMinor,
- $XFree86VersionPatch, $XFree86VersionSnapshot, $XFree86Version;
+ printf STDERR "$myname: Xorg Version: %d, %d.%d.%d.%d, %vd.\n",
+ $XorgVersionNumeric, $XorgVersionMajor, $XorgVersionMinor,
+ $XorgVersionPatch, $XorgVersionSnapshot, $XorgVersion;
} else {
- printf STDERR "$myname: XFree86 Version: %vd.\n", $XFree86Version;
+ printf STDERR "$myname: Xorg Version: %vd.\n", $XorgVersion;
}
diff --git a/hw/xfree86/getconfig/xorg.cfg b/hw/xfree86/getconfig/xorg.cfg
new file mode 100644
index 000000000..848d5eb90
--- /dev/null
+++ b/hw/xfree86/getconfig/xorg.cfg
@@ -0,0 +1,50 @@
+# $XdotOrg$
+
+# Base Xorg getconfig rules file.
+
+#
+# The line below is the getconfig rules file signature, and must be the
+# first non-blank, non-comment line.
+#
+
+Xorg Project getconfig rules file. Version: 1.0
+
+#
+# Set the weight for the following rules. This should be set, otherwise
+# the previously set weight will get used, and you have no idea of knowing
+# what that might be.
+#
+
+$weight = 1000
+
+#
+# Rules. Rules consist of a condition (in perl code) followed by
+# a driver name and optionally some additional strings. The start of a
+# rule is indicated by a line with no leading white space. subsequent
+# lines making up a rule must be indented. Logical lines may be split
+# over multiple physical lines by using the usual continuation '\'.
+#
+# Rules that are not followed by a driver name may be used to do other
+# things, like setting the weight as above.
+#
+
+#
+# Pre-defined variables include:
+#
+# $vendor PCI vendor ID
+# $device PCI device ID
+# $revision PCI revision ID
+# $subsys PCI subsystem ID
+# $subsysVendor PCI subsystem vendor ID
+# $class PCI class
+# $XorgVersion Xorg version, as a 'v' string.
+#
+# The Xorg version information is also available as the following:
+#
+# $XorgVersionNumeric
+# $XorgVersionMajor
+# $XorgVersionMinor
+# $XorgVersionPatch
+# $XorgVersionSnap
+#
+
diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c
index 4dc2e0dd1..d97954d2e 100644
--- a/hw/xfree86/parser/scan.c
+++ b/hw/xfree86/parser/scan.c
@@ -440,11 +440,11 @@ xf86pathIsSafe(const char *path)
* %A cmdline argument as an absolute path (must be absolute to match)
* %R cmdline argument as a relative path
* %S cmdline argument as a "safe" path (relative, and no ".." elements)
- * %X default config file name ("XF86Config")
+ * %X default config file name ("xorg.conf")
* %H hostname
- * %E config file environment ($XF86CONFIG) as an absolute path
- * %F config file environment ($XF86CONFIG) as a relative path
- * %G config file environment ($XF86CONFIG) as a safe path
+ * %E config file environment ($XORGCONFIG) as an absolute path
+ * %F config file environment ($XORGCONFIG) as a relative path
+ * %G config file environment ($XORGCONFIG) as a safe path
* %D $HOME
* %P projroot
* %M major version number
@@ -453,14 +453,15 @@ xf86pathIsSafe(const char *path)
*/
#ifndef XCONFIGFILE
-#define XCONFIGFILE "XF86Config"
+#define XCONFIGFILE "xorg.conf"
#endif
#ifndef PROJECTROOT
#define PROJECTROOT "/usr/X11R6"
#endif
#ifndef XCONFENV
-#define XCONFENV "XF86CONFIG"
+#define XCONFENV "XORGCONFIG"
#endif
+#define XFREE86CFGFILE "XF86Config"
#ifndef XF86_VERSION_MAJOR
#ifdef XVERSION
#if XVERSION > 40000000
@@ -495,7 +496,7 @@ xf86pathIsSafe(const char *path)
static char *
DoSubstitution(const char *template, const char *cmdline, const char *projroot,
- int *cmdlineUsed, int *envUsed)
+ int *cmdlineUsed, int *envUsed, char *XConfigFile)
{
char *result;
int i, l;
@@ -547,7 +548,7 @@ DoSubstitution(const char *template, const char *cmdline, const char *projroot,
BAIL_OUT;
break;
case 'X':
- APPEND_STR(XCONFIGFILE);
+ APPEND_STR(XConfigFile);
break;
case 'H':
if (!hostname) {
@@ -701,7 +702,8 @@ xf86openConfigFile(const char *path, const char *cmdline, const char *projroot)
/* First, search for a config file. */
while (template && !configFile) {
if ((configPath = DoSubstitution(template, cmdline, projroot,
- &cmdlineUsed, NULL))) {
+ &cmdlineUsed, NULL,
+ XCONFIGFILE))) {
if ((configFile = fopen(configPath, "r")) != 0) {
if (cmdline && !cmdlineUsed) {
fclose(configFile);
@@ -715,6 +717,31 @@ xf86openConfigFile(const char *path, const char *cmdline, const char *projroot)
}
template = strtok(NULL, ",");
}
+
+ /* Then search for fallback */
+ if (!configFile) {
+ strcpy(pathcopy, path);
+ template = strtok(pathcopy, ",");
+
+ while (template && !configFile) {
+ if ((configPath = DoSubstitution(template, cmdline, projroot,
+ &cmdlineUsed, NULL,
+ XFREE86CFGFILE))) {
+ if ((configFile = fopen(configPath, "r")) != 0) {
+ if (cmdline && !cmdlineUsed) {
+ fclose(configFile);
+ configFile = NULL;
+ }
+ }
+ }
+ if (configPath && !configFile) {
+ xf86conffree(configPath);
+ configPath = NULL;
+ }
+ template = strtok(NULL, ",");
+ }
+ }
+
xf86conffree(pathcopy);
if (!configFile) {
diff --git a/hw/xfree86/utils/gtf/gtf.c b/hw/xfree86/utils/gtf/gtf.c
index c5b3c613a..3535300fc 100644
--- a/hw/xfree86/utils/gtf/gtf.c
+++ b/hw/xfree86/utils/gtf/gtf.c
@@ -1,3 +1,4 @@
+/* $XdotOrg: xc/programs/Xserver/hw/xfree86/etc/gtf.c,v 1.1.10.1.4.1 2004/03/19 17:09:00 eich Exp $ */
/* gtf.c Generate mode timings using the GTF Timing Standard
*
* gcc gtf.c -o gtf -lm -Wall
@@ -63,7 +64,7 @@
*
* This program takes a desired resolution and vertical refresh rate,
* and computes mode timings according to the GTF Timing Standard.
- * These mode timings can then be formatted as an XFree86 modeline
+ * These mode timings can then be formatted as an XServer modeline
* or a mode description for use by fbset(8).
*
*
@@ -74,7 +75,7 @@
* surrounding the addressable video); on most non-overscan type
* systems, the margin period is zero. I've implemented the margin
* computations but not enabled it because 1) I don't really have
- * any experience with this, and 2) neither XFree86 modelines nor
+ * any experience with this, and 2) neither XServer modelines nor
* fbset fb.modes provide an obvious way for margin timings to be
* included in their mode descriptions (needs more investigation).
*
@@ -102,7 +103,7 @@
* o Error checking.
*
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/gtf.c,v 1.2 2002/11/15 17:01:53 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/gtf.c,v 1.2 2002/11/15 17:01:53tsi Exp $ */
#include <stdio.h>
@@ -145,7 +146,7 @@ typedef struct __mode
typedef struct __options
{
int x, y;
- int xf86mode, fbmode;
+ int xorgmode, fbmode;
float v_freq;
} options;
@@ -180,7 +181,7 @@ void print_value(int n, char *name, float val)
-/* print_xf86_mode() - print the XFree86 modeline, given mode timings. */
+/* print_xf86_mode() - print the XServer modeline, given mode timings. */
void print_xf86_mode (mode *m)
{
@@ -282,7 +283,7 @@ void print_fb_mode (mode *m)
* feel like testing it right now.
*
* XXX margin computations are implemented but not tested (nor used by
- * XFree86 of fbset mode descriptions, from what I can tell).
+ * XServer of fbset mode descriptions, from what I can tell).
*/
mode *vert_refresh (int h_pixels, int v_lines, float freq,
@@ -674,8 +675,9 @@ options *parse_command_line (int argc, char *argv[])
(strcmp (argv[n], "--fbmode") == 0)) {
o->fbmode = 1;
} else if ((strcmp (argv[n], "-x") == 0) ||
+ (strcmp (argv[n], "--xorgmode") == 0) ||
(strcmp (argv[n], "--xf86mode") == 0)) {
- o->xf86mode = 1;
+ o->xorgmode = 1;
} else {
goto bad_option;
}
@@ -683,10 +685,10 @@ options *parse_command_line (int argc, char *argv[])
n++;
}
- /* if neither xf86mode nor fbmode were requested, default to
- xf86mode */
+ /* if neither xorgmode nor fbmode were requested, default to
+ xorgmode */
- if (!o->fbmode && !o->xf86mode) o->xf86mode = 1;
+ if (!o->fbmode && !o->xorgmode) o->xorgmode = 1;
return (o);
@@ -694,7 +696,7 @@ options *parse_command_line (int argc, char *argv[])
fprintf (stderr, "\n");
fprintf (stderr, "usage: %s x y refresh [-v|--verbose] "
- "[-f|--fbmode] [-x|-xf86mode]\n", argv[0]);
+ "[-f|--fbmode] [-x|--xorgmode]\n", argv[0]);
fprintf (stderr, "\n");
@@ -708,7 +710,7 @@ options *parse_command_line (int argc, char *argv[])
"(traces each step of the computation)\n");
fprintf (stderr, " -f|--fbmode : output an fbset(8)-style mode "
"description\n");
- fprintf (stderr, " -x|-xf86mode : output an XFree86-style mode "
+ fprintf (stderr, " -x|--xorgmode : output an "__XSERVERNAME__"-style mode "
"description (this is the default\n"
" if no mode description is requested)\n");
@@ -732,7 +734,7 @@ int main (int argc, char *argv[])
m = vert_refresh (o->x, o->y, o->v_freq, 0, 0);
if (!m) exit (1);
- if (o->xf86mode)
+ if (o->xorgmode)
print_xf86_mode(m);
if (o->fbmode)
diff --git a/hw/xfree86/utils/gtf/gtf.man.pre b/hw/xfree86/utils/gtf/gtf.man.pre
index ea76684f3..4dc228d2c 100644
--- a/hw/xfree86/utils/gtf/gtf.man.pre
+++ b/hw/xfree86/utils/gtf/gtf.man.pre
@@ -1,4 +1,5 @@
-.\" $XFree86$
+.\" $XFree86$
+.\" $XdotOrg: xc/programs/Xserver/hw/xfree86/etc/gtf.man,v 1.1.10.1.4.2 2004/03/27 16:56:43 keithp Exp $
.TH GTF 1 __vendorversion__
.SH NAME
gtf - calculate VESA GTF mode lines
@@ -9,14 +10,14 @@ gtf - calculate VESA GTF mode lines
.I refresh
.RB [ \-v | \-\-verbose ]
.RB [ \-f | \-\-fbmode ]
-.RB [ \-x | \-\-xf86mode ]
+.RB [ \-x | \-\-xorgmode ]
.SH DESCRIPTION
.I Gtf
is a utility for calculating VESA GTF modes. Given the desired
horizontal and vertical resolutions and refresh rate (in Hz), the parameters
for a matching VESA GTF mode are printed out. Two output formats are
-supported: mode lines suitable for the XFree86
-.B XF86Config(__filemansuffix__)
+supported: mode lines suitable for the __xservername__
+.B __xconfigfile__(__filemansuffix__)
file, and mode parameters suitable for the Linux
.B fbset(8)
utility.
@@ -27,15 +28,15 @@ utility.
Enable verbose printouts This shows a trace for each step of the
computation.
.TP 8
-.BR \-x | \-\-xf86mode
-Print the mode parameters as XFree86-style mode lines. This is the
+.BR \-x | \-\-xorgmode
+Print the mode parameters as __xservername__-style mode lines. This is the
default format.
.TP 8
.BR \-f | \-\-fbset
Print the mode parameters in a format suitable for
.BR fbset(8) .
.SH "SEE ALSO"
-XF86Config(__filemansuffix__)
+__xconfigfile__(__filemansuffix__)
.SH AUTHOR
Andy Ritger.
.PP
diff --git a/hw/xfree86/utils/xorgcfg/TODO b/hw/xfree86/utils/xorgcfg/TODO
index b830f7529..d8d1cd5ee 100644
--- a/hw/xfree86/utils/xorgcfg/TODO
+++ b/hw/xfree86/utils/xorgcfg/TODO
@@ -5,7 +5,7 @@ o Have code to fetch the SymTabRec chipset list from a video driver.
Cards file "uptodate" state can also be verified.
Probably it is better to forgot about the Cards file, and
either parse the output of scanpci, or link libscanpci.a
- (and whatever else be required) in xf86cfg.
+ (and whatever else be required) in xorgcfg.
o Check if a module is "certified", there was some talk about a
certification process in the past.
@@ -15,7 +15,7 @@ o Rewrite mouse driver to use the same code as video drivers, so that
This would also require rewriting all existing input device modules.
(Probably most of this can be made with cpp macros).
-o Create a protocol to allow 3rd part xf86cfg modules.
+o Create a protocol to allow 3rd part xorgcfg modules.
o Write an interface for testing extensions/accel, maybe a frontend to
xdpyinfo, x11perf, glxinfo, etc.
@@ -26,8 +26,8 @@ o Write a "wizard" mode, as several users find the graphical interface
o Write code to use a Monitors database, either update the old Monitors
file or use RedHat MonitorsDB.
Chris Morgan is writting code to use MonitorsDB.
- If xf86cfg could be changed to ddcprobe (in all supported platforms),
+ If xorgcfg could be changed to ddcprobe (in all supported platforms),
it would be even be a better solution than using a database.
o Add interface to allow changing comments without the need of editing
- XF86Config with a text editor.
+ config file with a text editor.
diff --git a/hw/xfree86/utils/xorgcfg/XOrgCfg.pre b/hw/xfree86/utils/xorgcfg/XOrgCfg.pre
new file mode 100644
index 000000000..580998cb3
--- /dev/null
+++ b/hw/xfree86/utils/xorgcfg/XOrgCfg.pre
@@ -0,0 +1,1851 @@
+!!
+!! Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
+!!
+!! 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
+!! CONECTIVA LINUX 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 Conectiva Linux shall
+!! not be used in advertising or otherwise to promote the sale, use or other
+!! dealings in this Software without prior written authorization from
+!! Conectiva Linux.
+!!
+!! Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
+!!
+!! $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/XF86Cfg.ad,v 1.13 2001/05/15 18:22:23 paulo Exp $
+!!
+
+*Form.background: gray85
+*Label.background: gray85
+!! keyboard
+*Core.background: gray85
+*Label.foreground: gray20
+*Command.background: gray80
+*Command.foreground: gray20
+*Command.borderWidth: 0
+*Command.displayList:\
+foreground gray60;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray90;\
+lines -1,0,0,0,0,-1
+
+*Text.?.foreground: gray20
+*Text.borderWidth: 0
+*Text.background: gray96
+*Text.?.cursorColor: rgb:d/5/5
+*Text.displayList:\
+foreground white;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray40;\
+lines -1,0,0,0,0,-1
+
+*baseTranslations: #override \
+<Key>Escape: vidmode-restore()
+
+*List.background: gray96
+*List.foreground: gray20
+*Viewport.borderColor: gray40
+*List.borderColor: gray40
+
+*MenuButton.background: gray80
+*MenuButton.foreground: gray20
+*MenuButton.borderWidth: 0
+*MenuButton.displayList:\
+line-style solid;\
+foreground gray40;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray90;\
+lines -1,0,0,0,0,-1;\
+line-style onoffdash;\
+foreground gray80;\
+draw-rect 1,1,-2,-2
+
+*SimpleMenu.background: gray80
+*SimpleMenu.?.foreground: gray20
+*SimpleMenu.borderWidth: 0
+*SimpleMenu.displayList:\
+foreground gray40;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray90;\
+lines -1,0,0,0,0,-1
+
+*Dialog.displayList:\
+foreground gray40;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray90;\
+lines -1,0,0,0,0,-1
+
+*Toggle.background: gray80
+*Toggle.foreground: gray20
+*Toggle.borderWidth: 0
+*Toggle.displayList:\
+foreground gray90;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray40;\
+lines -1,0,0,0,0,-1
+
+*mouse.bitmap: mouse.xbm
+*keyboard.bitmap: keyboard.xbm
+*card.bitmap: card.xbm
+*monitor.bitmap: monitor.xbm
+
+*Label.borderWidth: 0
+*Viewport.forceBars: True
+*Viewport.allowVert: True
+*Viewport.useRight: True
+
+.xf86cfg.geometry: 320x400
+.xf86cfg.minWidth: 320
+.xf86cfg.minHeight: 400
+.xf86cfg.maxWidth: 320
+.xf86cfg.maxHeight: 400
+
+.xf86cfg.config.geometry: 320x369
+.xf86cfg.config.minWidth: 320
+.xf86cfg.config.maxWidth: 320
+.xf86cfg.config.minHeight: 369
+.xf86cfg.config.maxHeight: 369
+
+*work.width: 320
+*work.height: 240
+
+*error.label.label:\
+Not all required fields\n\
+were filled, or the specified\n\
+identifier is duplicated.
+*error.label.vertDistance: 30
+*error.label.borderWidth: 0
+*error.label.leftBitmap: Excl
+*error.command.fromVert: label
+*error.command.label: Ok
+*error.command.vertDistance: 20
+
+*Scrollbar.translations:\
+<BtnDown>: StartScroll(Continuous) MoveThumb() NotifyThumb()\n\
+<BtnMotion>: MoveThumb() NotifyThumb()\n\
+<BtnUp>: NotifyScroll(Proportional) EndScroll()
+
+*Scrollbar.background: gray80
+*Scrollbar.foreground: rgb:a/5/5
+*Scrollbar.borderWidth: 0
+*Scrollbar.thumb: vlines2
+*Scrollbar.displayList:\
+foreground gray90;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray40;\
+lines -1,0,0,0,0,-1
+
+*Text.Translations: #override \
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*top.identifier.Translations: #override \
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Key>Return: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*List.showCurrent: True
+*Tip.timeout: 100
+*Tip.background: rgb:f/f/8
+*Tip.foreground: gray20
+*Tip.borderWidth: 0
+*Tip.displayList:\
+foreground rgb:8/8/4;\
+lines 1,-1,-1,-1,-1,1;\
+foreground rgb:f/f/c;\
+lines -1,0,0,0,0,-1
+
+*Toggle.internalHeight: 2
+*Toggle.internalWidth: 2
+*mouse.label: Mouse
+*keyboard.label: Keyboard
+*card.label: Card
+*monitor.label: Monitor
+
+*commands.borderWidth: 0
+*commands.defaultDistance: 2
+*commands.?.bottom: chainTop
+*commands.height: 50
+
+*commands.keyboard.fromHoriz: mouse
+*card.fromHoriz: keyboard
+*monitor.fromHoriz: card
+
+*commands.mouse*new.label: Add new mouse
+*commands.keyboard*new.label: Add new keyboard
+*commands.card*new.label: Add new video card
+*commands.monitor*new.label: Add new monitor
+*commands.mouse*configure.label: Configure mouse(s)
+*commands.keyboard*configure.label: Configure keyboard(s)
+*commands.card*configure.label: Configure video card(s)
+*commands.monitor*configure.label: Configure monitor(s)
+*commands.mouse*SimpleMenu*newMouse.label: New mouse
+*commands.keyboard*SimpleMenu*newKeyboard.label:New keyboard
+*commands.card*SimpleMenu*newcard.label: New card
+*commands.monitor*SimpleMenu*newMonitor.label: New monitor
+
+*commands.MenuButton.translations: \
+<Enter>: highlight()\n\
+<Leave>: reset()\n\
+Any<BtnDown>: highlight() set() PopupMenu()
+
+*hpane.showGrip: False
+*hpane.expert.label: Expert Mode
+*topM.min: 200
+*topM.max: 200
+*topM.justify: left
+*topM.label: Configure Layout
+*topM*layout.label: Configure Layout
+*topM*screen.label: Configure Screen
+*topM*modeline.label: Configure Modeline
+*topM*accessx.label: Configure AccessX
+*topM.showGrip: False
+*work.showGrip: False
+
+*MenuButton.leftBitmap: menu10
+*SmeBSB.HorizontalMargins: 18
+
+*back.label: << Back
+*next.label: Next >>
+*ok.label: Ok
+*cancel.label: Cancel
+*yes.label: Yes
+*no.label: No
+
+*help.label: Help
+*quit.label: Quit
+*next.fromHoriz: back
+*config*ok.fromHoriz: next
+*bottom*cancel.fromHoriz: ok
+*top.displayList:\
+foreground gray60;\
+lines 1,-1,-1,-1,-1,1;\
+foreground white;\
+lines -1,0,0,0,0,-1
+*bottom.displayList:\
+foreground gray60;\
+lines 1,-1,-1,-1,-1,1;\
+foreground white;\
+lines -1,0,0,0,0,-1
+*work.displayList:\
+foreground gray60;\
+lines 1,-1,-1,-1,-1,1;\
+foreground white;\
+lines -1,0,0,0,0,-1
+*options.pane.Form.displayList:\
+foreground gray60;\
+lines 1,-1,-1,-1,-1,1;\
+foreground white;\
+lines -1,0,0,0,0,-1
+
+*top.label.label: Identifier:
+*top.label.borderWidth: 0
+*top.identifier.fromHoriz: label
+*top.label.internalHeight: 3
+*top.label.justify: left
+*top.label.left: chainLeft
+*top.label.right: chainLeft
+*top.identifier.left: chainLeft
+*top.identifier.right: chainRight
+
+*bottom.layout.translations: #override \
+<Key>Return: rename-layout()
+*bottom.layout.label: New server layout
+*bottom.layout.tip: Type a text and press Return to rename this layout
+*bottom.Command.height: 19
+*bottom.Text.height: 19
+*bottom.MenuButton.height: 19
+*bottom*new.label: New server layout
+*layout.fromHoriz: select
+*help.fromHoriz: layout
+*bottom.layout.justify: left
+*bottom.select.label: Layout
+*bottom.select.left: chainLeft
+*bottom.select.right: chainLeft
+*bottom.layout.left: chainLeft
+*quit.fromHoriz: help
+*bottom.?.left: chainRight
+*bottom.?.right: chainRight
+*bottom.?.top: chainBottom
+*bottom.?.bottom: chainBottom
+
+*pane.bottom.min: 30
+*pane.bottom.max: 30
+*pane.bottom.showGrip: False
+*pane.bottom.defaultDistance: 5
+
+!! Wellcome message
+*work.wellcome.borderWidth: 0
+*work.wellcome.label: Welcome to __VENDORNAME__ 4.0 setup program
+*work.?.borderWidth: 0
+!*work.?.width: 310
+*work.?.height: 290
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! mouseDP widget
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+*mouseDP*Label.internalHeight: 0
+*mouseDP*Label.borderWidth: 0
+*mouseDP.labelD.vertDistance: 0
+*mouseDP.labelD.label: Select mouse device
+*mouseDP.device.fromVert: labelD
+*mouseDP.viewportD.fromVert: device
+*mouseDP.device.width: 302
+*mouseDP.viewportD.vertDistance: 2
+*mouseDP.viewportD.listD.longest: 135
+*mouseDP.viewportD.width: 302
+*mouseDP.viewportD.height: 87
+*mouseDP.labelP.label: Select mouse protocol
+*mouseDP.labelP.vertDistance: 10
+*mouseDP.labelP.fromVert: viewportD
+*mouseDP.viewportP.fromVert: labelP
+*mouseDP.viewportP.forceBars: True
+*mouseDP.viewportP.allowVert: True
+*mouseDP.viewportP.useRight: True
+*mouseDP.viewportP.listP.longest: 135
+*mouseDP.viewportP.width: 302
+*mouseDP.viewportP.height: 110
+*mouseDP.viewportP.vertDistance: 6
+*mouseDP*List.verticalList: True
+*mouseDP.emulate3.fromVert: viewportP
+*mouseDP.emulate3.width: 180
+*mouseDP.apply.label: Apply changes
+*mouseDP.apply.fromVert: viewportP
+*mouseDP.apply.fromHoriz: emulate3
+*mouseDP.apply.width: 116
+*mouseDP.emulate3.vertDistance: 10
+*mouseDP.apply.vertDistance: 10
+*mouseDP.emulate3.label: Emulate 3 buttons
+*mouseDP.emulate3.tip: Select if your mouse has only two buttons
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! keyboardML widget
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+*keyboardML.Label.vertDistance: 8
+*keyboardML.MenuButton.vertDistance: 8
+*keyboardML.keyboard.vertDistance: 10
+*keyboardML.Label.borderWidth: 0
+*keyboardML.Label.width: 115
+*keyboardML.MenuButton.width: 185
+*keyboardML.MenuButton.justify: left
+*keyboardML.Label.internalWidth: 0
+*keyboardML.Label.justify: right
+*keyboardML.labelR.label: Xkb rules:
+*keyboardML.rules.left: chainRight
+*keyboardML.rules.right: chainRight
+*keyboardML.rules.fromHoriz: labelR
+*keyboardML.model.fromVert: rules
+*keyboardML.labelM.fromVert: rules
+*keyboardML.model.left: chainRight
+*keyboardML.model.right: chainRight
+*keyboardML.model.fromHoriz: labelM
+*keyboardML.labelM.label: Keyboard model:
+*keyboardML.layout.left: chainRight
+*keyboardML.layout.right: chainRight
+*keyboardML.layout.fromVert: model
+*keyboardML.labelL.fromVert: model
+*keyboardML.layout.fromHoriz: labelL
+*keyboardML.labelL.label: Keyboard layout:
+*keyboardML.variant.fromVert: labelL
+*keyboardML.variant.fromHoriz: labelV
+*keyboardML.labelV.fromVert: labelL
+*keyboardML.labelV.label: Xkb variant:
+*keyboardML.options.fromVert: labelV
+*keyboardML.options.fromHoriz: labelO
+*keyboardML.labelO.fromVert: labelV
+*keyboardML.labelO.label: Xkb options:
+*keyboardML.keyboard.fromVert: labelO
+*keyboardML.keyboard.borderWidth: 0
+*keyboardML.keyboard.width: 305
+*keyboardML.keyboard.height: 121
+*keyboardML.apply.vertDistance: 16
+*keyboardML.apply.fromVert: keyboard
+*keyboardML.apply.label: Apply changes
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! cardModel widget
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+*cardModel.label.internalHeight: 0
+*cardModel.keyboard.borderWidth: 0
+*cardModel.label.label: Card model filter
+*cardModel.label.internalHeight: 2
+*cardModel.label.borderWidth: 0
+*cardModel.viewport.vertDistance: 2
+*cardModel.viewport.fromVert: filter
+*cardModel.filter.fromHoriz: label
+*cardModel.filter.width: 171
+*cardModel.viewport.width: 302
+*cardModel.viewport.height: 212
+*cardModel.driver.justify: left
+*cardModel.driverL.label: Driver
+*cardModel.driverL.fromVert: viewport
+*cardModel.driverL.width: 50
+*cardModel.driverL.justify: right
+*cardModel.driver.fromVert: viewport
+*cardModel.driver.fromHoriz: driverL
+*cardModel.driver.width: 250
+*cardModel.driver.left: chainRight
+*cardModel.driver.right: chainRight
+*cardModel.busidL.label: BusID
+*cardModel.busidL.fromVert: driver
+*cardModel.busidL.width: 50
+*cardModel.busidL.justify: right
+*cardModel.busid.fromVert: driver
+*cardModel.busid.fromHoriz: busidL
+*cardModel.busid.width: 250
+*cardModel.busid.left: chainRight
+*cardModel.busid.right: chainRight
+*cardModel.viewport.forceBars: True
+*cardModel.viewport.allowVert: True
+*cardModel.viewport.useRight: True
+*cardModel.viewport.list.longest: 277
+*cardModel.filter.tip: Type name or vendor of your card and press enter
+*cardModel.filter.translations: #override \
+<Key>Return: filter-card()
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! main widget
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+*work.cpu.backgroundPixmap: computer.xpm
+*work.mouse.backgroundPixmap: mouse.xpm
+*work.keyboard.backgroundPixmap: keyboard.xpm
+*work.card.backgroundPixmap: card.xpm
+*work.monitor.backgroundPixmap: monitor.xpm
+
+*work.cpu.x: 130
+*work.cpu.y: 160
+*work.cpu.width: 30
+*work.cpu.height: 50
+*work.mouse.width: 26
+*work.mouse.height: 35
+*work.keyboard.width: 60
+*work.keyboard.height: 28
+*work.card.width: 41
+*work.card.height: 40
+*work.monitor.width: 47
+*work.monitor.height: 40
+
+.xf86cfg.pane.work.Simple.borderWidth: 1
+.xf86cfg.pane.work.Simple.translations:\
+Any<Btn1Down>: select-device()\n\
+Any<Btn1Motion>: move-device()\n\
+Any<Btn1Up>: unselect-device()\n\
+Any<Btn3Down>: device-popup()\n\
+Any<Btn3Up>: device-popdown()
+
+.xf86cfg.pane.work.screen.translations:\
+Any<Btn1Down>: select-device()\n\
+Any<Btn1Motion>: move-device()\n\
+Any<Btn1Up>: unselect-device()\n\
+Any<Btn3Down>: device-popup()\n\
+Any<Btn3Up>: device-popdown()
+
+XF86Cfg.translations: #override \
+<Message>WM_PROTOCOLS: quit()
+.xf86cfg.config.translations: #override \
+<Message>WM_PROTOCOLS: config-cancel()
+.xf86cfg.options.translations: #override \
+<Message>WM_PROTOCOLS: options-cancel()
+.xf86cfg.quit.translations: #override \
+<Message>WM_PROTOCOLS: quit-cancel()
+.xf86cfg.error.translations: #override \
+<Message>WM_PROTOCOLS: error-cancel()
+.xf86cfg.force.translations: #override \
+<Message>WM_PROTOCOLS: addmode-cancel()
+.xf86cfg.addMode.translations: #override \
+<Message>WM_PROTOCOLS: addmode-cancel()
+.xf86cfg.accessx.translations: #override \
+<Message>WM_PROTOCOLS: accessx-close()
+.xf86cfg.test.translations: #override \
+<Message>WM_PROTOCOLS: testmode-cancel()
+.xf86cfg.Expert.translations: #override \
+<Message>WM_PROTOCOLS: expert-close()
+.xf86cfg.options.moduleOptions.translations: #override \
+<Message>WM_PROTOCOLS: module-options-close()
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! Options
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+.xf86cfg.options.geometry: 400x176
+.xf86cfg.options.minWidth: 400
+.xf86cfg.options.maxWidth: 400
+.xf86cfg.options.minHeight: 176
+.xf86cfg.options.maxHeight: 176
+
+*options*commands.remove.fromHoriz: add
+*options*commands.update.fromHoriz: remove
+*options*commands.help.fromHoriz: update
+*options*commands.min: 30
+*options*commands.max: 30
+*options*commands.showGrip: False
+*options*commands.defaultDistance: 4
+*options*commands.?.width: 100
+*options*commands.?.height: 20
+
+*options*name.fromHoriz: label1
+*options*label2.fromHoriz: name
+*options*value.fromHoriz: label2
+*options*label3.fromHoriz: value
+*options*viewport.fromVert: name
+*options*Label.borderWidth: 0
+*options.pane.form.Label.internalWidth: 0
+*options.pane.form.Label.height: 21
+*options.pane.form.Text.height: 19
+*options.pane.form.Label.top: chainTop
+*options.pane.form.Text.top: chainTop
+*options.pane.form.Label.bottom: chainTop
+*options.pane.form.Text.bottom: chainTop
+*options.pane.form.Label.horizDistance: 0
+*options.pane.form.Text.horizDistance: 0
+*options.pane.form.Label.vertDistance: 8
+*options.pane.form.Text.vertDistance: 8
+*options.pane.form.Text.width: 147
+*options*viewport.width: 390
+*options*viewport.height: 50
+
+*options*viewport.horizDistance: 7
+*options*label1.horizDistance: 5
+*options*viewport.left: chainLeft
+*options*viewport.right: chainRight
+*options*list.longest: 376
+
+*options*driverOpts.label: Options for module\
+*options*driverOpts.justify: left
+*options*driverOpts.width: 278
+*options*popdown.label: Popdown dialog
+*options*driverOpts.tip: This menu shows:\n\
+ o option name\n\
+ o option type
+
+.xf86cfg*options.moduleOptions.geometry: 360x245
+.xf86cfg*options.moduleOptions.minWidth: 360
+.xf86cfg*options.moduleOptions.maxWidth: 360
+.xf86cfg*options.moduleOptions.minHeight: 245
+.xf86cfg*options.moduleOptions.maxHeight: 245
+*options.moduleOptions*descriptions*labelType.label: Select option
+*options.moduleOptions*descriptions*labelType.width: 348
+*options.moduleOptions*descriptions*module.fromVert: labelType
+*options.moduleOptions*descriptions*module.label: Module
+*options.moduleOptions*descriptions*Label.horizDistance: 8
+*options.moduleOptions*descriptions*option.fromVert: labelType
+*options.moduleOptions*descriptions*option.label: Option
+*options.moduleOptions*descriptions*option.fromHoriz: viewM
+*options.moduleOptions*descriptions*viewM.fromVert: module
+*options.moduleOptions*descriptions*viewM.width: 120
+*options.moduleOptions*descriptions*viewM.height: 94
+*options.moduleOptions*descriptions*modL.longest: 100
+*options.moduleOptions*descriptions*viewO.fromHoriz: viewM
+*options.moduleOptions*descriptions*viewO.fromVert: option
+*options.moduleOptions*descriptions*viewO.width: 220
+*options.moduleOptions*descriptions*viewO.height: 94
+*options.moduleOptions*descriptions*optL.longest: 220
+*options.moduleOptions*descriptions*desc.horizDistance: 4
+*options.moduleOptions*descriptions*desc.fromVert: viewM
+*options.moduleOptions*descriptions*desc.width: 348
+*options.moduleOptions*descriptions*desc.height: 62
+*options.moduleOptions*descriptions*desc.wrap: word
+*options.moduleOptions*descriptions*desc.scrollVertical: Always
+*options.moduleOptions*descriptions*desc.Scrollbar.foreground: rgb:a/5/5
+*options.moduleOptions*descriptions*desc.Scrollbar.borderWidth: 1
+*options.moduleOptions*descriptions*desc.Scrollbar.borderColor: gray60
+*options.moduleOptions*descriptions.showGrip: False
+*options.moduleOptions*popdown.label: Popdown dialog
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! monitor
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+*monitorl*Viewport.width: 302
+*monitorl*Text.width: 160
+*monitorl*Text.tip:\
+Select standard value from the list\n\
+below, or enter specific value here.
+
+*monitorl*hlabel.justify: right
+*monitorl*hlabel.width: 138
+*monitorl*hlabel.label: Horizontal sync
+*monitorl*hsync.fromHoriz: hlabel
+*monitorl*hviewport.fromVert: hsync
+*monitorl*hviewport.height: 156
+*monitorl*hlist.longest: 288
+
+*monitorl*vlabel.justify: right
+*monitorl*vlabel.width: 138
+*monitorl*vlabel.vertDistance: 12
+*monitorl*vsync.vertDistance: 12
+*monitorl*vlabel.fromVert: hviewport
+*monitorl*vsync.fromVert: hviewport
+*monitorl*vlabel.label: Vertical sync
+*monitorl*vsync.fromHoriz: vlabel
+*monitorl*vviewport.fromVert: vsync
+*monitorl*vviewport.height: 20
+*monitorl*vlist.longest: 64
+
+*monitorl*clabel.vertDistance: 12
+*monitorl*clabel.fromVert: vviewport
+*monitorl*clabel.label: Select card connected to monitor
+*monitorl*cmenu.fromVert: clabel
+*monitorl*cmenu.width: 302
+*monitorl*cmenu.justify: left
+*monitorl*none.label: None
+
+!! vidtune
+*vidtune.Repeater.borderWidth: 1
+*vidtune.Repeater.borderColor: gray90
+*vidtune.Repeater.shapeStyle: ellipse
+*vidtune.Repeater.foreground: gray30
+*vidtune.Repeater.background: gray80
+*vidtune.Repeater.width: 31
+*vidtune.Repeater.height: 29
+*vidtune.Repeater.repeatDelay: 200
+*vidtune.Repeater.decay: 0
+*vidtune.Repeater.displayList:\
+line-width 2;\
+foreground gray65;\
+draw-arc 0,0,-0,-0,230,180;\
+foreground gray95;\
+draw-arc 0,0,-0,-0,40,180;\
+foreground gray80;\
+draw-arc 0,0,-0,-0,220,10;\
+draw-arc 0,0,-0,-0,40,10
+*vidtune.Repeater.translations:\
+<Enter>: set-values(1, borderColor, gray50)\n\
+<Leave>: set-values(1, borderColor, gray90)\n\
+<Btn1Down>: set-values(1, borderColor, gray90) set() start()\n\
+<Btn1Up>: stop() unset()
+*vidtune.left.bitmap: left.xbm
+*vidtune.right.bitmap: right.xbm
+*vidtune.up.bitmap: up.xbm
+*vidtune.down.bitmap: down.xbm
+*vidtune.wider.bitmap: wider.xbm
+*vidtune.narrower.bitmap: narrower.xbm
+*vidtune.shorter.bitmap: shorter.xbm
+*vidtune.taller.bitmap: taller.xbm
+
+*vidtune.vesaB.label: Add standard VESA mode to current screen
+*vidtune.vesaB.width: 312
+
+*vidtune.screenB.fromVert: mode
+*vidtune.screenB.width: 160
+*vidtune.screenB.horizDistance: 80
+*vidtune.prev.fromVert: vesaB
+*vidtune.mode.fromVert: vesaB
+*vidtune.next.fromVert: vesaB
+*vidtune.prev.horizDistance: 54
+*vidtune.prev.label: <<
+*vidtune.mode.fromHoriz: prev
+*vidtune.mode.width: 160
+*vidtune.next.label: >>
+*vidtune.next.fromHoriz: mode
+
+*vidtune.up.fromVert: screenB
+*vidtune.up.horizDistance: 143
+*vidtune.left.horizDistance: 98
+*vidtune.left.vertDistance: 16
+*vidtune.left.fromVert: up
+*vidtune.monitor.fromVert: up
+*vidtune.monitor.vertDistance: 0
+*vidtune.monitor.fromHoriz: left
+*vidtune.right.vertDistance: 16
+*vidtune.right.fromVert: up
+*vidtune.right.fromHoriz: monitor
+*vidtune.down.horizDistance: 143
+*vidtune.down.fromVert: monitor
+*vidtune.wider.fromVert: left
+*vidtune.wider.horizDistance: 91
+*vidtune.narrower.fromVert: down
+*vidtune.narrower.fromHoriz: wider
+*vidtune.shorter.fromVert: down
+*vidtune.shorter.fromHoriz: narrower
+*vidtune.taller.fromVert: right
+*vidtune.taller.fromHoriz: shorter
+*vidtune.monitor.width: 47
+*vidtune.monitor.height: 40
+*vidtune.monitor.backgroundPixmap: monitor.xpm
+*vidtune.narrower.horizDistance: 0
+*vidtune.shorter.horizDistance: 2
+*vidtune.taller.horizDistance: 0
+*vidtune.wider.vertDistance: 20
+*vidtune.taller.vertDistance: 20
+*vidtune.narrower.vertDistance: 0
+*vidtune.shorter.vertDistance: 0
+*vidtune.down.vertDistance: 0
+
+*vidtune.monitor.tip:\
+\ WARNING\n\
+\ Using the controls here may damage your\n\
+monitor. You can safely skip this section\n\
+of the configuration process.\n\
+\n\
+Press ESC if your monitor goes out of sync.
+
+*vidtune.background: white
+*vidtune.form.borderWidth: 0
+*vidtune.form.background: white
+*vidtune.form.defaultDistance: 0
+*vidtune.form.vertDistance: 3
+*vidtune.form.horizDistance: 4
+*vidtune.form.Label.foreground: gray20
+*vidtune.form.Label.background: white
+*vidtune.form.Label.font: -*-fixed-*-*-*-*-10-*-*-*-*-*-*-1
+*vidtune.form.Label.vertDistance: 0
+*vidtune*Label.justify: right
+
+*vidtune.form.fromVert: auto
+*vidtune*hsyncstart.label: HSyncStart:
+*vidtune*hsyncstart.width: 95
+*vidtune*v-hsyncstart.width: 40
+*vidtune*v-hsyncstart.fromHoriz: hsyncstart
+*vidtune*vsyncstart.fromHoriz: v-hsyncstart
+*vidtune*v-vsyncstart.fromHoriz: vsyncstart
+*vidtune*vsyncstart.label: VSyncStart:
+*vidtune*vsyncstart.width: 95
+*vidtune*v-vsyncstart.width: 40
+*vidtune*hsyncend.label: HSyncEnd:
+*vidtune*hsyncend.width: 95
+*vidtune*v-hsyncend.width: 40
+*vidtune*v-hsyncend.fromHoriz: hsyncend
+*vidtune*hsyncend.fromVert: hsyncstart
+*vidtune*v-hsyncend.fromVert: v-hsyncstart
+*vidtune*vsyncend.label: VSyncEnd:
+*vidtune*vsyncend.width: 95
+*vidtune*v-vsyncend.width: 40
+*vidtune*vsyncend.fromHoriz: v-hsyncend
+*vidtune*v-vsyncend.fromHoriz: vsyncend
+*vidtune*vsyncend.fromVert: hsyncstart
+*vidtune*v-vsyncend.fromVert: v-vsyncstart
+*vidtune*htotal.label: HTotal:
+*vidtune*htotal.width: 95
+*vidtune*v-htotal.width: 40
+*vidtune*v-htotal.fromHoriz: htotal
+*vidtune*htotal.fromVert: hsyncend
+*vidtune*v-htotal.fromVert: v-hsyncend
+*vidtune*vtotal.label: VTotal:
+*vidtune*vtotal.width: 95
+*vidtune*v-vtotal.width: 40
+*vidtune*vtotal.fromHoriz: v-htotal
+*vidtune*v-vtotal.fromHoriz: vtotal
+*vidtune*vtotal.fromVert: vsyncend
+*vidtune*v-vtotal.fromVert: v-vsyncend
+*vidtune*flags.label: Flags:
+*vidtune*flags.width: 142
+*vidtune*v-flags.width: 156
+*vidtune*v-flags.justify: left
+*vidtune*v-flags.fromHoriz: flags
+*vidtune*flags.fromVert: vtotal
+*vidtune*v-flags.fromVert: v-vtotal
+*vidtune*clock.label: Pixel Clock (MHz):
+*vidtune*clock.width: 142
+*vidtune*v-clock.width: 48
+*vidtune*v-clock.fromHoriz: clock
+*vidtune*clock.fromVert: flags
+*vidtune*v-clock.fromVert: v-flags
+*vidtune*hsync.label: Horizontal Sync (kHz):
+*vidtune*hsync.width: 142
+*vidtune*v-hsync.width: 48
+*vidtune*v-hsync.fromHoriz: hsync
+*vidtune*hsync.fromVert: clock
+*vidtune*v-hsync.fromVert: v-clock
+*vidtune*vsync.label: Vertical Sync (Hz):
+*vidtune*vsync.width: 142
+*vidtune*v-vsync.width: 48
+*vidtune*v-vsync.fromHoriz: vsync
+*vidtune*vsync.fromVert: hsync
+*vidtune*v-vsync.fromVert: v-hsync
+
+*vidtune.auto.horizDistance: 43
+*vidtune.auto.fromVert: narrower
+*vidtune.auto.label: Auto
+!*vidtune.auto.state: True
+*vidtune.apply.fromVert: narrower
+*vidtune.apply.fromHoriz: auto
+*vidtune.apply.label: Apply
+*vidtune.restore.fromHoriz: apply
+*vidtune.restore.horizDistance: 4
+*vidtune.restore.fromVert: narrower
+*vidtune.restore.label: Restore
+*vidtune.update.fromVert: narrower
+*vidtune.update.fromHoriz: restore
+*vidtune.update.label: Update
+*vidtune.test.fromVert: narrower
+*vidtune.test.fromHoriz: update
+*vidtune.test.label: Test
+
+*vidtune.Label.background: white
+*vidtune.addto.vertDistance: 4
+*vidtune.addto.fromHoriz: add
+*vidtune.addto.fromVert: form
+*vidtune.addto.label: mode to
+*vidtune.addto.horizDistance: 0
+*vidtune.ident.vertDistance: 4
+*vidtune.ident.horizDistance: 0
+*vidtune.ident.fromVert: form
+*vidtune.ident.fromHoriz: addto
+*vidtune.ident.width: 98
+*vidtune.ident.justify: left
+*vidtune.as.vertDistance: 4
+*vidtune.as.horizDistance: 0
+*vidtune.as.fromVert: form
+*vidtune.as.fromHoriz: ident
+*vidtune.as.label: as:
+*vidtune.text.vertDistance: 4
+*vidtune.text.horizDistance: 0
+*vidtune.text.fromVert: form
+*vidtune.text.fromHoriz: as
+*vidtune.text.width: 98
+*vidtune.add.vertDistance: 4
+*vidtune.add.fromVert: form
+*vidtune.add.label: Add
+.xf86cfg.force.geometry: 268x58
+.xf86cfg.force.minWidth: 268
+.xf86cfg.force.maxWidth: 268
+.xf86cfg.force.minHeight: 58
+.xf86cfg.force.maxHeight: 58
+.xf86cfg.force.?.label: There is already a modeline with the\n\
+specified identifier. Add anyway?
+
+.xf86cfg.addMode.geometry: 350x80
+.xf86cfg.addMode.minWidth: 350
+.xf86cfg.addMode.maxWidth: 350
+.xf86cfg.addMode.minHeight: 80
+.xf86cfg.addMode.maxHeight: 80
+.xf86cfg.addMode.?.label: XF86VidModeAddModeLine returned True,\n\
+but no modeline was added to the current Screen.\n\
+Do you want to add it to the Monitor section?
+
+.xf86cfg.test.?.label: \ Testing modeline...\n\n\
+Press ESC or stop button to quit.
+.xf86cfg.test.geometry: 250x72
+.xf86cfg.test.minWidth: 250
+.xf86cfg.test.maxWidth: 250
+.xf86cfg.test.minHeight: 72
+.xf86cfg.test.maxHeight: 72
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! screen
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+*screenD*depthL.label: Default color depth:
+*screenD*depthL.height: 20
+*screenD*1.fromHoriz: depthL
+*screenD*4.fromHoriz: 1
+*screenD*8.fromHoriz: 4
+*screenD*16.fromHoriz: 8
+*screenD*24.fromHoriz: 16
+*screenD*1.width: 24
+*screenD*4.width: 24
+*screenD*8.width: 24
+*screenD*16.width: 24
+*screenD*24.width: 24
+*screenD*1.horizDistance: 5
+*screenD*4.horizDistance: 5
+*screenD*8.horizDistance: 5
+*screenD*16.horizDistance: 5
+*screenD*24.horizDistance: 5
+*screenD*modeL.fromVert: depthL
+*screenD*modeL.vertDistance: 14
+*screenD*modeL.label: Select resolution(s):
+*screenD*viewL.fromVert: modeL
+*screenD*select.fromHoriz: viewL
+*screenD*unselect.fromHoriz: viewL
+*screenD*select.fromVert: modeL
+*screenD*unselect.fromVert: select
+*screenD*up.fromHoriz: viewL
+*screenD*down.fromHoriz: viewL
+*screenD*up.fromVert: unselect
+*screenD*down.fromVert: up
+*screenD*viewR.fromHoriz: select
+*screenD*viewR.fromVert: modeL
+*screenD*select.bitmap: right.xbm
+*screenD*unselect.bitmap: left.xbm
+*screenD*up.bitmap: up.xbm
+*screenD*down.bitmap: down.xbm
+*screenD*viewL.width: 133
+*screenD*viewR.width: 133
+*screenD*viewL.height: 184
+*screenD*viewR.height: 184
+*screenD*listLeft.longest: 128
+*screenD*listRight.longest: 128
+*screenD*rotate.tip: Don't select any option if\n\
+your monitor is not rotated.
+*screenD*rotate.vertDistance: 14
+*screenD*rotate.fromVert: viewL
+*screenD*rotate.label: Rotate screen:
+*screenD*CW.tip: Clock wise
+*screenD*CW.vertDistance: 14
+*screenD*CW.fromVert: viewL
+*screenD*CW.fromHoriz: rotate
+*screenD*CW.label: CW
+*screenD*CW.width: 40
+*screenD*CCW.tip: Counter-clock wise
+*screenD*CCW.vertDistance: 14
+*screenD*CCW.fromVert: viewL
+*screenD*CCW.fromHoriz: CW
+*screenD*CCW.label: CCW
+*screenD*CCW.width: 40
+
+*work.screen.width: 100
+*work.screen.height: 80
+
+
+*Dialog.background: gray85
+*quit.ask.label: Write configuration to
+*quit.ask.value.translations: #override \
+<Key>Return: write-config()
+*quit.ask.label.justify: left
+*quit.ask.value.width: 222
+*quit.ask.icon: Excl
+.xf86cfg.quit.geometry: 230x92
+.xf86cfg.quit.minWidth: 230
+.xf86cfg.quit.maxWidth: 230
+.xf86cfg.quit.minHeight: 92
+.xf86cfg.quit.maxHeight: 92
+
+*error.notice.label: Failed to write configuration file.
+.xf86cfg.error.geometry: 280x50
+.xf86cfg.error.minWidth: 260
+.xf86cfg.error.maxWidth: 260
+.xf86cfg.error.minHeight: 50
+.xf86cfg.error.maxHeight: 50
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! accessx
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+*Accessx*Label.font: -*-fixed-medium-r-*-*-13-*-*-*-*-*-iso8859-1
+*Accessx.Form.Toggle.font: -*-fixed-medium-r-*-*-13-*-*-*-*-*-iso8859-1
+*Accessx*Label.background: white
+*Accessx*Label.justify: left
+*Accessx*Label.internalHeight: 0
+*Accessx*Label.internalWidth: 0
+*Accessx*Label.foreground: gray35
+*Accessx*Toggle.internalHeight: 0
+*Accessx.Toggle.internalWidth: 18
+*Accessx.Toggle.justify: left
+*Accessx.Toggle.foreground: gray30
+*Accessx.Toggle.background: white
+*Accessx*Toggle.highlightThickness: 0
+*Accessx.Toggle.foreground: rgb:f/7/7
+*Accessx.Toggle.displayList:\
+foreground white;\
+points 0,0,-1,0;\
+foreground rgb:f/7/7;\
+fill-poly 0,2,0,-3,8,6
+*Accessx.Toggle.translations: \
+<Btn1Down>,<Btn1Up>: toggle() notify()\n\
+<Enter>: set-values(1, displayList, "foreground white;points 0,0,-1,0;fill-poly 0,1,10,6,0,-2;foreground rgb:7/7/f;fill-poly 0,2,0,-3,8,6")\n\
+<Leave>: set-values(1, displayList, "foreground white;points 0,0,-1,0;foreground rgb:f/7/7;fill-poly 0,2,0,-3,8,6")
+*Accessx.Form.borderWidth: 1
+*Accessx.Form.borderColor: rgb:f/a/a
+*Accessx.Form.vertDistance: 0
+*Accessx.Form.defaultDistance: 2
+*Accessx.borderWidth: 0
+*accessxForm.background: white
+*Accessx*Form.background: white
+*Accessx.background: white
+*accessxForm.enable.label: Enable AccessX
+*accessxForm.enable.width: 208
+*accessxForm.apply.fromHoriz: enable
+*accessxForm.apply.label: Apply changes
+*accessxForm.Accessx.fromVert: enable
+*Accessx.timeoutToggle.background: white
+*Accessx.timeoutToggle.foreground: rgb:7/7/f
+*Accessx.timeoutToggle.displayList:\
+foreground rgb:a/a/f;\
+lines 1,-1,-1,-1,-1,1;\
+foreground rgb:2/2/a;\
+lines -1,0,0,0,0,-1
+
+*Accessx.Form.Toggle.background: white
+*Accessx.Form.Toggle.foreground: rgb:7/7/f
+*Accessx.Form.Toggle.displayList:\
+foreground rgb:a/a/f;\
+lines 1,-1,-1,-1,-1,1;\
+foreground rgb:2/2/a;\
+lines -1,0,0,0,0,-1
+*Accessx.Form.Toggle.translations: \
+<Btn1Down>,<Btn1Up>: toggle() notify()\n\
+<Enter>: set-values(1, displayList, "foreground rgb:a/a/f;lines 1,-1,-1,-1,-1,1;foreground rgb:2/2/a;lines -1,0,0,0,0,-1;foreground rgb:f/7/7;draw-rect 1,1,-2,-2")\n\
+<Leave>: set-values(1, displayList, "foreground rgb:a/a/f;lines 1,-1,-1,-1,-1,1;foreground rgb:2/2/a;lines -1,0,0,0,0,-1")
+
+*Accessx.timeoutToggle.internalWidth: 4
+*Accessx.timeoutToggle.translations:\
+<Btn1Down>,<Btn1Up>: toggle() notify()
+*Accessx.timeoutToggle.internalWidth: 4
+*Accessx.timeoutToggle.internalHeight: 1
+*Accessx.timeoutToggle.vertDistance: 6
+*Accessx.timeoutToggle.label: Time Out
+*Accessx.timeoutLabel.fromHoriz: timeoutToggle
+*Accessx.timeoutLabel.vertDistance: 7
+*Accessx.timeoutLabel.label: Time (min)
+*Accessx.Label.background: white
+*Accessx.timeoutNumber.vertDistance: 1
+*Accessx.timeoutNumber.fromHoriz: timeoutLabel
+*Accessx.timeoutNumber.font: 6x9
+*Accessx.timeoutNumber.label: ??
+*Accessx.timeoutScroller.fromVert: timeoutNumber
+*Accessx.timeoutScroller.fromHoriz: timeoutLabel
+*Accessx.timeoutScroller.width: 133
+*Accessx.timeoutScroller.horizDistance: 31
+*Accessx*Scrollbar.vertDistance: 0
+*Accessx*Scrollbar.orientation: horizontal
+*Accessx*Scrollbar.thumb: black
+*Accessx*Scrollbar.height: 8
+*Accessx*Scrollbar.minimumThumb: 5
+*Accessx*Scrollbar.borderWidth: 1
+*Accessx*Scrollbar.borderColor: white
+*Accessx*Scrollbar.foreground: rgb:f/7/7
+*Accessx*Scrollbar.background: gray95
+*Accessx*Scrollbar.displayList:\
+foreground gray80;\
+lines 1,-1,-1,-1,-1,1;\
+foreground gray90;\
+lines -1,0,0,0,0,-1
+*Accessx.sticky.fromVert: timeoutToggle
+*Accessx.sticky.vertDistance: 6
+*Accessx.sticky.label: Enable StickyKeys
+*Accessx.sticky.width: 304
+*Accessx.stickyForm.fromVert: sticky
+*Accessx.stickyForm.Toggle.width: 148
+*Accessx.stickyForm.Toggle.internalHeight: 1
+*Accessx.stickyForm.auto.label: Auto off
+*Accessx.stickyForm.beep.fromHoriz: auto
+*Accessx.stickyForm.beep.label: Modifiers beep
+*Accessx.mouseKeys.fromVert: stickyForm
+*Accessx.mouseKeys.width: 304
+*Accessx.mouseKeys.vertDistance: 6
+*Accessx.mouseKeys.label: Enable MouseKeys
+*Accessx.mouseForm.fromVert: mouseKeys
+*Accessx.mouseForm.speedLabel.vertDistance: 7
+*Accessx.mouseForm.speedLabel.label: Peak speed (pixels/sec)
+*Accessx.mouseForm.speedNumber.fromHoriz: speedLabel
+*Accessx.mouseForm.speedNumber.font: 6x9
+*Accessx.mouseForm.speedNumber.label: ???
+*Accessx.mouseForm.speedScroller.fromHoriz: speedLabel
+*Accessx.mouseForm.speedScroller.fromVert: speedNumber
+*Accessx.mouseForm.speedScroller.width: 133
+*Accessx.mouseForm.timeLabel.fromVert: speedScroller
+*Accessx.mouseForm.timeLabel.label: Time to peak (sec)
+*Accessx.mouseForm.timeLabel.vertDistance: 7
+*Accessx.mouseForm.timeNumber.label: ???
+*Accessx.mouseForm.timeNumber.fromVert: speedScroller
+*Accessx.mouseForm.timeNumber.fromHoriz: timeLabel
+*Accessx.mouseForm.timeNumber.font: 6x9
+*Accessx.mouseForm.timeScroller.fromHoriz: timeLabel
+*Accessx.mouseForm.timeScroller.fromVert: timeNumber
+*Accessx.mouseForm.timeScroller.width: 133
+*Accessx.mouseForm.timeScroller.horizDistance: 37
+*Accessx.mouseForm.delayLabel.fromVert: timeScroller
+*Accessx.mouseForm.delayLabel.label: Motion delay (sec)
+*Accessx.mouseForm.delayLabel.tip:\
+Time between the initial key press\n\
+and the first repeated motion event
+*Accessx.mouseForm.delayLabel.vertDistance: 7
+*Accessx.mouseForm.delayNumber.label: ???
+*Accessx.mouseForm.delayNumber.fromVert: timeScroller
+*Accessx.mouseForm.delayNumber.fromHoriz: delayLabel
+*Accessx.mouseForm.delayNumber.font: 6x9
+*Accessx.mouseForm.delayScroller.fromHoriz: delayLabel
+*Accessx.mouseForm.delayScroller.fromVert: delayNumber
+*Accessx.mouseForm.delayScroller.width: 133
+*Accessx.mouseForm.delayScroller.horizDistance: 37
+*Accessx.repeatKeys.fromVert: mouseForm
+*Accessx.repeatKeys.width: 304
+*Accessx.repeatKeys.vertDistance: 6
+*Accessx.repeatKeys.label: Enable RepeatKeys
+*Accessx.repeatForm.fromVert: repeatKeys
+*Accessx.repeatForm.rateLabel.vertDistance: 7
+*Accessx.repeatForm.rateLabel.label: Repeat rate (sec/key)
+*Accessx.repeatForm.rateNumber.fromHoriz: rateLabel
+*Accessx.repeatForm.rateNumber.font: 6x9
+*Accessx.repeatForm.rateNumber.label: ????
+*Accessx.repeatForm.rateScroller.fromHoriz: rateLabel
+*Accessx.repeatForm.rateScroller.fromVert: rateNumber
+*Accessx.repeatForm.rateScroller.width: 133
+*Accessx.repeatForm.rateScroller.horizDistance: 16
+*Accessx.repeatForm.delayLabel.fromVert: rateScroller
+*Accessx.repeatForm.delayLabel.label: Repeat delay (sec)
+*Accessx.repeatForm.delayLabel.vertDistance: 7
+*Accessx.repeatForm.delayNumber.label: ????
+*Accessx.repeatForm.delayNumber.fromVert: rateScroller
+*Accessx.repeatForm.delayNumber.fromHoriz: delayLabel
+*Accessx.repeatForm.delayNumber.font: 6x9
+*Accessx.repeatForm.delayScroller.fromHoriz: delayLabel
+*Accessx.repeatForm.delayScroller.fromVert: delayNumber
+*Accessx.repeatForm.delayScroller.width: 133
+*Accessx.repeatForm.delayScroller.horizDistance: 37
+*Accessx.slow.fromVert: repeatForm
+*Accessx.slow.vertDistance: 6
+*Accessx.slow.label: Enable SlowKeys
+*Accessx.slow.width: 304
+*Accessx.slowForm.fromVert: slow
+*Accessx.slowForm.Toggle.horizDistance: 4
+*Accessx.slowForm.Toggle.internalWidth: 4
+*Accessx.slowForm.Toggle.internalHeight: 1
+*Accessx.slowForm.beep.label: Beep when key is
+*Accessx.slowForm.beep.vertDistance: 3
+*Accessx.slowForm.pressed.fromHoriz: beep
+*Accessx.slowForm.pressed.label: pressed
+*Accessx.slowForm.accepted.fromHoriz: pressed
+*Accessx.slowForm.accepted.label: accepted
+*Accessx.slowForm.slowLabel.fromVert: accepted
+*Accessx.slowForm.slowLabel.label: Key delay (sec)
+*Accessx.slowForm.slowLabel.vertDistance: 7
+*Accessx.slowForm.slowNumber.label: ???
+*Accessx.slowForm.slowNumber.fromVert: accepted
+*Accessx.slowForm.slowNumber.fromHoriz: slowLabel
+*Accessx.slowForm.slowNumber.font: 6x9
+*Accessx.slowForm.slowScroller.fromHoriz: slowLabel
+*Accessx.slowForm.slowScroller.fromVert: slowNumber
+*Accessx.slowForm.slowScroller.width: 133
+*Accessx.slowForm.slowScroller.horizDistance: 58
+*Accessx.bounce.fromVert: slowForm
+*Accessx.bounce.vertDistance: 6
+*Accessx.bounce.label: Enable BounceKeys
+*Accessx.bounce.width: 304
+*Accessx.bounceForm.fromVert: bounce
+*Accessx.bounceForm.bounceLabel.label: Debounce time (sec)
+*Accessx.bounceForm.bounceLabel.vertDistance: 7
+*Accessx.bounceForm.bounceNumber.label: ???
+*Accessx.bounceForm.bounceNumber.fromHoriz: bounceLabel
+*Accessx.bounceForm.bounceNumber.font: 6x9
+*Accessx.bounceForm.bounceScroller.fromHoriz: bounceLabel
+*Accessx.bounceForm.bounceScroller.fromVert: bounceNumber
+*Accessx.bounceForm.bounceScroller.width: 133
+*Accessx.bounceForm.bounceScroller.horizDistance: 30
+
+*accessx.geometry: 220x253
+*accessx.minWidth: 220
+*accessx.maxWidth: 220
+*accessx.minHeight: 253
+*accessx.maxHeight: 253
+*accessx*lock.fromVert: label
+*accessx*div.fromVert: label
+*accessx*div.fromHoriz: lock
+*accessx*mul.fromVert: label
+*accessx*mul.fromHoriz: div
+*accessx*minus.fromVert: label
+*accessx*minus.fromHoriz: mul
+*accessx*7.fromVert: lock
+*accessx*8.fromVert: div
+*accessx*8.fromHoriz: 7
+*accessx*9.fromVert: mul
+*accessx*9.fromHoriz: 8
+*accessx*plus.fromVert: minus
+*accessx*plus.fromHoriz: 9
+*accessx*4.fromVert: 7
+*accessx*5.fromVert: 8
+*accessx*5.fromHoriz: 4
+*accessx*6.fromVert: 9
+*accessx*6.fromHoriz: 5
+*accessx*1.fromVert: 4
+*accessx*2.fromVert: 5
+*accessx*2.fromHoriz: 1
+*accessx*3.fromVert: 6
+*accessx*3.fromHoriz: 2
+*accessx*enter.fromVert: plus
+*accessx*enter.fromHoriz: 3
+*accessx*0.fromVert: 2
+*accessx*del.fromVert: 3
+*accessx*del.fromHoriz: 0
+*accessx.form.background: gray80
+*accessx*Label.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1
+*accessx*label.font: fixed
+*accessx*Label.font: -*-helvetica-bold-o-*-*-10-*-*-*-*-*-*-1
+*accessx*Label.width: 50
+*accessx*Label.height: 35
+*accessx*label.width: 212
+*accessx*label.height: 50
+*accessx*plus.height: 74
+*accessx*enter.height: 74
+*accessx*0.width: 104
+*accessx*lock.label: Num\nLock
+*accessx*div.label: /\n\
+*accessx*mul.label: *\n\
+*accessx*minus.label: -\n\
+*accessx*7.label: 7\n\
+*accessx*8.label: 8\n\
+*accessx*9.label: 9\n\
+*accessx*plus.label: +\n\ \n\ \n\ \n\
+*accessx*4.label: 4\n\
+*accessx*5.label: 5\n\
+*accessx*6.label: 6\n\
+*accessx*1.label: 1\n\
+*accessx*2.label: 2\n\
+*accessx*3.label: 3\n\
+*accessx*enter.label: Enter\n\ \n\ \n\ \n\
+*accessx*0.label: 0\n\
+*accessx*del.label: .\n\ \n\
+*accessx*label.displayList:\
+foreground white;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground gray20;\
+lines -1,0,0,0,0,-1
+*accessx*label.label:\
+If your mouse does not work, use\n\
+the numeric keypad, following\n\
+the diagram bellow.
+*accessx*div.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-10-*-*-*-*-*-*-1;\
+draw-string 4,30, "Button 1"
+*accessx*mul.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-10-*-*-*-*-*-*-1;\
+draw-string 4,30, "Button 2"
+*accessx*minus.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-10-*-*-*-*-*-*-1;\
+draw-string 4,30, "Button 3"
+*accessx*7.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 20,20,20,30,30,20
+*accessx*8.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 30,20,20,30,40,30
+*accessx*9.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 20,20,30,30,30,20
+*accessx*plus.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-10-*-*-*-*-*-*-1;\
+draw-string 9,46, "Double";\
+draw-string 14,60, "Click"
+*accessx*4.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 22,22,30,30,30,14
+*accessx*5.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-10*-*-*-*-*-*-1;\
+draw-string 14,30, "Click"
+*accessx*6.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 30,22,22,30,22,14
+*accessx*1.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 20,20,20,30,30,30
+*accessx*2.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 28,30,20,22,36,22
+*accessx*3.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+fill-poly 20,30,30,30,30,20
+*accessx*enter.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-10-*-*-*-*-*-*-1;\
+draw-string 9,46, "Toggle";\
+draw-string 10,60, "Speed"
+*accessx*0.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-10-*-*-*-*-*-*-1;\
+draw-string 26,30, "Button Lock"
+*accessx*del.displayList:\
+foreground gray20;\
+lines +1,-1,-1,-1,-1,+1;\
+foreground white;\
+lines -1,0,0,0,0,-1;\
+foreground red;\
+font -*-helvetica-bold-o-*-*-8-*-*-*-*-*-*-1;\
+draw-string 12,21, "Button";\
+draw-string 9,30, "Release"
+
+*panner.width: 100
+*panner.height: 100
+
+*help*text.properties:\
+default?family=Times&weight=Medium&slant=R&pixelsize=12&registry=ISO8859&encoding=1,\
+b?weight=Bold,\
+strong?weight=Bold,\
+i?slant=I,\
+em?slant=I,\
+address?slant=I,\
+h1?pixelsize=24&weight=Bold,\
+h2?pixelsize=20&weight=Bold,\
+h3?pixelsize=17&weight=Bold,\
+h4?pixelsize=14&weight=Bold,\
+h5?pixelsize=12&weight=Bold,\
+h6?pixelsize=10&weight=Bold,\
+pre?family=Courier&pixelsize=10,\
+kbd?family=Courier&pixelsize=10,\
+code?family=Courier&pixelsize=10,\
+samp?family=Courier&pixelsize=10,\
+tt?family=Courier&pixelsize=10
+*help*commands.min: 22
+*help*commands.max: 22
+*help*commands.showGrip:False
+*help*wrap: word
+*help*commands.close.label: Close
+.xf86cfg.help.geometry: 320x369
+.xf86cfg.help.minWidth: 320
+.xf86cfg.help.maxWidth: 320
+.xf86cfg.help.minHeight: 369
+.xf86cfg.help.maxHeight: 369
+.xf86cfg.help.translations: #override \
+<Message>WM_PROTOCOLS: help-close()
+*help*text.translations:\
+<Key>Up: scroll-one-line-down()\n\
+<Key>Down: scroll-one-line-up()\n\
+<Key>Next: next-page()\n\
+<Key>Prior: previous-page()\n\
+<Key>space: next-page()\n\
+<Key>BackSpace: previous-page()\n\
+<Key>Home: beginning-of-file()\n\
+<Key>End: end-of-file()
+*help*text*displayCaret: False
+*help*text.leftMargin: 10
+*help*text.rightMargin: 10
+
+*help.helpDevices:\
+<h2>Configuring devices</h2>\
+You can arrange the icons pressing the <i>left mouse button</i> \
+and dragging them.\
+<p>\
+To configure a device, press the <i>right mouse button</i> and choose the \
+<tt>configure</tt> option.\
+
+*help.helpScreen:\
+<h2>Configuring screens</h2>\
+You can drag the monitors to set the screen layout form <b>Xinerama</b> \
+pressing the <i>left mouse button</i> and moving them.\
+<p>\
+Press the <i>right mouse button</i> to set configure or set options for \
+the given screen.
+
+*help.helpModeline:\
+<h2>Configuring modelines</h2>\
+<b><font size=+1 color=red>The controls here may damage your \
+monitor.</font></b> \
+<p>\
+You can safelly skip this stage of the configuration process.\
+<p>\
+When not running in <b>Xinerama</b> mode, you can configure modelines \
+for every configured monitor. Set the <b>Auto</b> toggle to see the changes \
+while the <i>control buttons</i> are pressed.\
+<p>\
+Note that the <i>arrow</i> buttons are repeaters. Press they only once \
+and they will show the changes in the <i>text labels</i>.\
+<p>\
+<font color=forestgreen>Press <b>ESC</b> if the monitor goes out of sync.</font>
+
+*help.helpAccessX:\
+<h2>Configuring accessx</h2>\
+This interface is expected to allow customizing most of the <b>accessx</b> \
+options.\
+<p>\
+Press in the <b>Enable ???</b> label to set specific options.\
+<p>\
+<font color=red>Note</font>: currently, if you press the \
+<tt><b>Apply changes</b></tt> button there is no way to undo your changes.</font>
+
+
+*Expert.geometry: 640x460
+*Expert*vpane.min: 64
+*Expert*vpane.max: 64
+*Expert*vpane.showGrip: False
+*Expert*vpane.close.showGrip: False
+*Expert*vpane.close.min: 26
+*Expert*vpane.close.max: 26
+*panner.internalSpace: 1
+*panner.shadowThickness: 0
+*panner.shadowColor: gray60
+*panner.backgroundStipple: black
+*panner.borderColor: gray40
+
+*expert*tree.hSpace: 12
+*expert*tree*Box.hSpace: 4
+*expert*tree*vSpace: 4
+*expert*tree*LogFile.Text.width: 192
+*expert*tree*RgbPath.Text.width: 192
+*expert*tree*ModulePath.Text.width: 192
+
+*expert*tree*Form.defaultDistance: 4
+
+*expert*tree.backgroundPixmap: xlogo64?foreground=gray90&background=gray92
+*expert*tree.foreground: gray45
+
+*expert*tree*Label.backgroundPixmap: ParentRelative
+
+*expert*tree*Box.backgroundPixmap: gradient:vertical?dimension=3&start=gray85&end=gray95
+*expert*tree*Box.borderWidth: 0
+*expert*tree*Box.background: gray85
+*expert*Box.displayList:\
+foreground gray40;\
+lines 1,-1,-1,-1,-1,1;\
+foreground white;\
+lines -1,0,0,0,0,-1
+
+*expert*tree*Form.backgroundPixmap: gradient:vertical?dimension=3&start=gray85&end=gray95
+*expert*tree*Form.borderWidth: 0
+*expert*tree*Form.background: gray85
+*expert*Form.displayList:\
+foreground gray40;\
+lines 1,-1,-1,-1,-1,1;\
+foreground white;\
+lines -1,0,0,0,0,-1
+
+*expert*tree*Text.width: 160
+
+*expert*tree*fontpath.Text.width: 228
+*expert*tree*fontpath.up.fromHoriz: remove
+*expert*tree*fontpath.down.fromHoriz: up
+*expert*tree*fontpath.value.fromVert: remove
+*expert*tree*fontpath.valueNew.fromVert: new
+
+*expert*tree*modulepath.Text.width: 228
+*expert*tree*modulepath.value.fromVert: remove
+*expert*tree*modulepath.valueNew.fromVert: new
+
+*expert*tree*module.options.fromHoriz: remove
+*expert*tree*module.label.fromVert: remove
+*expert*tree*module.value.fromHoriz: new
+*expert*tree*module.value.width: 78
+
+*expert*tree*video*Label.justify: left
+*expert*tree*video.options.fromHoriz: remove
+*expert*tree*video.adaptor.fromHoriz: options
+*expert*tree*video.vendorL.width: 78
+*expert*tree*video.vendorL.label: VendorName
+*expert*tree*video.vendorL.fromVert: remove
+*expert*tree*video.vendor.fromVert: remove
+*expert*tree*video.vendor.fromHoriz: vendorL
+*expert*tree*video.boardL.width: 78
+*expert*tree*video.boardL.label: BoardName
+*expert*tree*video.boardL.fromVert: vendor
+*expert*tree*video.board.fromVert: vendor
+*expert*tree*video.board.fromHoriz: boardL
+*expert*tree*video.busidL.width: 78
+*expert*tree*video.busidL.label: BusID
+*expert*tree*video.busidL.fromVert: board
+*expert*tree*video.busid.fromVert: board
+*expert*tree*video.busid.fromHoriz: busidL
+*expert*tree*video.driverL.width: 78
+*expert*tree*video.driverL.label: Driver
+*expert*tree*video.driverL.fromVert: busid
+*expert*tree*video.driver.fromVert: busid
+*expert*tree*video.driver.fromHoriz: driverL
+*expert*tree*video.value.fromHoriz: new
+*expert*tree*video.value.width: 78
+*expert*tree*VideoPort.fromVert: driver
+*expert*tree*VideoPort.horizDistance: 120
+*expert*tree*video.value.width: 149
+
+*expert*tree*port.value.fromHoriz: new
+*expert*tree*port.options.fromHoriz: remove
+*expert*tree*port.label.fromVert: remove
+*expert*tree*port.value.width: 78
+
+*expert*tree*modes.mode.fromHoriz: remove
+*expert*tree*modes.value.fromHoriz: new
+*expert*tree*modes.value.width: 78
+
+*expert*tree*modeline.label.fromHoriz: remove
+*expert*tree*modeline.modeline.fromVert: remove
+*expert*tree*modeline.modeline.width: 480
+*expert*tree*modeline.value.fromHoriz: new
+*expert*tree*modeline.value.width: 120
+*expert*tree*modeline.modelineNew.fromVert: value
+*expert*tree*modeline.modelineNew.width: 480
+
+*expert*tree*monitor.options.fromHoriz: remove
+*expert*tree*monitor.label.fromHoriz: options
+
+*expert*tree*monitor.Label.justify: left
+*expert*tree*monitor.Text.width: 120
+*expert*tree*monitor.vendorL.width: 100
+*expert*tree*monitor.vendorL.label: VendorName
+*expert*tree*monitor.vendorL.fromVert: remove
+*expert*tree*monitor.vendor.fromVert: remove
+*expert*tree*monitor.vendor.fromHoriz: vendorL
+*expert*tree*monitor.modelnameL.width: 100
+*expert*tree*monitor.modelnameL.label: ModelName
+*expert*tree*monitor.modelnameL.fromVert: vendor
+*expert*tree*monitor.modelname.fromVert: vendor
+*expert*tree*monitor.modelname.fromHoriz: modelnameL
+*expert*tree*monitor.widthL.width: 100
+*expert*tree*monitor.widthL.label: Width (mm)
+*expert*tree*monitor.widthL.fromVert: modelname
+*expert*tree*monitor.width.fromVert: modelname
+*expert*tree*monitor.width.fromHoriz: widthL
+*expert*tree*monitor.heightL.width: 100
+*expert*tree*monitor.heightL.label: Height (mm)
+*expert*tree*monitor.heightL.fromVert: width
+*expert*tree*monitor.height.fromVert: width
+*expert*tree*monitor.height.fromHoriz: heightL
+*expert*tree*monitor.hsyncL.width: 100
+*expert*tree*monitor.hsyncL.label: Hsync
+*expert*tree*monitor.hsyncL.fromVert: heightL
+*expert*tree*monitor.hsync.fromVert: height
+*expert*tree*monitor.hsync.fromHoriz: hsyncL
+*expert*tree*monitor.vrefreshL.width: 100
+*expert*tree*monitor.vrefreshL.label: Vrefresh
+*expert*tree*monitor.vrefreshL.fromVert: hsync
+*expert*tree*monitor.vrefresh.fromVert: hsync
+*expert*tree*monitor.vrefresh.fromHoriz: vrefreshL
+*expert*tree*monitor.gammaRedL.width: 100
+*expert*tree*monitor.gammaRedL.label: Gamma (red)
+*expert*tree*monitor.gammaRedL.fromVert: vrefresh
+*expert*tree*monitor.gammaRed.fromVert: vrefresh
+*expert*tree*monitor.gammaRed.fromHoriz: gammaRedL
+*expert*tree*monitor.gammaGreenL.width: 100
+*expert*tree*monitor.gammaGreenL.label: Gamma (green)
+*expert*tree*monitor.gammaGreenL.fromVert: gammaRed
+*expert*tree*monitor.gammaGreen.fromVert: gammaRed
+*expert*tree*monitor.gammaGreen.fromHoriz: gammaGreenL
+*expert*tree*monitor.gammaBlueL.width: 100
+*expert*tree*monitor.gammaBlueL.label: Gamma (blue)
+*expert*tree*monitor.gammaBlueL.fromVert: gammaGreen
+*expert*tree*monitor.gammaBlue.fromVert: gammaGreen
+*expert*tree*monitor.gammaBlue.fromHoriz: gammaBlueL
+*expert*tree*monitor.value.width: 191
+*expert*tree*monitor.value.fromHoriz: new
+
+*expert*tree*device.Label.justify: left
+*expert*tree*device.options.fromHoriz: remove
+*expert*tree*device.label.fromHoriz: options
+*expert*tree*device.vendorL.label: VendorName
+*expert*tree*device.vendorL.width: 100
+*expert*tree*device.vendorL.fromVert: remove
+*expert*tree*device.vendor.fromVert: remove
+*expert*tree*device.vendor.fromHoriz: vendorL
+*expert*tree*device.boardL.label: BoardName
+*expert*tree*device.boardL.width: 100
+*expert*tree*device.boardL.fromVert: vendor
+*expert*tree*device.board.fromVert: vendor
+*expert*tree*device.board.fromHoriz: boardL
+*expert*tree*device.chipsetL.label: Chipset
+*expert*tree*device.chipsetL.width: 100
+*expert*tree*device.chipsetL.fromVert: board
+*expert*tree*device.chipset.fromVert: board
+*expert*tree*device.chipset.fromHoriz: chipsetL
+*expert*tree*device.busidL.label: BusID
+*expert*tree*device.busidL.width: 100
+*expert*tree*device.busidL.fromVert: chipset
+*expert*tree*device.busid.fromVert: chipset
+*expert*tree*device.busid.fromHoriz: chipsetL
+*expert*tree*device.cardL.label: Card
+*expert*tree*device.cardL.width: 100
+*expert*tree*device.cardL.fromVert: busid
+*expert*tree*device.card.fromVert: busid
+*expert*tree*device.card.fromHoriz: cardL
+*expert*tree*device.driverL.label: Driver
+*expert*tree*device.driverL.width: 100
+*expert*tree*device.driverL.fromVert: card
+*expert*tree*device.driver.fromVert: card
+*expert*tree*device.driver.fromHoriz: driverL
+*expert*tree*device.ramdacL.label: Ramdac
+*expert*tree*device.ramdacL.width: 100
+*expert*tree*device.ramdacL.fromVert: driverL
+*expert*tree*device.ramdac.fromVert: driver
+*expert*tree*device.ramdac.fromHoriz: ramdacL
+*expert*tree*device.dacSpeedL.label: DacSpeed
+*expert*tree*device.dacSpeedL.width: 100
+*expert*tree*device.dacSpeedL.fromVert: ramdac
+*expert*tree*device.dacSpeed.fromVert: ramdac
+*expert*tree*device.dacSpeed.fromHoriz: dacSpeedL
+*expert*tree*device.videoRamL.label: VideoRam
+*expert*tree*device.videoRamL.width: 100
+*expert*tree*device.videoRamL.fromVert: dacSpeed
+*expert*tree*device.videoRam.fromVert: dacSpeed
+*expert*tree*device.videoRam.fromHoriz: videoRamL
+*expert*tree*device.textClockFreqL.label: TextClockFreq
+*expert*tree*device.textClockFreqL.width: 100
+*expert*tree*device.textClockFreqL.fromVert: videoRam
+*expert*tree*device.textClockFreq.fromVert: videoRam
+*expert*tree*device.textClockFreq.fromHoriz: textClockFreqL
+*expert*tree*device.biosBaseL.label: BiosBase
+*expert*tree*device.biosBaseL.width: 100
+*expert*tree*device.biosBaseL.fromVert: textClockFreq
+*expert*tree*device.biosBase.fromVert: textClockFreq
+*expert*tree*device.biosBase.fromHoriz: biosBaseL
+*expert*tree*device.memBaseL.label: MemBase
+*expert*tree*device.memBaseL.width: 100
+*expert*tree*device.memBaseL.fromVert: biosBase
+*expert*tree*device.memBase.fromVert: biosBase
+*expert*tree*device.memBase.fromHoriz: memBaseL
+*expert*tree*device.ioBaseL.label: IOBase
+*expert*tree*device.ioBaseL.width: 100
+*expert*tree*device.ioBaseL.fromVert: memBase
+*expert*tree*device.ioBase.fromVert: memBase
+*expert*tree*device.ioBase.fromHoriz: ioBaseL
+*expert*tree*device.clockChipL.label: ClockChip
+*expert*tree*device.clockChipL.width: 100
+*expert*tree*device.clockChipL.fromVert: ioBase
+*expert*tree*device.clockChip.fromVert: ioBase
+*expert*tree*device.clockChip.fromHoriz: clockChipL
+*expert*tree*device.devClockL.label: Clocks
+*expert*tree*device.devClockL.width: 100
+*expert*tree*device.devClockL.fromVert: clockChip
+*expert*tree*device.devClock.fromVert: clockChip
+*expert*tree*device.devClock.fromHoriz: devClockL
+*expert*tree*device.chipIdL.label: ChipId
+*expert*tree*device.chipIdL.width: 100
+*expert*tree*device.chipIdL.fromVert: devClock
+*expert*tree*device.chipId.fromVert: devClock
+*expert*tree*device.chipId.fromHoriz: chipIdL
+*expert*tree*device.chipRevL.label: ChipRev
+*expert*tree*device.chipRevL.width: 100
+*expert*tree*device.chipRevL.fromVert: chipId
+*expert*tree*device.chipRev.fromVert: chipId
+*expert*tree*device.chipRev.fromHoriz: chipRevL
+*expert*tree*device.irqL.label: IRQ
+*expert*tree*device.irqL.width: 100
+*expert*tree*device.irqL.fromVert: chipRev
+*expert*tree*device.irq.fromVert: chipRev
+*expert*tree*device.irq.fromHoriz: irqL
+*expert*tree*device.screenL.label: Screen
+*expert*tree*device.screenL.width: 100
+*expert*tree*device.screenL.fromVert: irq
+*expert*tree*device.screen.fromVert: irq
+*expert*tree*device.screen.fromHoriz: screenL
+*expert*tree*device.value.fromHoriz: new
+
+*expert*tree*screen.Label.justify: left
+*expert*tree*screen.options.fromHoriz: remove
+*expert*tree*screen.label.fromHoriz: options
+*expert*tree*screen.defaultDepthL.label: DefaultDepth
+*expert*tree*screen.defaultDepthL.width: 92
+*expert*tree*screen.defaultDepthL.fromVert: remove
+*expert*tree*screen.defaultDepth.fromVert: remove
+*expert*tree*screen.defaultDepth.fromHoriz: defaultDepthL
+*expert*tree*screen.defaultBppL.label: DefaultBpp
+*expert*tree*screen.defaultBppL.width: 92
+*expert*tree*screen.defaultBppL.fromVert: defaultDepth
+*expert*tree*screen.defaultBpp.fromVert: defaultDepth
+*expert*tree*screen.defaultBpp.fromHoriz: defaultBppL
+*expert*tree*screen.defaultFbBppL.label: DefaultFbBpp
+*expert*tree*screen.defaultFbBppL.width: 92
+*expert*tree*screen.defaultFbBppL.fromVert: defaultBpp
+*expert*tree*screen.defaultFbBpp.fromVert: defaultBpp
+*expert*tree*screen.defaultFbBpp.fromHoriz: defaultFbBppL
+*expert*tree*screen.monitorL.label: Monitor
+*expert*tree*screen.monitorL.width: 92
+*expert*tree*screen.monitorL.fromVert: defaultFbBpp
+*expert*tree*screen.monitor.fromVert: defaultFbBpp
+*expert*tree*screen.monitor.fromHoriz: monitorL
+*expert*tree*screen.deviceL.label: Device
+*expert*tree*screen.deviceL.width: 92
+*expert*tree*screen.deviceL.fromVert: monitor
+*expert*tree*screen.device.fromVert: monitor
+*expert*tree*screen.device.fromHoriz: deviceL
+*expert*tree*screen.value.fromHoriz: new
+
+*expert*tree*adaptor.label.fromHoriz: remove
+
+*expert*tree*display.Label.width: 64
+*expert*tree*display.Label.justify: left
+*expert*tree*display.options.fromHoriz: remove
+*expert*tree*display.viewportL.label: Viewport
+*expert*tree*display.viewportL.fromVert: remove
+*expert*tree*display.viewport.fromVert: remove
+*expert*tree*display.viewport.fromHoriz: viewportL
+*expert*tree*display.virtualL.label: Virtual
+*expert*tree*display.virtualL.fromVert: viewport
+*expert*tree*display.virtual.fromVert: viewport
+*expert*tree*display.virtual.fromHoriz: virtualL
+*expert*tree*display.depthL.label: Depth
+*expert*tree*display.depthL.fromVert: virtual
+*expert*tree*display.depth.fromVert: virtual
+*expert*tree*display.depth.fromHoriz: depthL
+*expert*tree*display.bppL.label: FbBPP
+*expert*tree*display.bppL.fromVert: depth
+*expert*tree*display.bpp.fromVert: depth
+*expert*tree*display.bpp.fromHoriz: bppL
+*expert*tree*display.visualL.label: Visual
+*expert*tree*display.visualL.fromVert: bpp
+*expert*tree*display.visual.fromVert: bpp
+*expert*tree*display.visual.fromHoriz: visualL
+*expert*tree*display.weightL.label: Weight
+*expert*tree*display.weightL.fromVert: visual
+*expert*tree*display.weight.fromVert: visual
+*expert*tree*display.weight.fromHoriz: weightL
+*expert*tree*display.blackL.label: Black
+*expert*tree*display.blackL.fromVert: weight
+*expert*tree*display.black.fromVert: weight
+*expert*tree*display.black.fromHoriz: blackL
+*expert*tree*display.whiteL.label: White
+*expert*tree*display.whiteL.fromVert: black
+*expert*tree*display.white.fromVert: black
+*expert*tree*display.white.fromHoriz: whiteL
+
+*expert*tree*mode.label.fromHoriz: remove
+*expert*tree*mode.value.fromHoriz: new
+*expert*tree*mode.value.width: 100
+
+*expert*tree*input.options.fromHoriz: remove
+*expert*tree*input.label.fromHoriz: options
+*expert*tree*input.driverL.label: Driver
+*expert*tree*input.driverL.fromVert: remove
+*expert*tree*input.driver.fromVert: remove
+*expert*tree*input.driver.fromHoriz: driverL
+*expert*tree*input.value.fromHoriz: new
+
+*expert*tree*layout.options.fromHoriz: remove
+*expert*tree*layout.label.fromHoriz: options
+*expert*tree*layout.value.fromHoriz: new
+
+*expert*tree*adjacency.Text.width: 46
+*expert*tree*adjacency.MenuButton.width: 122
+*expert*tree*adjacency.label.fromHoriz: remove
+*expert*tree*adjacency.scrnumL.label: Screen number
+*expert*tree*adjacency.scrnumL.horizDistance: 50
+*expert*tree*adjacency.scrnum.width: 32
+*expert*tree*adjacency.scrnumL.fromVert: remove
+*expert*tree*adjacency.scrnum.fromVert: remove
+*expert*tree*adjacency.scrnum.fromHoriz: scrnumL
+*expert*tree*adjacency.above.label: Above
+*expert*tree*adjacency.above.fromVert: scrnumL
+*expert*tree*adjacency.above.vertDistance: 20
+*expert*tree*adjacency.above.horizDistance: 96
+*expert*tree*adjacency.below.label: Below
+*expert*tree*adjacency.below.horizDistance: 96
+*expert*tree*adjacency.leftOf.label: LeftOf
+*expert*tree*adjacency.leftOf.fromVert: above
+*expert*tree*adjacency.screen.fromVert: above
+*expert*tree*adjacency.screen.fromHoriz: leftOf
+*expert*tree*adjacency.rightOf.label: RightOf
+*expert*tree*adjacency.rightOf.fromVert: above
+*expert*tree*adjacency.rightOf.fromHoriz: screen
+*expert*tree*adjacency.below.fromVert: screen
+*expert*tree*adjacency.relative.label: Relative
+*expert*tree*adjacency.relative.horizDistance: 53
+*expert*tree*adjacency.relative.fromVert: below
+*expert*tree*adjacency.absolute.fromVert: below
+*expert*tree*adjacency*absolute.label: Absolute
+*expert*tree*adjacency*absolute.fromHoriz: relative
+*expert*tree*adjacency*adjxL.label: X
+*expert*tree*adjacency*adjxL.horizDistance: 42
+*expert*tree*adjacency*adjxL.fromVert: absolute
+*expert*tree*adjacency*adjx.fromVert: absolute
+*expert*tree*adjacency*adjx.fromHoriz: adjxL
+*expert*tree*adjacency*adjyL.label: Y
+*expert*tree*adjacency*adjyL.horizDistance: 12
+*expert*tree*adjacency*adjyL.fromVert: absolute
+*expert*tree*adjacency*adjyL.fromHoriz: adjx
+*expert*tree*adjacency*adjy.fromVert: absolute
+*expert*tree*adjacency*adjy.fromHoriz: adjyL
+
+*expert*tree*inputref.options.fromHoriz: remove
+*expert*tree*inputref.label.fromHoriz: options
+
+*expert*tree*vendor.Text.width: 100
+*expert*tree*vendor.options.fromHoriz: remove
+*expert*tree*vendor.label.fromHoriz: options
+*expert*tree*vendor.value.fromHoriz: new
+
+*expert*tree*vendorSub.Text.width: 140
+*expert*tree*vendorSub.options.fromHoriz: remove
+*expert*tree*vendorSub.label.fromHoriz: options
+*expert*tree*vendorSub.nameL.label: Name
+*expert*tree*vendorSub.nameL.fromVert: remove
+*expert*tree*vendorSub.name.fromVert: remove
+*expert*tree*vendorSub.name.fromHoriz: nameL
+*expert*tree*vendorSub.value.fromHoriz: new
+
+*expert*tree*dri.Text.width: 100
+*expert*tree*dri.Label.width: 78
+*expert*tree*dri.Label.justify: left
+*expert*tree*dri.nameL.label: Group name
+*expert*tree*dri.name.fromHoriz: nameL
+*expert*tree*dri.groupL.label: Group
+*expert*tree*dri.groupL.fromVert: name
+*expert*tree*dri.group.fromVert: name
+*expert*tree*dri.group.fromHoriz: groupL
+*expert*tree*dri.modeL.label: Mode
+*expert*tree*dri.modeL.fromVert: group
+*expert*tree*dri.mode.fromVert: group
+*expert*tree*dri.mode.fromHoriz: modeL
+
+*expert*tree*buffers.Label.width: 50
+*expert*tree*buffers.Text.width: 100
+*expert*tree*buffers.countL.label: Count
+*expert*tree*buffers.countL.fromVert: remove
+*expert*tree*buffers.count.fromVert: remove
+*expert*tree*buffers.count.fromHoriz: countL
+*expert*tree*buffers.sizeL.label: Size
+*expert*tree*buffers.sizeL.fromVert: count
+*expert*tree*buffers.size.fromVert: count
+*expert*tree*buffers.size.fromHoriz: sizeL
+*expert*tree*buffers.flagsL.label: Flags
+*expert*tree*buffers.flagsL.fromVert: size
+*expert*tree*buffers.flags.fromVert: size
+*expert*tree*buffers.flags.fromHoriz: flagsL
+*Expert*close.label: Close
diff --git a/hw/xfree86/utils/xorgcfg/expert.c b/hw/xfree86/utils/xorgcfg/expert.c
index bd0182585..3bb3a34cc 100644
--- a/hw/xfree86/utils/xorgcfg/expert.c
+++ b/hw/xfree86/utils/xorgcfg/expert.c
@@ -4742,7 +4742,7 @@ ExpertInitialize(void)
XtAddCallback(panner, XtNreportCallback, PannerCallback, NULL);
tree = XtCreateManagedWidget("tree", treeWidgetClass, expert, NULL, 0);
- config = XtVaCreateManagedWidget("XF86Config", toggleWidgetClass, tree,
+ config = XtVaCreateManagedWidget(__XCONFIGFILE__, toggleWidgetClass, tree,
XtNstate, True, NULL, 0);
mainNode = NewNode(NULL, config, config, NULL, NULL);
diff --git a/hw/xfree86/utils/xorgcfg/interface.c b/hw/xfree86/utils/xorgcfg/interface.c
index 053b82257..2595fd376 100644
--- a/hw/xfree86/utils/xorgcfg/interface.c
+++ b/hw/xfree86/utils/xorgcfg/interface.c
@@ -193,8 +193,8 @@ static char *device_names[] = {
static XtResource appResources[] = {
#if 0
- {"xf86config", "XF86Config", XtRString, sizeof(char*),
- 0, XtRString, "/etc/X11/XF86Config"},
+ {"config", __XCONFIGFILE__, XtRString, sizeof(char*),
+ 0, XtRString, "/etc/X11/"__XCONFIGFILE__},
#endif
{"menuBitmap", "MenuBitmap", XtRString, sizeof(char*),
0, XtRString, "menu10"},
@@ -205,11 +205,11 @@ Usage(void)
{
fprintf(stderr,
"Usage:\n"
-" xf86cfg [-option ...]\n"
+" xorgcfg [-option ...]\n"
"\n"
"Options:\n"
-" -xf86config <XF86Config> Alternate configuration file.\n"
-" -modulepath <module-path> XFree86 modules location.\n"
+" -config <"__XCONFIGFILE__"> Alternate configuration file.\n"
+" -modulepath <module-path> "__XSERVERNAME__" modules location.\n"
" -serverpath <server-path> X server to start (if $DISPLAY is not defined).\n"
" -fontpath <font-path> Font path for fonts.\n"
" -rgbpath <rgb-path> Where the rgb.txt file is located.\n"
@@ -217,7 +217,7 @@ Usage(void)
" -textmode Use this option for the text only interface.\n"
#endif
#ifdef USE_MODULES
-" -nomodules Use this option if xf86cfg is slow to start.\n"
+" -nomodules Use this option if xorgcfg is slow to start.\n"
" -verbose <number> Verbosity used in the loader (default 1).\n"
#endif
" -verify Verify modules/options integrity.\n"
@@ -253,7 +253,9 @@ main(int argc, char *argv[])
noverify = True;
for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-xf86config") == 0) {
+ if (strcmp(argv[i], "-config") == 0 ||
+ strcmp(argv[i], "-xorgconfig") == 0 ||
+ strcmp(argv[i], "-xf86config") == 0) {
if (i + 1 < argc) {
XF86Config_path = argv[++i];
config_set = True;
@@ -298,13 +300,13 @@ main(int argc, char *argv[])
startedx = startx();
if (XF86Config_path == NULL)
- XF86Config_path = XtNewString("XF86Config-4");
+ XF86Config_path = XtNewString(__XCONFIGFILE__"-4");
if (XkbConfig_path == NULL) {
XmuSnprintf(XkbConfig_path_static, sizeof(XkbConfig_path_static),
"%s/%s%s", XFree86Dir, XkbConfigDir, XkbConfigFile);
XkbConfig_path = XkbConfig_path_static;
}
- toplevel = XtAppInitialize(&appcon, "XF86Cfg",
+ toplevel = XtAppInitialize(&appcon, "XOrgCfg",
NULL, 0,
&argc, argv,
NULL, NULL, 0);
@@ -534,9 +536,9 @@ main(int argc, char *argv[])
# endif
#else
# ifdef XF86CONFIGDIR
- XF86Config_path = XtNewString(XF86CONFIGDIR "/XF86Config-4");
+ XF86Config_path = XtNewString(XF86CONFIGDIR "/"__XCONFIGFILE__"-4");
# else
- XF86Config_path = XtNewString("/etc/X11/XF86Config-4");
+ XF86Config_path = XtNewString("/etc/X11/"__XCONFIGFILE__"-4");
# endif
#endif
}
diff --git a/hw/xfree86/utils/xorgcfg/keyboard-cfg.c b/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
index 3482653b8..997fce5bd 100644
--- a/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
@@ -73,7 +73,7 @@ static char *XkbRulesDir = "lib/X11/xkb/rules/";
#ifdef XFREE98_XKB
static char *XkbRulesFile = "xfree98";
#else
-static char *XkbRulesFile = "xfree86";
+static char *XkbRulesFile = __XKBDEFRULES__;
#endif
static XF86ConfInputPtr current_input;
diff --git a/hw/xfree86/utils/xorgcfg/loader.c b/hw/xfree86/utils/xorgcfg/loader.c
index 84032f596..138b77778 100644
--- a/hw/xfree86/utils/xorgcfg/loader.c
+++ b/hw/xfree86/utils/xorgcfg/loader.c
@@ -26,7 +26,7 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c,v 1.1.4.1.4.1 2004/03/04 17:48:16 eich Exp $
+ * $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c,v 1.1.4.1.4.2.4.1 2004/03/23 13:54:01 eich Exp $
* $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c,v 1.19 2002/06/06 21:03:32 paulo Exp $
*/
@@ -188,8 +188,7 @@ LoaderInitializeOptions(void)
first = 0;
checkerLegend[CHECKER_OPTIONS_FILE_MISSING] =
- "The Options file, normally /usr/X11R6/lib/X11/Options was not found.\n"
- "In the sources, it is at xc/programs/Xserver/hw/xfree86/Options.";
+ "The Options file, normally /usr/X11R6/lib/X11/Options was not found.\n";
checkerLegend[CHECKER_OPTION_DESCRIPTION_MISSING] =
"No description for the module option. The description should be in\n"
"in the Options file, and using the sintax:\n"
@@ -207,7 +206,7 @@ LoaderInitializeOptions(void)
checkerLegend[CHECKER_NO_OPTIONS_AVAILABLE] =
"The driver does not have an AvailableOptions function, or that\n"
"function is returning NULL. If the driver is returning NULL, and\n"
- "really does not need any options from XF86Config, than the message\n"
+ "really does not need any options from "__XCONFIGFILE__", than the message\n"
"can be ignored.";
checkerLegend[CHECKER_NO_VENDOR_CHIPSET] =
"The checker could not fetch the PCI chipset/vendor information from\n"
diff --git a/hw/xfree86/utils/xorgcfg/startx.c b/hw/xfree86/utils/xorgcfg/startx.c
index 038f21d38..9b70b70fd 100644
--- a/hw/xfree86/utils/xorgcfg/startx.c
+++ b/hw/xfree86/utils/xorgcfg/startx.c
@@ -64,10 +64,10 @@ startx(void)
*/
if (XFree86_path)
c_pos = XmuSnprintf(commandline, sizeof(commandline),
- "%s/XFree86 :8 -configure ",XFree86_path);
+ "%s/"__XSERVERNAME__" :8 -configure ",XFree86_path);
else
c_pos = XmuSnprintf(commandline, sizeof(commandline),
- "%s/bin/XFree86 :8 -configure ", XFree86Dir);
+ "%s/bin/"__XSERVERNAME__" :8 -configure ", XFree86Dir);
if (XF86Module_path && ((len = sizeof(commandline) - c_pos) > 0))
c_pos += XmuSnprintf(commandline + c_pos,len,
" -modulepath %s",XF86Module_path);
@@ -87,9 +87,9 @@ startx(void)
home = "/";
#ifndef QNX4
- XmuSnprintf(filename, sizeof(filename), "%s/XF86Config.new", home);
+ XmuSnprintf(filename, sizeof(filename), "%s/"__XCONFIGFILE__".new", home);
#else
- XmuSnprintf(filename, sizeof(filename), "//%d%s/XF86Config.new",
+ XmuSnprintf(filename, sizeof(filename), "//%d%s/"__XCONFIGFILE__".new",
getnid(), home);
#endif
@@ -106,9 +106,9 @@ startx(void)
char path[PATH_MAX];
/* Don't change to X! see above */
if (XFree86_path)
- XmuSnprintf(path, sizeof(path), "%s/XFree86", XFree86_path);
+ XmuSnprintf(path, sizeof(path), "%s/"__XSERVERNAME__, XFree86_path);
else
- XmuSnprintf(path, sizeof(path), "%s/bin/XFree86", XFree86Dir);
+ XmuSnprintf(path, sizeof(path), "%s/bin/"__XSERVERNAME__, XFree86Dir);
execl(path, "X", ":8", /*"+xinerama",*/ "+accessx","-allowMouseOpenFail",
"-xf86config", XF86Config_path, (void *)NULL);
exit(-127);
diff --git a/hw/xfree86/utils/xorgcfg/text-mode.c b/hw/xfree86/utils/xorgcfg/text-mode.c
index 3a257d047..73d9a2248 100644
--- a/hw/xfree86/utils/xorgcfg/text-mode.c
+++ b/hw/xfree86/utils/xorgcfg/text-mode.c
@@ -124,7 +124,7 @@ static char *main_menu[] = {
#define CONF_LAYOUT 5
"Configure layout",
#define CONF_FINISH 6
- "Write XF86Config and quit",
+ "Write "__XCONFIGFILE__" and quit",
#define CONF_QUIT 7
"Quit",
};
@@ -200,23 +200,23 @@ TextMode(void)
ClearScreen();
refresh();
- if (Dialog("XFree86 Configuration",
- "This program will create the XF86Config file, based on "
+ if (Dialog( __XSERVERNAME__"Configuration",
+ "This program will create the "__XCONFIGFILE__" file, based on "
"menu selections you make.\n"
"\n"
#ifndef __UNIXOS2__
- "The XF86Config file usually resides in /usr/X11R6/etc/X11 "
+ "The "__XCONFIGFILE__" file usually resides in /usr/X11R6/etc/X11 "
#else
- "The XF86Config file usually resides in "XF86CONFIGDIR" "
+ "The "__XCONFIGFILE__" file usually resides in "XF86CONFIGDIR" "
#endif
- "or /etc/X11. A sample XF86Config file is supplied with "
- "XFree86; it is configured for a standard VGA card and "
+ "or /etc/X11. A sample "__XCONFIGFILE__" file is supplied with "
+ __XSERVERNAME__"; it is configured for a standard VGA card and "
"monitor with 640x480 resolution. This program will ask for "
"a pathname when it is ready to write the file.\n"
"\n"
- "You can either take the sample XF86Config as a base and "
+ "You can either take the sample "__XCONFIGFILE__" as a base and "
"edit it for your configuration, or let this program "
- "produce a base XF86Config file for your configuration and "
+ "produce a base "__XCONFIGFILE__" file for your configuration and "
"fine-tune it.",
20, 60, " Ok ", " Cancel ", 0) != 0)
break;
@@ -295,12 +295,12 @@ WriteXF86Config(void)
ClearScreen();
refresh();
- xf86config = DialogInput("Write XF86Config", "Write configuration to file:",
+ xf86config = DialogInput("Write "__XCONFIGFILE__, "Write configuration to file:",
10, 60, XF86Config_path ? XF86Config_path :
#ifndef __UNIXOS2__
- "/etc/X11/XF86Config", " Ok ", " Cancel ", 0);
+ "/etc/X11/"__XCONFIGFILE__, " Ok ", " Cancel ", 0);
#else
- XF86CONFIGDIR"/XF86Config", " Ok ", " Cancel ", 0);
+ XF86CONFIGDIR"/"__XCONFIGFILE__, " Ok ", " Cancel ", 0);
#endif
if (xf86config == NULL)
@@ -711,7 +711,7 @@ KeyboardConfig(void)
#ifdef XFREE98_XKB
rulesfile = XKB_RULES_DIR "/xfree98";
#else
- rulesfile = XKB_RULES_DIR "/xfree86";
+ rulesfile = XKB_RULES_DIR "/"__XKBDEFRULES__;
#endif
rules = XkbRF_Load(rulesfile, "", True, False);
if (rules == NULL) {
diff --git a/hw/xfree86/utils/xorgcfg/xf86config.c b/hw/xfree86/utils/xorgcfg/xf86config.c
index e36915888..6d93afe34 100644
--- a/hw/xfree86/utils/xorgcfg/xf86config.c
+++ b/hw/xfree86/utils/xorgcfg/xf86config.c
@@ -24,7 +24,7 @@
* dealings in this Software without prior written authorization from
* Conectiva Linux.
*
- * Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
+ * Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
* $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/xf86config.c,v 1.5tsi Exp $
*/
diff --git a/hw/xfree86/utils/xorgcfg/xorgcfg.man.pre b/hw/xfree86/utils/xorgcfg/xorgcfg.man.pre
new file mode 100644
index 000000000..bade75d42
--- /dev/null
+++ b/hw/xfree86/utils/xorgcfg/xorgcfg.man.pre
@@ -0,0 +1,152 @@
+.\"
+.\" Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
+.\"
+.\" 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
+.\" CONECTIVA LINUX 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 Conectiva Linux shall
+.\" not be used in advertising or otherwise to promote the sale, use or other
+.\" dealings in this Software without prior written authorization from
+.\" Conectiva Linux.
+.\"
+.\" Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
+.\"
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/xf86cfg.man,v 1.9 2002/12/30 14:34:02 herrb Exp $
+.\"
+.TH xorgcfg __appmansuffix__ __vendorversion__
+.SH NAME
+xorgcfg - Graphical configuration tool for __xservername__
+.SH SYNOPSIS
+.B xorgcfg
+[-config\fI __xconfigfile__\fP] [-modulepath \fImoduledir\fP]
+[-fontpath \fIfontsdir\fP] [-toolkitoption ...]
+.SH DESCRIPTION
+.I Xorgcfg
+is a tool to configure\fI __xservername__\fP, and can be used to either write the
+initial configuration file or make customizations to the current configuration.
+.PP
+When the \fBDISPLAY\fP environment variable is not set, xorgcfg will run
+the command\fI __xservername__ -configure\fP to allow the xserver detect the
+hardware in the computer, and write an initial\fI __xconfigfile__\fP file
+in the user's home directory. Then, it will start
+__xservername__ and allow customizations.
+.br
+If the \fBDISPLAY\fP environment variable is set, xorgcfg will read the
+default\fI __xconfigfile__\fP, that may not be the same being used by the current
+server, and allow customizations.
+.PP
+To use an alternative location for modules or fonts the respective search
+paths may be specified.
+.PP
+Unless there is an \fBApply\fP button in the current xorgcfg dialog, the
+changes made will take place the next time\fI __xservername__\fP is started.
+
+.PP
+Xorgcfg allows addition and configuration of new devices, such as video cards,
+monitors, keyboards and mouses.
+.PP
+Screen layout configuration for xinerama or traditional multi-head is also
+available.
+.PP
+Modelines can be configured or optimized.
+.PP
+AccessX basic configurations can be made in the xorgcfg's accessx section.
+
+.SH OPTIONS
+.TP 8
+.I -config
+Specifies an alternate __xconfigfile__ file for configuration.
+.TP 8
+.I -modulepath
+Specifies where xorgcfg, and the server it may start, should look for
+__xservername__ modules.
+.TP 8
+.I -serverpath
+Specifies the complete path, not including the binary name, of the
+__xservername__ binary.
+.TP 8
+.I -fontpath
+Specifies the path to the fonts that should be used by the server started
+by xorgcfg.
+.TP 8
+.I -rgbpath
+Specifies the path to the rgb.txt file that should be used by the server
+started by xorgcfg, if any.
+.TP 8
+.I -textmode
+If xorgcfg was compiled with support to ncurses, this option makes xorgcfg
+enters a text mode interface.
+.TP 8
+.I -nomodules
+When built with support for loading modules, this options changes xorgcfg
+behaviour, so that it will not load any modules, and thus start quicker.
+
+.SH ENVIRONMENT
+.TP 8
+.I DISPLAY
+Default host and display number
+.TP 8
+.I XWINHOME
+Directory where __xservername__ was installed, defaults to /usr/X11R6.
+.TP 8
+.I XENVIRONMENT
+Name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property
+
+.SH FILES
+.TP 8
+.I /etc/__xconfigfile__
+Server configuration file
+.TP 8
+.I /etc/X11/__xconfigfile__
+Server configuration file
+.TP 8
+.I /usr/X11R6/etc/__xconfigfile__
+Server configuration file
+.TP 8
+.IR __projectroot__/lib/X11/__xconfigfile__. hostname
+Server configuration file
+.TP 8
+.I __projectroot__/lib/X11/__xconfigfile__
+Server configuration file
+.TP 8
+.I __projectroot__/lib/X11/app-default/XOrgCfg
+Specifies xorgcfg resources
+.TP 8
+.I __projectroot__/lib/X11/xkb/X0-config.keyboard
+Keyboard specific configuration
+
+.SH "SEE ALSO"
+.IR __xservername__ (__appmansuffix__)
+.IR __xconfigfile__ (__filemansuffix__)
+
+.SH COPYRIGHT
+.TP 8
+Copyright 2000, Conectiva Linux S.A.
+\fIhttp://www.conectiva.com\fP
+.TP 8
+Copyright 2000, The XFree86 Project
+\fIhttp://www.XFree86.org\fP
+
+.SH AUTHORS
+.TP 8
+Paulo C\'esar Pereira de Andrade \fI<pcpa@conectiva.com.br>\fP
+originally for The XFree86 Project.
+
+.SH BUGS
+Probably.
diff --git a/hw/xfree86/utils/xorgconfig/Cards b/hw/xfree86/utils/xorgconfig/Cards
index 857135de4..f6ce99cf5 100644
--- a/hw/xfree86/utils/xorgconfig/Cards
+++ b/hw/xfree86/utils/xorgconfig/Cards
@@ -2979,7 +2979,7 @@ NOCLOCKPROBE
NAME Appian Jeronimo 2000
CHIPSET PERMEDIA 3
-SERVER XFree86
+SERVER 3DLabs
DRIVER glint
NOCLOCKPROBE
diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.c b/hw/xfree86/utils/xorgconfig/xorgconfig.c
new file mode 100644
index 000000000..7f4c18d6a
--- /dev/null
+++ b/hw/xfree86/utils/xorgconfig/xorgconfig.c
@@ -0,0 +1,2906 @@
+/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c,v 3.69 2003/02/20 04:05:15 dawes Exp $ */
+
+/*
+ * This is a configuration program that will create a base XF86Config
+ * file based on menu choices. Its main feature is that clueless users
+ * may be less inclined to select crazy sync rates way over monitor spec,
+ * by presenting a menu with standard monitor types. Also some people
+ * don't read docs unless an executable that they can run tells them to.
+ *
+ * It assumes a 24-line or bigger text console.
+ *
+ * Revision history:
+ * 25Sep94 Initial version.
+ * 27Sep94 Fix hsync range of monitor types to match with best possible mode.
+ * Remove 'const'.
+ * Tweak descriptions.
+ * 28Sep94 Fixes from J"org Wunsch:
+ * Don't use gets().
+ * Add mouse device prompt.
+ * Fix lines overrun for 24-line console.
+ * Increase buffer size for probeonly output.
+ * 29Sep94 Fix bad bug with old XF86Config preserving during probeonly run.
+ * Add note about vertical refresh in interlaced modes.
+ * Name gets() replacement getstring().
+ * Add warning about binary paths.
+ * Fixes from David Dawes:
+ * Don't use 'ln -sf'.
+ * Omit man path reference in comment.
+ * Generate only a generic 320x200 SVGA section for accel cards.
+ * Only allow writing to /usr/X11R6/lib/X11 if root, and use
+ * -xf86config for the -probeonly phase (root only).
+ * Fix bug that forces screen type to accel in some cases.
+ * 30Sep94 Continue after clocks probe fails.
+ * Note about programmable clocks.
+ * Rename to 'xf86config'. Not to be confused with XF86Config
+ * or the -xf86config option.
+ * 07Oct94 Correct hsync in standard mode timings comments, and include
+ * the proper +/-h/vsync flags.
+ * 11Oct94 Skip 'numclocks:' and 'pixel clocks:' lines when probing for
+ * clocks.
+ * 18Oct94 Add check for existence of /usr/X11R6.
+ * Add note about ctrl-alt-backspace.
+ * 06Nov94 Add comment above standard mode timings in XF86Config.
+ * 24Dec94 Add low-resolution modes using doublescan.
+ * 29Dec94 Add note in horizontal sync range selection.
+ * Ask about ClearDTR/RTS option for Mouse Systems mice.
+ * Ask about writing to /etc/XF86Config.
+ * Allow link to be set in /var/X11R6/bin.
+ * Note about X -probeonly crashing.
+ * Add keyboard Alt binding option for non-ASCII characters.
+ * Add card database selection.
+ * Write temporary XF86Config for clock probing in /tmp instead
+ * of /usr/X11R6/lib/X11.
+ * Add RAMDAC and Clockchip menu.
+ * 27Mar99 Modified for XFree86 4.0 config file format
+ * 06Sep02 Write comment block about 'DontVTSwitch'.
+ *
+ * Possible enhancements:
+ * - Add more standard mode timings (also applies to README.Config). Missing
+ * are 1024x768 @ 72 Hz, 1152x900 modes, and 1280x1024 @ ~70 Hz.
+ * I suspect there is a VESA standard for 1024x768 @ 72 Hz with 77 MHz dot
+ * clock, and 1024x768 @ 75 Hz with 78.7 MHz dot clock. New types of
+ * monitors probably work better with VESA 75 Hz timings.
+ * - Add option for creation of clear, minimal XF86Config.
+ * - The card database doesn't include most of the entries in previous
+ * databases.
+ *
+ * Send comments to H.Hanemaayer@inter.nl.net.
+ *
+ * Things to keep up-to-date:
+ * - Accelerated server names.
+ * - Ramdac and Clockchip settings.
+ * - The card database.
+ *
+ */
+/* Oct2000
+ * New 'Configuration of XKB' section.
+ * Author: Ivan Pascal The XFree86 Project.
+ */
+/*
+ * Nov2002
+ * Some enhancements:
+ * - Add new PS/2 mouse protocol.
+ * "IMPS/2","ExplorerPS/2","ThinkingMousePS/2","MouseManPlusPS/2",
+ * "GlidePointPS/2","NetMousePS/2" and "NetScrollPS/2".
+ * - Add mouse-speed setting for PS/2 mouse.
+ * - Fix seg.fault problem on Solaris.
+ * - Add modestring "1400x1050"(for ATI Mobile-Rage).
+ * - Add videomemory 8192, 16384, 32768, 65536, 131072 and 262144.
+ * - Load "speedo" module.
+ * - Ready to DRI.
+ * - Load xtt module instead of freetype module.
+ * - Add font path "/fonts/TrueType/" and "/fonts/freefont/".
+ * Chisato Yamauchi(cyamauch@phyas.aichi-edu.ac.jp)
+ */
+/* $XConsortium: xf86config.c /main/21 1996/10/28 05:43:57 kaleb $ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* hv: fix a few EMX problems, will disappear with real UnixOS/2 */
+#ifdef __UNIXOS2__
+#define sync() /*nothing*/
+static int getuid() { return 0; }
+#endif
+
+
+#include <X11/Xlib.h>
+#include <X11/extensions/XKBstr.h>
+#include <X11/extensions/XKBrules.h>
+#define MAX_XKBOPTIONS 5
+
+#include "cards.h"
+
+
+/*
+ * Define the following to 310 to remove references to XFree86 features that
+ * have been added since XFree86 3.1 (e.g. DoubleScan modes).
+ * or to 311 to remove certain new modelines
+ */
+#define XFREE86_VERSION 400
+
+/*
+ * This is the filename of the temporary XF86Config file that is written
+ * when the program is told to probe clocks (which can only happen for
+ * root).
+ */
+#define TEMPORARY_XF86CONFIG_DIR_PREFIX "/tmp/.xf86config"
+#define TEMPORARY_XF86CONFIG_FILENAME "XF86Config.tmp"
+
+/*
+ * Define this to have /etc/X11/XF86Config prompted for as the default
+ * location to write the XF86Config file to.
+ */
+#define PREFER_XF86CONFIG_IN_ETC
+
+/*
+ * Define this to force the user to go through XKB configuration section.
+ *
+ */
+#define FORCE_XKB_DIALOG
+
+/*
+ * Configuration variables.
+ */
+
+#define MAX_CLOCKS_LINES 16
+
+#define DUMBCONFIG2 "dumbconfig.2"
+#define DUMBCONFIG3 "dumbconfig.3"
+#ifndef __UNIXOS2__
+#define XSERVERNAME_FOR_PROBE "X"
+#else
+#define XSERVERNAME_FOR_PROBE "/usr/X11R6/bin/"__XSERVERNAME__
+#endif
+
+/* some more vars to make path names in texts more flexible. OS/2 users
+ * may be more irritated than Unix users
+ */
+#ifndef PROJECTROOT
+#define PROJECTROOT "/usr/X11R6"
+#endif
+#define TREEROOT PROJECTROOT
+#define TREEROOTLX TREEROOT "/lib/X11"
+#define TREEROOTCFG TREEROOT "/etc/X11"
+#define MODULEPATH TREEROOT "/lib/modules"
+
+#ifndef XCONFIGFILE
+#define XCONFIGFILE "XF86Config"
+#endif
+#define CONFIGNAME XCONFIGFILE
+
+#ifndef XF86_VERSION_MAJOR
+#ifdef XVERSION
+#if XVERSION > 40000000
+#define XF86_VERSION_MAJOR (XVERSION / 10000000)
+#else
+#define XF86_VERSION_MAJOR (XVERSION / 1000)
+#endif
+#else
+#define XF86_VERSION_MAJOR 4
+#endif
+#endif
+
+
+int config_mousetype; /* Mouse. */
+int config_emulate3buttons;
+int config_chordmiddle;
+int config_cleardtrrts;
+char *config_pointerdevice;
+int config_altmeta; /* Keyboard. */
+int config_monitortype; /* Monitor. */
+char *config_hsyncrange;
+char *config_vsyncrange;
+char *config_monitoridentifier;
+int config_videomemory; /* Video card. */
+int config_screentype; /* mono, vga16, svga, accel */
+char *config_deviceidentifier;
+int config_numberofclockslines;
+char *config_clocksline[MAX_CLOCKS_LINES];
+char *config_modesline8bpp;
+char *config_modesline16bpp;
+char *config_modesline24bpp;
+int config_virtual; /* 1 (yes) or 0 (no) */
+int config_virtualx8bpp, config_virtualy8bpp;
+int config_virtualx16bpp, config_virtualy16bpp;
+int config_virtualx24bpp, config_virtualy24bpp;
+char *config_ramdac;
+char *config_dacspeed;
+char *config_clockchip;
+#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT) && !defined(PCVT_SUPPORT)
+char *config_keyboard_dev = "/dev/wskbd0";
+#endif
+int config_xkbdisable = 0;
+char *config_xkbrules;
+char *config_xkbmodel = "pc101";
+char *config_xkblayout = "us";
+char *config_xkbvariant = (char *) 0;
+char *config_xkboptions = (char *) 0;
+char *config_depth;
+
+char *temp_dir = "";
+
+/*
+ * These are from the selected card definition. Parameters from the
+ * definition are offered during the questioning about the video card.
+ */
+
+int card_selected; /* Card selected from database. */
+
+
+static void write_XF86Config(char *filename);
+
+
+/*
+ * This is the initial intro text that appears when the program is started.
+ */
+
+static char *intro_text =
+"\n"
+"This program will create a basic " CONFIGNAME " file, based on menu selections you\n"
+"make.\n"
+"\n"
+"The " CONFIGNAME " file usually resides in " TREEROOTCFG " or /etc/X11. A sample\n"
+CONFIGNAME " file is supplied with "__XSERVERNAME__"; it is configured for a standard\n"
+"VGA card and monitor with 640x480 resolution. This program will ask for a\n"
+"pathname when it is ready to write the file.\n"
+"\n"
+"You can either take the sample " CONFIGNAME " as a base and edit it for your\n"
+"configuration, or let this program produce a base " CONFIGNAME " file for your\n"
+"configuration and fine-tune it.\n"
+#if 0
+" Refer to " TREEROOTLX "/doc/README.Config\n"
+"for a detailed overview of the configuration process.\n"
+"\n"
+"(what should we change this section to?)\n"
+"For accelerated servers (including accelerated drivers in the SVGA server),\n"
+"there are many chipset and card-specific options and settings. This program\n"
+"does not know about these. On some configurations some of these settings must\n"
+"be specified. Refer to the server man pages and chipset-specific READMEs.\n"
+#endif
+"\n"
+"Before continuing with this program, make sure you know what video card\n"
+"you have, and preferably also the chipset it uses and the amount of video\n"
+"memory on your video card. SuperProbe may be able to help with this.\n"
+"\n"
+;
+
+static char *finalcomment_text =
+"File has been written. Take a look at it before running 'startx'. Note that\n"
+"the " CONFIGNAME " file must be in one of the directories searched by the server\n"
+"(e.g. /etc/X11) in order to be used. Within the server press\n"
+"ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,\n"
+"alt and backspace simultaneously immediately exits the server (use if\n"
+"the monitor doesn't sync for a particular mode).\n"
+"\n"
+"For further configuration, refer to the " XCONFIGFILE "(5) manual page.\n"
+"\n";
+
+static void *
+Malloc(int i) {
+ void *p;
+
+ p = malloc(i);
+ if (p == NULL) {
+ printf("Fatal malloc error\n");
+ exit(-1);
+ }
+ return p;
+}
+
+static char *
+Strdup(const char *s){
+ char *d;
+
+ d = Malloc(strlen(s) + 1);
+ strcpy(d, s);
+ return d;
+}
+
+static void
+createtmpdir(void) {
+ /* length of prefix + 20 (digits in 2**64) + 1 (slash) + 1 */
+ temp_dir = Malloc(strlen(TEMPORARY_XF86CONFIG_DIR_PREFIX) + 22);
+ sprintf(temp_dir, "%s%ld", TEMPORARY_XF86CONFIG_DIR_PREFIX,
+ (long)getpid());
+ if (mkdir(temp_dir, 0700) != 0) {
+ printf("Cannot create directory %s\n", temp_dir);
+ exit(-1);
+ }
+ /* append a slash */
+ strcat(temp_dir, "/");
+}
+
+
+void
+keypress(void) {
+ printf("Press enter to continue, or ctrl-c to abort.");
+ getchar();
+ printf("\n");
+}
+
+static void
+emptylines(void) {
+ int i;
+ for (i = 0; i < 50; i++)
+ printf("\n");
+}
+
+static int
+answerisyes(char *s)
+{
+ if (s[0] == '\'') /* For fools that type the ' literally. */
+ return tolower(s[1]) == 'y';
+ return tolower(s[0]) == 'y';
+}
+
+/*
+ * This is a replacement for gets(). Limit is 80 chars.
+ * The 386BSD descendants scream about using gets(), for good reason.
+ */
+
+static void
+getstring(char *s)
+{
+ char *cp;
+ if (fgets(s, 80, stdin) == NULL)
+ exit(1);
+ cp = strchr(s, '\n');
+ if (cp)
+ *cp=0;
+}
+
+/*
+ * Mouse configuration.
+ *
+ * (hv) OS/2 (__UNIXOS2__) only has an OS supported mouse, so user has no options
+ * the server will enable a third button automatically if there is one
+ * We also do the same for QNX4, since we use the OS mouse drivers.
+ */
+
+int M_OSMOUSE, M_WSMOUSE, M_AUTO,
+ M_SYSMOUSE, M_MOUSESYSTEMS, M_PS2,
+ M_MICROSOFT, M_BUSMOUSE, M_IMPS2,
+ M_EXPLORER_PS2, M_GLIDEPOINT_PS2, M_MOUSEMANPLUS_PS2,
+ M_NETMOUSE_PS2, M_NETSCROLL_PS2, M_THINKINGMOUSE_PS2,
+ M_ACECAD, M_GLIDEPOINT, M_INTELLIMOUSE,
+ M_LOGITECH, M_MMHITTAB, M_MMSERIES,
+ M_MOUSEMAN, M_THINKINGMOUSE;
+
+struct {
+ char *name;
+ int *ident;
+ char *desc;
+} mouse_info[] = {
+#if defined(__UNIXOS2__) || defined(QNX4)
+#define DEF_PROTO_STRING "OSMOUSE"
+ {"OSMOUSE", &M_OSMOUSE,
+ "OSMOUSE"
+ },
+#endif
+#ifdef WSCONS_SUPPORT
+#define WS_MOUSE_STRING "wsmouse"
+#define DEF_PROTO_STRING WS_MOUSE_STRING
+ {WS_MOUSE_STRING, &M_WSMOUSE,
+ "wsmouse protocol"
+ },
+#endif
+#ifndef DEF_PROTO_STRING
+#define DEF_PROTO_STRING "Auto"
+#endif
+ {"Auto", &M_AUTO,
+ "Auto detect"
+ },
+ {"SysMouse", &M_SYSMOUSE,
+ "SysMouse"
+ },
+#define M_MOUSESYSTEMS_STRING "MouseSystems"
+ {M_MOUSESYSTEMS_STRING, &M_MOUSESYSTEMS,
+ "Mouse Systems (3-button protocol)"
+ },
+ {"PS/2", &M_PS2,
+ "PS/2 Mouse"
+ },
+#define M_MICROSOFT_STRING "Microsoft"
+ {M_MICROSOFT_STRING, &M_MICROSOFT,
+ "Microsoft compatible (2-button protocol)"
+ },
+ {"Busmouse", &M_BUSMOUSE,
+ "Bus Mouse"
+ },
+#ifndef __FreeBSD__
+ {"IMPS/2", &M_IMPS2,
+ "IntelliMouse PS/2"
+ },
+ {"ExplorerPS/2", &M_EXPLORER_PS2,
+ "Explorer PS/2"
+ },
+ {"GlidePointPS/2", &M_GLIDEPOINT_PS2,
+ "GlidePoint PS/2"
+ },
+ {"MouseManPlusPS/2", &M_MOUSEMANPLUS_PS2,
+ "MouseManPlus PS/2"
+ },
+ {"NetMousePS/2", &M_NETMOUSE_PS2,
+ "NetMouse PS/2"
+ },
+ {"NetScrollPS/2", &M_NETSCROLL_PS2,
+ "NetScroll PS/2"
+ },
+ {"ThinkingMousePS/2", &M_THINKINGMOUSE_PS2,
+ "ThinkingMouse PS/2"
+ },
+#endif
+ {"AceCad", &M_ACECAD,
+ "AceCad"
+ },
+ {"GlidePoint", &M_GLIDEPOINT,
+ "GlidePoint"
+ },
+ {"IntelliMouse", &M_INTELLIMOUSE,
+ "Microsoft IntelliMouse"
+ },
+ {"Logitech", &M_LOGITECH,
+ "Logitech Mouse (serial, old type, Logitech protocol)"
+ },
+ {"MMHitTab", &M_MMHITTAB,
+ "MM HitTablet"
+ },
+ {"MMSeries", &M_MMSERIES,
+ "MM Series" /* XXXX These descriptions should be improved. */
+ },
+ {"MouseMan", &M_MOUSEMAN,
+ "Logitech MouseMan (Microsoft compatible)"
+ },
+ {"ThinkingMouse", &M_THINKINGMOUSE,
+ "ThinkingMouse"
+ },
+};
+
+#ifndef __UNIXOS2__
+static char *mouseintro_text =
+"First specify a mouse protocol type. Choose one from the following list:\n"
+"\n";
+
+static char *mousedev_text =
+"Now give the full device name that the mouse is connected to, for example\n"
+"/dev/tty00. Just pressing enter will use the default, /dev/mouse.\n"
+#ifdef WSCONS_SUPPORT
+"On systems with wscons, the default is /dev/wsmouse.\n"
+#endif
+#ifdef __FreeBSD__
+"On FreeBSD, the default is /dev/sysmouse.\n"
+#endif
+"\n";
+
+static char *mousecomment_text =
+"The recommended protocol is " DEF_PROTO_STRING ". If you have a very old mouse\n"
+"or don't want OS support or auto detection, and you have a two-button\n"
+"or three-button serial mouse, it is most likely of type " M_MICROSOFT_STRING ".\n"
+#ifdef WSCONS_SUPPORT
+"\n"
+"If your system uses the wscons console driver, with a PS/2 type mouse,\n"
+"select " WS_MOUSE_STRING ".\n"
+#endif
+"\n";
+
+static char *twobuttonmousecomment_text =
+"You have selected a two-button mouse protocol. It is recommended that you\n"
+"enable Emulate3Buttons.\n";
+
+static char *threebuttonmousecomment_text =
+"You have selected a three-button mouse protocol. It is recommended that you\n"
+"do not enable Emulate3Buttons, unless the third button doesn't work.\n";
+
+static char *unknownbuttonsmousecomment_text =
+"If your mouse has only two buttons, it is recommended that you enable\n"
+"Emulate3Buttons.\n";
+
+static char *microsoftmousecomment_text =
+"You have selected a Microsoft protocol mouse. If your mouse was made by\n"
+"Logitech, you might want to enable ChordMiddle which could cause the\n"
+"third button to work.\n";
+
+static char *mousesystemscomment_text =
+"You have selected a Mouse Systems protocol mouse. If your mouse is normally\n"
+"in Microsoft-compatible mode, enabling the ClearDTR and ClearRTS options\n"
+"may cause it to switch to Mouse Systems mode when the server starts.\n";
+
+static char *logitechmousecomment_text =
+"You have selected a Logitech protocol mouse. This is only valid for old\n"
+"Logitech mice.\n";
+
+static char *mousemancomment_text =
+"You have selected a Logitech MouseMan type mouse. You might want to enable\n"
+"ChordMiddle which could cause the third button to work.\n";
+
+#endif /* !__UNIXOS2__ */
+
+static void
+mouse_configuration(void) {
+
+#if !defined(__UNIXOS2__) && !defined(QNX4)
+ int i, j;
+ char s[80];
+
+#define MOUSETYPE_COUNT sizeof(mouse_info)/sizeof(mouse_info[0])
+ for (i = 0; i < MOUSETYPE_COUNT; i++)
+ *(mouse_info[i].ident) = i;
+
+ for (i=0;;) {
+ emptylines();
+ printf("%s", mouseintro_text);
+ for (j = i; j < i + 14 && j < MOUSETYPE_COUNT; j++)
+ printf("%2d. %s\n", j + 1, mouse_info[j].name);
+ printf("\n");
+ printf("%s", mousecomment_text);
+ printf("Enter a protocol number: ");
+ getstring(s);
+ if (strlen(s) == 0) {
+ i += 14;
+ if (i >= MOUSETYPE_COUNT)
+ i = 0;
+ continue;
+ }
+ config_mousetype = atoi(s) - 1;
+ if (config_mousetype >= 0 && config_mousetype < MOUSETYPE_COUNT)
+ break;
+ }
+ printf("\n");
+
+ if (config_mousetype == M_LOGITECH) {
+ /* Logitech. */
+ printf("%s", logitechmousecomment_text);
+ printf("\n");
+ printf("Please answer the following question with either 'y' or 'n'.\n");
+ printf("Are you sure it's really not a Microsoft compatible one? ");
+ getstring(s);
+ if (!answerisyes(s))
+ config_mousetype = M_MICROSOFT;
+ printf("\n");
+ }
+
+ config_chordmiddle = 0;
+ if (config_mousetype == M_MICROSOFT || config_mousetype == M_MOUSEMAN) {
+ /* Microsoft or MouseMan. */
+ if (config_mousetype == M_MICROSOFT)
+ printf("%s", microsoftmousecomment_text);
+ else
+ printf("%s", mousemancomment_text);
+ printf("\n");
+ printf("Please answer the following question with either 'y' or 'n'.\n");
+ printf("Do you want to enable ChordMiddle? ");
+ getstring(s);
+ if (answerisyes(s))
+ config_chordmiddle = 1;
+ printf("\n");
+ }
+
+ config_cleardtrrts = 0;
+ if (config_mousetype == M_MOUSESYSTEMS) {
+ /* Mouse Systems. */
+ printf("%s", mousesystemscomment_text);
+ printf("\n");
+ printf("Please answer the following question with either 'y' or 'n'.\n");
+ printf("Do you want to enable ClearDTR and ClearRTS? ");
+ getstring(s);
+ if (answerisyes(s))
+ config_cleardtrrts = 1;
+ printf("\n");
+ }
+
+ if (config_mousetype == M_MICROSOFT) {
+ if (config_chordmiddle)
+ printf("%s", threebuttonmousecomment_text);
+ else
+ printf("%s", twobuttonmousecomment_text);
+ }
+ else if (config_mousetype == M_MOUSESYSTEMS ||
+ config_mousetype == M_INTELLIMOUSE) {
+ printf("%s", threebuttonmousecomment_text);
+ }
+ else {
+ printf("%s", unknownbuttonsmousecomment_text);
+ }
+
+ printf("\n");
+
+ printf("Please answer the following question with either 'y' or 'n'.\n");
+ printf("Do you want to enable Emulate3Buttons? ");
+ getstring(s);
+ if (answerisyes(s))
+ config_emulate3buttons = 1;
+ else
+ config_emulate3buttons = 0;
+ printf("\n");
+
+ printf("%s", mousedev_text);
+ printf("Mouse device: ");
+ getstring(s);
+ if (strlen(s) == 0)
+#ifdef WSCONS_SUPPORT
+ config_pointerdevice = "/dev/wsmouse";
+#elif defined(__FreeBSD__)
+ config_pointerdevice = "/dev/sysmouse";
+#else
+ config_pointerdevice = "/dev/mouse";
+#endif
+ else {
+ config_pointerdevice = Malloc(strlen(s) + 1);
+ strcpy(config_pointerdevice, s);
+ }
+ printf("\n");
+
+#else /* __UNIXOS2__ */
+ /* set some reasonable defaults for OS/2 */
+ config_mousetype = M_OSMOUSE;
+ config_chordmiddle = 0;
+ config_cleardtrrts = 0;
+ config_emulate3buttons = 0;
+#if !defined(QNX4)
+ config_pointerdevice = "OS2MOUSE";
+#else
+ config_pointerdevice = "QNXMOUSE";
+#endif
+#endif /* __UNIXOS2__ */
+}
+
+
+/*
+ * Keyboard configuration.
+ */
+
+/*
+ * Configuration of XKB
+ */
+static char *xkbmodeltext =
+"Please select one of the following keyboard types that is the better\n"
+"description of your keyboard. If nothing really matches,\n"
+"choose 1 (Generic 101-key PC)\n\n";
+
+static char *xkblayouttext =
+"Please select the layout corresponding to your keyboard\n";
+
+static char *xkbvarianttext =
+"Please enter a variant name for '%s' layout. Or just press enter\n"
+"for default variant\n\n";
+
+static char *xkboptionstext =
+"Please answer the following question with either 'y' or 'n'.\n"
+"Do you want to select additional XKB options (group switcher,\n"
+"group indicator, etc.)? ";
+
+#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT) && !defined(PCVT_SUPPORT)
+static char *kbdevtext =
+"Please enter the device name for your keyboard or just press enter\n"
+"for the default of wskbd0\n\n";
+#endif
+
+static void
+keyboard_configuration(void)
+{
+ int i, j;
+ char s[80];
+ char *rulesfile;
+ int number, options[MAX_XKBOPTIONS], num_options;
+ XkbRF_RulesPtr rules;
+
+#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT) && !defined(PCVT_SUPPORT)
+ printf(kbdevtext);
+ getstring(s);
+ if (strlen(s) != 0) {
+ config_keyboard_dev = Malloc(strlen(s) + 1);
+ strcpy(config_keyboard_dev, s);
+ }
+#endif
+
+#ifdef XFREE98_XKB
+ config_xkbrules = "xfree98"; /* static */
+ rulesfile = XKB_RULES_DIR "/xfree98";
+#else
+ config_xkbrules = __XKBDEFRULES__; /* static */
+ rulesfile = XKB_RULES_DIR "/";
+#endif
+
+ rules = XkbRF_Load(rulesfile, "", True, False);
+ emptylines();
+
+ if (!rules) {
+ printf("XKB rules file '%s' not found\n", rulesfile);
+ printf("Keyboard XKB options will be set to default values.\n");
+ keypress();
+ return;
+ }
+
+ number = -1;
+ for (i=0;;) {
+ emptylines();
+ printf(xkbmodeltext);
+ for (j = i; j < i + 16 && j < rules->models.num_desc; j++)
+ printf("%3d %-50s\n", j+1, rules->models.desc[j].desc);
+ printf("\nEnter a number to choose the keyboard.\n\n");
+ if (rules->models.num_desc >= 16)
+ printf("Press enter for the next page\n");
+ getstring(s);
+ if (strlen(s) == 0) {
+ i += 16;
+ if (i > rules->models.num_desc)
+ i = 0;
+ continue;
+ }
+ number = atoi(s) - 1;
+ if (number >= 0 && number < rules->models.num_desc)
+ break;
+ }
+
+ i = strlen(rules->models.desc[number].name) + 1;
+ config_xkbmodel = Malloc(i);
+ sprintf(config_xkbmodel,"%s", rules->models.desc[number].name);
+
+ emptylines();
+ printf(xkblayouttext);
+
+ number = -1;
+ for (i=0;;) {
+ emptylines();
+ for (j = i; j < i + 18 && j < rules->layouts.num_desc; j++)
+ printf("%3d %-50s\n", j+1,
+ rules->layouts.desc[j].desc);
+ printf("\n");
+ printf("Enter a number to choose the country.\n");
+ if (rules->layouts.num_desc >= 18)
+ printf("Press enter for the next page\n");
+ printf("\n");
+ getstring(s);
+ if (strlen(s) == 0) {
+ i += 18;
+ if (i > rules->layouts.num_desc)
+ i = 0;
+ continue;
+ }
+ number = atoi(s) - 1;
+ if (number >= 0 && number < rules->layouts.num_desc)
+ break;
+ }
+ config_xkblayout = Malloc(strlen(rules->layouts.desc[number].name)+1);
+ sprintf(config_xkblayout,"%s", rules->layouts.desc[number].name);
+
+ emptylines();
+ printf(xkbvarianttext, config_xkblayout);
+ getstring(s);
+ if (strlen(s) != 0) {
+ config_xkbvariant = Malloc(strlen(s) + 1);
+ strcpy(config_xkbvariant, s);
+ }
+
+ emptylines();
+ printf(xkboptionstext);
+ getstring(s);
+ if (!answerisyes(s))
+ return;
+
+ num_options = 0;
+ for (j=0,i=0;;) {
+ if (!strchr(rules->options.desc[i].name, ':')) {
+ emptylines();
+ printf(" %s\n\n", rules->options.desc[i].desc);
+ j = i;
+ } else {
+ printf("%3d %-50s\n", i - j, rules->options.desc[i].desc);
+ }
+ i++;
+ if ( i == rules->options.num_desc ||
+ !strchr(rules->options.desc[i].name, ':')) {
+ printf("\nPlease select the option or just press enter if none\n");
+ getstring(s);
+ if (strlen(s) != 0) {
+ number = atoi(s);
+ if (number && (num_options < MAX_XKBOPTIONS)) {
+ options[num_options++] = number + j;
+ }
+ }
+ }
+ if (i == rules->options.num_desc)
+ break;
+ }
+
+ if (!num_options)
+ return;
+
+ for (j=0,i=0; i<num_options; i++) {
+ j += strlen(rules->options.desc[options[i]].name);
+ }
+ config_xkboptions = Malloc(j + num_options);
+ for (j=0,i=0; i<num_options; i++) {
+ j += sprintf(config_xkboptions+j,"%s%s",
+ i == 0 ? "": "," ,rules->options.desc[options[i]].name);
+ }
+ return;
+}
+
+
+
+/*
+ * Monitor configuration.
+ */
+
+static char *monitorintro_text =
+"Now we want to set the specifications of the monitor. The two critical\n"
+"parameters are the vertical refresh rate, which is the rate at which the\n"
+"the whole screen is refreshed, and most importantly the horizontal sync rate,\n"
+"which is the rate at which scanlines are displayed.\n"
+"\n"
+"The valid range for horizontal sync and vertical sync should be documented\n"
+"in the manual of your monitor. If in doubt, check the monitor database\n"
+TREEROOTLX "/doc/Monitors to see if your monitor is there.\n"
+"\n";
+
+static char *hsyncintro_text =
+"You must indicate the horizontal sync range of your monitor. You can either\n"
+"select one of the predefined ranges below that correspond to industry-\n"
+"standard monitor types, or give a specific range.\n"
+"\n"
+"It is VERY IMPORTANT that you do not specify a monitor type with a horizontal\n"
+"sync range that is beyond the capabilities of your monitor. If in doubt,\n"
+"choose a conservative setting.\n"
+"\n";
+
+static char *customhsync_text =
+"Please enter the horizontal sync range of your monitor, in the format used\n"
+"in the table of monitor types above. You can either specify one or more\n"
+"continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.\n"
+"\n";
+
+static char *vsyncintro_text =
+"You must indicate the vertical sync range of your monitor. You can either\n"
+"select one of the predefined ranges below that correspond to industry-\n"
+"standard monitor types, or give a specific range. For interlaced modes,\n"
+"the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).\n"
+"\n"
+" 1 50-70\n"
+" 2 50-90\n"
+" 3 50-100\n"
+" 4 40-150\n"
+" 5 Enter your own vertical sync range\n";
+
+static char *monitordescintro_text =
+"You must now enter a few identification/description strings, namely an\n"
+"identifier, a vendor name, and a model name. Just pressing enter will fill\n"
+"in default names.\n"
+"\n";
+
+#define NU_MONITORTYPES 10
+
+static char *monitortype_range[NU_MONITORTYPES] = {
+ "31.5",
+ "31.5 - 35.1",
+ "31.5, 35.5",
+ "31.5, 35.15, 35.5",
+ "31.5 - 37.9",
+ "31.5 - 48.5",
+ "31.5 - 57.0",
+ "31.5 - 64.3",
+ "31.5 - 79.0",
+ "31.5 - 82.0"
+};
+
+static char *monitortype_name[NU_MONITORTYPES] = {
+ "Standard VGA, 640x480 @ 60 Hz",
+ "Super VGA, 800x600 @ 56 Hz",
+ "8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)",
+ "Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz",
+ "Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz",
+ "Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz",
+ "High Frequency SVGA, 1024x768 @ 70 Hz",
+ "Monitor that can do 1280x1024 @ 60 Hz",
+ "Monitor that can do 1280x1024 @ 74 Hz",
+ "Monitor that can do 1280x1024 @ 76 Hz"
+};
+
+static void
+monitor_configuration(void) {
+ int i;
+ char s[80];
+ printf("%s", monitorintro_text);
+
+ keypress();
+ emptylines();
+
+ printf("%s", hsyncintro_text);
+
+ printf(" hsync in kHz; monitor type with characteristic modes\n");
+ for (i = 0; i < NU_MONITORTYPES; i++)
+ printf("%2d %s; %s\n", i + 1, monitortype_range[i],
+ monitortype_name[i]);
+
+ printf("%2d Enter your own horizontal sync range\n",
+ NU_MONITORTYPES + 1);
+ printf("\n");
+
+ printf("Enter your choice (1-%d): ", NU_MONITORTYPES + 1);
+ getstring(s);
+ config_monitortype = atoi(s) - 1;
+ if (config_monitortype < 0)
+ config_monitortype = 0;
+
+ printf("\n");
+
+ if (config_monitortype < NU_MONITORTYPES)
+ config_hsyncrange = monitortype_range[config_monitortype];
+ else {
+ /* Custom hsync range option selected. */
+ printf("%s", customhsync_text);
+ printf("Horizontal sync range: ");
+ getstring(s);
+ config_hsyncrange = Malloc(strlen(s) + 1);
+ strcpy(config_hsyncrange, s);
+ printf("\n");
+ }
+
+ printf("%s", vsyncintro_text);
+ printf("\n");
+
+ printf("Enter your choice: ");
+ getstring(s);
+ printf("\n");
+ switch (atoi(s)) {
+ case 0 :
+ case 1 :
+ config_vsyncrange = "50-70";
+ break;
+ case 2 :
+ config_vsyncrange = "50-90";
+ break;
+ case 3 :
+ config_vsyncrange = "50-100";
+ break;
+ case 4 :
+ config_vsyncrange = "40-150";
+ break;
+ case 5 :
+ /* Custom vsync range option selected. */
+ printf("Vertical sync range: ");
+ getstring(s);
+ config_vsyncrange = Malloc(strlen(s) + 1);
+ strcpy(config_vsyncrange, s);
+ printf("\n");
+ break;
+ }
+ printf("%s", monitordescintro_text);
+ printf("The strings are free-form, spaces are allowed.\n");
+ printf("Enter an identifier for your monitor definition: ");
+ getstring(s);
+ if (strlen(s) == 0)
+ config_monitoridentifier = "My Monitor";
+ else {
+ config_monitoridentifier = Malloc(strlen(s) + 1);
+ strcpy(config_monitoridentifier, s);
+ }
+}
+
+
+/*
+ * Card database.
+ */
+
+static char *cardintro_text =
+"Now we must configure video card specific settings. At this point you can\n"
+"choose to make a selection out of a database of video card definitions.\n"
+"Because there can be variation in Ramdacs and clock generators even\n"
+"between cards of the same model, it is not sensible to blindly copy\n"
+"the settings (e.g. a Device section). For this reason, after you make a\n"
+"selection, you will still be asked about the components of the card, with\n"
+"the settings from the chosen database entry presented as a strong hint.\n"
+"\n"
+"The database entries include information about the chipset, what driver to\n"
+"run, the Ramdac and ClockChip, and comments that will be included in the\n"
+"Device section. However, a lot of definitions only hint about what driver\n"
+"to run (based on the chipset the card uses) and are untested.\n"
+"\n"
+"If you can't find your card in the database, there's nothing to worry about.\n"
+"You should only choose a database entry that is exactly the same model as\n"
+"your card; choosing one that looks similar is just a bad idea (e.g. a\n"
+"GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of\n"
+"hardware as can be).\n"
+"\n";
+
+static char *cardunsupported_text =
+"This card is basically UNSUPPORTED. It may only work as a generic\n"
+"VGA-compatible card. If you have an "__XSERVERNAME__" version more recent than what\n"
+"this card definition was based on, there's a chance that it is now\n"
+"supported.\n";
+
+static void
+carddb_configuration(void) {
+ int i;
+ char s[80];
+ card_selected = -1;
+ printf("%s", cardintro_text);
+ printf("Do you want to look at the card database? ");
+ getstring(s);
+ printf("\n");
+ if (!answerisyes(s))
+ return;
+
+ /*
+ * Choose a database entry.
+ */
+ if (parse_database()) {
+ printf("Couldn't read card database file %s.\n",
+ CARD_DATABASE_FILE);
+ keypress();
+ return;
+ }
+
+ i = 0;
+ for (;;) {
+ int j;
+ emptylines();
+ for (j = i; j < i + 18 && j <= lastcard; j++) {
+ char *name = card[j].name,
+ *chipset = card[j].chipset;
+
+ printf("%3d %-50s%s\n", j,
+ name ? name : "-",
+ chipset ? chipset : "-");
+ }
+ printf("\n");
+ printf("Enter a number to choose the corresponding card definition.\n");
+ printf("Press enter for the next page, q to continue configuration.\n");
+ printf("\n");
+ getstring(s);
+ if (s[0] == 'q')
+ break;
+ if (strlen(s) == 0) {
+ i += 18;
+ if (i > lastcard)
+ i = 0;
+ continue;
+ }
+ card_selected = atoi(s);
+ if (card_selected >= 0 && card_selected <= lastcard)
+ break;
+ }
+
+ /*
+ * Look at the selected card.
+ */
+ if (card_selected != -1) {
+ char *name = card[card_selected].name,
+ *chipset = card[card_selected].chipset;
+
+ printf("\nYour selected card definition:\n\n");
+ printf("Identifier: %s\n", name ? name : "-");
+ printf("Chipset: %s\n", chipset ? chipset : "-");
+ if (!card[card_selected].driver)
+ card[card_selected].driver = "unknown";
+ printf("Driver: %s\n", card[card_selected].driver);
+
+ if (card[card_selected].ramdac != NULL)
+ printf("Ramdac: %s\n", card[card_selected].ramdac);
+ if (card[card_selected].dacspeed != NULL)
+ printf("DacSpeed: %s\n", card[card_selected].dacspeed);
+ if (card[card_selected].clockchip != NULL)
+ printf("Clockchip: %s\n", card[card_selected].clockchip);
+ if (card[card_selected].flags & NOCLOCKPROBE)
+ printf("Do NOT probe clocks or use any Clocks line.\n");
+ if (card[card_selected].flags & UNSUPPORTED)
+ printf("%s", cardunsupported_text);
+#if 0 /* Might be confusing. */
+ if (strlen(card[card_selected].lines) > 0)
+ printf("Device section text:\n%s",
+ card[card_selected].lines);
+#endif
+ printf("\n");
+ keypress();
+ }
+}
+
+
+/*
+ * Screen/video card configuration.
+ */
+
+static char *deviceintro_text =
+"Now you must give information about your video card. This will be used for\n"
+"the \"Device\" section of your video card in " CONFIGNAME ".\n"
+"\n";
+
+static char *videomemoryintro_text =
+"It is probably a good idea to use the same approximate amount as that detected\n"
+"by the server you intend to use. If you encounter problems that are due to the\n"
+"used server not supporting the amount memory you have, specify the maximum\n"
+"amount supported by the server.\n"
+"\n"
+"How much video memory do you have on your video card:\n"
+"\n";
+
+static char *carddescintro_text =
+"You must now enter a few identification/description strings, namely an\n"
+"identifier, a vendor name, and a model name. Just pressing enter will fill\n"
+"in default names (possibly from a card definition).\n"
+"\n";
+
+#if 0
+static char *devicesettingscomment_text =
+"Especially for accelerated drivers, Ramdac, Dacspeed and ClockChip settings\n"
+"or special options may be required in the Device section.\n"
+"\n";
+
+static char *ramdaccomment_text =
+"The RAMDAC setting only applies to some drivers. Some RAMDAC's are\n"
+"auto-detected by the server. The detection of a RAMDAC is forced by using a\n"
+"Ramdac \"identifier\" line in the Device section. The identifiers are shown\n"
+"at the right of the following table of RAMDAC types:\n"
+"\n";
+
+#define NU_RAMDACS 24
+
+static char *ramdac_name[NU_RAMDACS] = {
+ "AT&T 20C490 (S3 and AGX servers, ARK driver)",
+ "AT&T 20C498/21C498/22C498 (S3, autodetected)",
+ "AT&T 20C409/20C499 (S3, autodetected)",
+ "AT&T 20C505 (S3)",
+ "BrookTree BT481 (AGX)",
+ "BrookTree BT482 (AGX)",
+ "BrookTree BT485/9485 (S3)",
+ "Sierra SC15025 (S3, AGX)",
+#if XFREE86_VERSION >= 311
+ "S3 GenDAC (86C708) (autodetected)",
+ "S3 SDAC (86C716) (autodetected)",
+#else
+ "S3 GenDAC (86C708)",
+ "S3 SDAC (86C716)",
+#endif
+ "STG-1700 (S3, autodetected)",
+ "STG-1703 (S3, autodetected)",
+ "TI 3020 (S3, autodetected)",
+ "TI 3025 (S3, autodetected)",
+ "TI 3026 (S3, autodetected)",
+ "IBM RGB 514 (S3, autodetected)",
+ "IBM RGB 524 (S3, autodetected)",
+ "IBM RGB 525 (S3, autodetected)",
+ "IBM RGB 526 (S3)",
+ "IBM RGB 528 (S3, autodetected)",
+ "ICS5342 (S3, ARK)",
+ "ICS5341 (W32)",
+ "IC Works w30C516 ZoomDac (ARK)",
+ "Normal DAC"
+};
+
+static char *ramdac_id[NU_RAMDACS] = {
+ "att20c490", "att20c498", "att20c409", "att20c505", "bt481", "bt482",
+ "bt485", "sc15025", "s3gendac", "s3_sdac", "stg1700","stg1703",
+ "ti3020", "ti3025", "ti3026", "ibm_rgb514", "ibm_rgb524",
+ "ibm_rgb525", "ibm_rgb526", "ibm_rgb528", "ics5342", "ics5341",
+ "zoomdac", "normal"
+};
+
+static char *clockchipcomment_text =
+"A Clockchip line in the Device section forces the detection of a\n"
+"programmable clock device. With a clockchip enabled, any required\n"
+"clock can be programmed without requiring probing of clocks or a\n"
+"Clocks line. Most cards don't have a programmable clock chip.\n"
+"Choose from the following list:\n"
+"\n";
+
+#define NU_CLOCKCHIPS 12
+
+static char *clockchip_name[] = {
+ "Chrontel 8391",
+ "ICD2061A and compatibles (ICS9161A, DCS2824)",
+ "ICS2595",
+ "ICS5342 (similar to SDAC, but not completely compatible)",
+ "ICS5341",
+ "S3 GenDAC (86C708) and ICS5300 (autodetected)",
+ "S3 SDAC (86C716)",
+ "STG 1703 (autodetected)",
+ "Sierra SC11412",
+ "TI 3025 (autodetected)",
+ "TI 3026 (autodetected)",
+ "IBM RGB 51x/52x (autodetected)",
+};
+
+static char *clockchip_id[] = {
+ "ch8391", "icd2061a", "ics2595", "ics5342", "ics5341",
+ "s3gendac", "s3_sdac",
+ "stg1703", "sc11412", "ti3025", "ti3026", "ibm_rgb5xx",
+};
+
+static char *deviceclockscomment_text =
+"For most modern configurations, a Clocks line is neither required or\n"
+"desirable. However for some older hardware it can be useful since it\n"
+"prevents the slow and nasty sounding clock probing at server start-up.\n"
+"Probed clocks are displayed at server startup, along with other server\n"
+"and hardware configuration info. You can save this information in a file\n"
+"by running 'X -probeonly 2>output_file'. Be warned that clock probing is\n"
+"inherently imprecise; some clocks may be slightly too high (varies per run).\n"
+"\n";
+
+static char *deviceclocksquestion_text =
+"At this point I can run X -probeonly, and try to extract the clock information\n"
+"from the output. It is recommended that you do this yourself and if a set of\n"
+"clocks is shown then you add a clocks line (note that the list of clocks may\n"
+"be split over multiple Clocks lines) to your Device section afterwards. Be\n"
+"aware that a clocks line is not appropriate for most modern hardware that\n"
+"has programmable clocks.\n"
+"\n"
+"You must be root to be able to run X -probeonly now.\n"
+"\n";
+
+static char *probeonlywarning_text =
+"It is possible that the hardware detection routines in the server will somehow\n"
+"cause the system to crash and the screen to remain blank. If this is the\n"
+"case, do not choose this option the next time. The server may need a\n"
+"Ramdac, ClockChip or special option (e.g. \"nolinear\" for S3) to probe\n"
+"and start-up correctly.\n"
+"\n";
+#endif
+
+static char *modesorderintro_text =
+"For each depth, a list of modes (resolutions) is defined. The default\n"
+"resolution that the server will start-up with will be the first listed\n"
+"mode that can be supported by the monitor and card.\n"
+"Currently it is set to:\n"
+"\n";
+
+static char *modesorder_text2 =
+"Modes that cannot be supported due to monitor or clock constraints will\n"
+"be automatically skipped by the server.\n"
+"\n"
+" 1 Change the modes for 8-bit (256 colors)\n"
+" 2 Change the modes for 16-bit (32K/64K colors)\n"
+" 3 Change the modes for 24-bit (24-bit color)\n"
+" 4 The modes are OK, continue.\n"
+"\n";
+
+static char *modeslist_text =
+"Please type the digits corresponding to the modes that you want to select.\n"
+"For example, 432 selects \"1024x768\" \"800x600\" \"640x480\", with a\n"
+"default mode of 1024x768.\n"
+"\n";
+
+static char *virtual_text =
+"You can have a virtual screen (desktop), which is screen area that is larger\n"
+"than the physical screen and which is panned by moving the mouse to the edge\n"
+"of the screen. If you don't want virtual desktop at a certain resolution,\n"
+"you cannot have modes listed that are larger. Each color depth can have a\n"
+"differently-sized virtual screen\n"
+"\n";
+
+static int videomemory[] = {
+ 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144
+};
+
+/* Is this required? */
+#if XFREE86_VERSION >= 400
+#define NU_MODESTRINGS 13
+#else
+#if XFREE86_VERSION >= 330
+#define NU_MODESTRINGS 12
+#else
+#if XFREE86_VERSION >= 311
+#define NU_MODESTRINGS 8
+#else
+#define NU_MODESTRINGS 5
+#endif
+#endif
+#endif
+
+static char *modestring[NU_MODESTRINGS] = {
+ "\"640x400\"",
+ "\"640x480\"",
+ "\"800x600\"",
+ "\"1024x768\"",
+ "\"1280x1024\"",
+#if XFREE86_VERSION >= 311
+ "\"320x200\"",
+ "\"320x240\"",
+ "\"400x300\""
+#endif
+#if XFREE86_VERSION >= 330
+ ,"\"1152x864\"",
+ "\"1600x1200\"",
+ "\"1800x1400\"",
+ "\"512x384\""
+#endif
+#if XFREE86_VERSION >= 400
+ ,"\"1400x1050\""
+#endif
+};
+
+#ifdef __EMX__
+/* yet another instance of this code, sigh! */
+char *
+__XOS2RedirRoot(char *path, char sep)
+{
+ static char pn[300];
+ char *root;
+ int i,l;
+ if ((isalpha(path[0]) && path[1]==':') || path[0] != '/')
+ return path;
+
+ root = getenv("X11ROOT");
+ if (!root) root = "";
+ sprintf(pn,"%s%s",root,path);
+ if (sep=='\\') {
+ l = strlen(pn);
+ for (i=0; i<l; i++)
+ if (pn[i]=='/') pn[i]='\\';
+ }
+ return pn;
+}
+#endif
+
+/* (hv) to avoid the UNIXISM to try to open a dir to check for existance */
+static int exists_dir(char *name) {
+ struct stat sbuf;
+
+#ifdef __EMX__
+ name = __XOS2RedirRoot(name,'/');
+#endif
+ /* is it there ? */
+ if (stat(name,&sbuf) == -1)
+ return 0;
+
+ /* is there, but is it a dir? */
+ return S_ISDIR(sbuf.st_mode) ? 1 : 0;
+}
+
+static void
+screen_configuration(void) {
+ int i, c/*, np*/;
+ char s[80];
+
+ /*
+ * Configure the "Device" section for the video card.
+ */
+
+ printf("%s", deviceintro_text);
+
+ printf("%s", videomemoryintro_text);
+
+ for (i = 0; i < sizeof(videomemory) / sizeof(videomemory[0]); i++)
+ printf("%2d %dK\n", i + 1, videomemory[i]);
+ printf("%2d Other\n\n", i + 1);
+
+ printf("Enter your choice: ");
+ getstring(s);
+ printf("\n");
+
+ c = atoi(s) - 1;
+ if (c >= 0 && c < sizeof(videomemory) / sizeof(videomemory[0]))
+ config_videomemory = videomemory[c];
+ else {
+ printf("Amount of video memory in Kbytes: ");
+ getstring(s);
+ config_videomemory = atoi(s);
+ printf("\n");
+ }
+
+ printf("%s", carddescintro_text);
+ if (card_selected != -1)
+ printf("Your card definition is %s.\n\n",
+ card[card_selected].name);
+ printf("The strings are free-form, spaces are allowed.\n");
+ printf("Enter an identifier for your video card definition: ");
+ getstring(s);
+ if (strlen(s) == 0)
+ if (card_selected != -1)
+ config_deviceidentifier = card[card_selected].name;
+ else
+ config_deviceidentifier = "My Video Card";
+ else {
+ config_deviceidentifier = Malloc(strlen(s) + 1);
+ strcpy(config_deviceidentifier, s);
+ }
+ printf("\n");
+
+ emptylines();
+
+ /*
+ * Initialize screen mode variables for svga and accel
+ * to default values.
+ * XXXX Doesn't leave room for off-screen caching in 16/32bpp modes
+ * for the accelerated servers in some situations.
+ */
+ config_modesline8bpp =
+ config_modesline16bpp =
+ config_modesline24bpp = "\"640x480\"";
+ config_virtualx8bpp = config_virtualx16bpp = config_virtualx24bpp =
+ config_virtualy8bpp = config_virtualy16bpp = config_virtualy24bpp = 0;
+ if (config_videomemory >= 4096) {
+ config_virtualx8bpp = 1600;
+ config_virtualy8bpp = 1280;
+ if (card_selected != -1 && !(card[card_selected].flags & UNSUPPORTED)) {
+ /*
+ * Allow room for font/pixmap cache for accel
+ * servers.
+ */
+ config_virtualx16bpp = 1280;
+ config_virtualy16bpp = 1024;
+ }
+ else {
+ config_virtualx16bpp = 1600;
+ config_virtualy16bpp = 1280;
+ }
+ if (card_selected != -1 && !(card[card_selected].flags & UNSUPPORTED)) {
+ config_virtualx24bpp = 1152;
+ config_virtualy24bpp = 900;
+ }
+ else {
+ config_virtualx24bpp = 1280;
+ config_virtualy24bpp = 1024;
+ }
+ /* Add 1600x1280 */
+ config_modesline8bpp = "\"1280x1024\" \"1024x768\" \"800x600\" \"640x480\"";
+ config_modesline16bpp = "\"1280x1024\" \"1024x768\" \"800x600\" \"640x480\"";
+ config_modesline24bpp = "\"1280x1024\" \"1024x768\" \"800x600\" \"640x480\"";
+
+ }
+ else
+ if (config_videomemory >= 2048) {
+ if (card_selected != -1 && !(card[card_selected].flags & UNSUPPORTED)) {
+ /*
+ * Allow room for font/pixmap cache for accel
+ * servers.
+ * Also the mach32 is has a limited width.
+ */
+ config_virtualx8bpp = 1280;
+ config_virtualy8bpp = 1024;
+ }
+ else {
+ config_virtualx8bpp = 1600;
+ config_virtualy8bpp = 1200;
+ }
+ if (card_selected != -1 && !(card[card_selected].flags & UNSUPPORTED)) {
+ config_virtualx16bpp = 1024;
+ config_virtualy16bpp = 768;
+ }
+ else {
+ config_virtualx16bpp = 1152;
+ config_virtualy16bpp = 900;
+ }
+ config_virtualx24bpp = 800;
+ config_virtualy24bpp = 600;
+ if (config_videomemory >= 2048 + 256) {
+ config_virtualx24bpp = 1024;
+ config_virtualy24bpp = 768;
+ }
+ config_modesline8bpp = "\"1280x1024\" \"1024x768\" \"800x600\" \"640x480\"";
+ config_modesline16bpp = "\"1024x768\" \"800x600\" \"640x480\"";
+ if (config_videomemory >= 2048 + 256)
+ config_modesline24bpp = "\"1024x768\" \"800x600\" \"640x480\"";
+ else
+ config_modesline24bpp = "\"800x600\" \"640x480\"";
+ }
+ else
+ if (config_videomemory >= 1024) {
+ if (card_selected != -1 && !(card[card_selected].flags & UNSUPPORTED)) {
+ /*
+ * Allow room for font/pixmap cache for accel
+ * servers.
+ */
+ config_virtualx8bpp = 1024;
+ config_virtualy8bpp = 768;
+ }
+ else {
+ config_virtualx8bpp = 1152;
+ config_virtualy8bpp = 900;
+ }
+ config_virtualx16bpp = 800; /* Forget about cache space; */
+ config_virtualy16bpp = 600; /* it's small enough as it is. */
+ config_virtualx24bpp = 640;
+ config_virtualy24bpp = 480;
+ config_modesline8bpp = "\"1024x768\" \"800x600\" \"640x480\"";
+ config_modesline16bpp = "\"800x600\" \"640x480\"";
+ config_modesline24bpp = "\"640x480\"";
+ }
+ else
+ if (config_videomemory >= 512) {
+ config_virtualx8bpp = 800;
+ config_virtualy8bpp = 600;
+ config_modesline8bpp = "\"800x600\" \"640x480\"";
+ config_modesline16bpp = "\"640x400\"";
+ }
+ else
+ if (config_videomemory >= 256) {
+ config_modesline8bpp = "\"640x400\"";
+ config_virtualx8bpp = 640;
+ config_virtualy8bpp = 400;
+ }
+ else {
+ printf("Fatal error: Invalid amount of video memory.\n");
+ exit(-1);
+ }
+
+#if 0
+ /*
+ * Handle the Ramdac/Clockchip setting.
+ */
+
+ printf("%s", devicesettingscomment_text);
+
+ if (card_selected == -1 || (card[card_selected].flags & UNSUPPORTED))
+ goto skipramdacselection;
+
+ printf("%s", ramdaccomment_text);
+
+ /* meanwhile there are so many RAMDACs that they do no longer fit on
+ * on page
+ */
+ for (np=12, i=0 ;;) {
+ int j;
+ for (j = i; j < i + np && j < NU_RAMDACS; j++)
+ printf("%3d %-60s%s\n", j+1,
+ ramdac_name[j],
+ ramdac_id[j]);
+
+ printf("\n");
+ if (card_selected != -1)
+ if (card[card_selected].ramdac != NULL)
+ printf("The card definition has Ramdac \"%s\".\n\n",
+ card[card_selected].ramdac);
+ printf("\n");
+ printf("Enter a number to choose the corresponding RAMDAC.\n");
+ printf("Press enter for the next page, q to quit without selection of a RAMDAC.\n");
+ printf("\n");
+ getstring(s);
+
+ config_ramdac = NULL;
+ if (s[0] == 'q')
+ break;
+
+ if (strlen(s) > 0) {
+ c = atoi(s)-1;
+ if (c >= 0 && c < NU_RAMDACS) {
+ config_ramdac = ramdac_id[atoi(s)-1];
+ break;
+ }
+ }
+
+ i += np;
+ if (np==12) np = 18; /* account intro lines only displayed 1st time */
+ if (i >= NU_RAMDACS)
+ i = 0;
+ emptylines();
+ }
+
+skipramdacselection:
+ emptylines();
+ printf("%s", clockchipcomment_text);
+
+ for (i = 0; i < NU_CLOCKCHIPS; i++)
+ printf("%2d %-60s%s\n",
+ i + 1, clockchip_name[i], clockchip_id[i]);
+
+ printf("\n");
+
+ if (card_selected != -1)
+ if (card[card_selected].clockchip != NULL)
+ printf("The card definition has Clockchip \"%s\"\n\n",
+ card[card_selected].clockchip);
+
+ printf("Just press enter if you don't want a Clockchip setting.\n");
+ printf("What Clockchip setting do you want (1-%d)? ", NU_CLOCKCHIPS);
+
+ getstring(s);
+ config_clockchip = NULL;
+ if (strlen(s) > 0)
+ config_clockchip = clockchip_id[atoi(s) - 1];
+
+ emptylines();
+
+ /*
+ * Optionally run X -probeonly to figure out the clocks.
+ */
+
+ config_numberofclockslines = 0;
+
+ printf("%s", deviceclockscomment_text);
+
+ printf("%s", deviceclocksquestion_text);
+#endif
+
+#if 0
+ /*
+ * XXX Change this to check for a CLOCKPROBE flag rather than an
+ * NOCLOCKPROBE.
+ */
+ if (card_selected != -1)
+ if (card[card_selected].flags & NOCLOCKPROBE)
+ printf("The card definition says to NOT probe clocks.\n");
+
+ if (config_clockchip != NULL) {
+ printf("Because you have enabled a Clockchip line, there's no need for clock\n"
+ "probing.\n");
+ keypress();
+ goto skipclockprobing;
+ }
+
+ printf("Do you want me to run 'X -probeonly' now? ");
+ getstring(s);
+ printf("\n");
+ if (answerisyes(s)) {
+ /*
+ * Write temporary XF86Config and run X -probeonly.
+ * Only allow when root.
+ */
+ FILE *f;
+ char *buf;
+ char syscmdline[2*256+100]; /* enough */
+ char *fname = NULL;
+ char *d2name = NULL;
+ char *d3name = NULL;
+
+ if (getuid() != 0) {
+ printf("Sorry, you must be root to do this.\n\n");
+ goto endofprobeonly;
+ }
+ printf("%s", probeonlywarning_text);
+ keypress();
+ fname = Malloc(strlen(temp_dir) +
+ strlen(TEMPORARY_XF86CONFIG_FILENAME) + 1);
+ sprintf(fname, "%s%s", temp_dir,
+ TEMPORARY_XF86CONFIG_FILENAME);
+ d2name = Malloc(strlen(temp_dir) + strlen(DUMBCONFIG2) + 1);
+ sprintf(d2name, "%s%s", temp_dir, DUMBCONFIG2);
+ d3name = Malloc(strlen(temp_dir) + strlen(DUMBCONFIG3) + 1);
+ sprintf(d3name, "%s%s", temp_dir, DUMBCONFIG3);
+ printf("Running X -probeonly -pn -xf86config %s.\n", fname);
+ write_XF86Config(fname);
+#ifndef __EMX__
+ sync();
+#endif
+ /* compose a line with the real path */
+#ifndef __EMX__
+ sprintf(syscmdline, "X -probeonly -pn -xf86config %s 2> %s",
+ fname, d2name);
+#else
+ /* OS/2 does not have symlinks, so "X" does not exist,
+ * call the real X server
+ */
+ sprintf(syscmdline,"%s/"__XSERVERNAME__" -probeonly -pn -xf86config "
+ TEMPORARY_XF86CONFIG_FILENAME " 2>" DUMBCONFIG2,
+ __XOS2RedirRoot("/"__XSERVERNAME__"/bin",'\\'),
+ card[card_selected].server);
+#endif
+
+ if (system(syscmdline)) {
+ printf("X -probeonly call failed.\n");
+ printf("No Clocks line inserted.\n");
+ goto clocksprobefailed;
+ }
+ /* Look for 'clocks:' (case sensitive). */
+ sprintf(syscmdline, "grep clocks\\: %s > %s", d2name, d3name);
+ if (system(syscmdline)) {
+ printf("grep failed.\n");
+ printf("Cannot find clocks in server output.\n");
+ goto clocksprobefailed;
+ }
+ f = fopen(d3name, "r");
+ buf = Malloc(8192);
+ /* Parse lines. */
+ while (fgets(buf, 8192, f) != NULL) {
+ char *clks;
+ clks = strstr(buf, "clocks: ") + 8;
+ if (clks >= buf + 3 && strcmp(clks - 11, "num") == 0)
+ /* Reject lines with 'numclocks:'. */
+ continue;
+ if (clks >= buf + 8 && strcpy(clks - 14, "pixel ") == 0)
+ /* Reject lines with 'pixel clocks:'. */
+ continue;
+ clks[strlen(clks) - 1] = '\0'; /* Remove '\n'. */
+ config_clocksline[config_numberofclockslines] =
+ Malloc(strlen(clks) + 1);
+ strcpy(config_clocksline[config_numberofclockslines],
+ clks);
+ printf("Clocks %s\n", clks);
+ config_numberofclockslines++;
+ }
+ fclose(f);
+clocksprobefailed:
+ unlink(d3name);
+ unlink(d2name);
+ unlink(fname);
+ printf("\n");
+
+endofprobeonly:
+ keypress();
+ }
+skipclockprobing:
+#endif
+
+ /*
+ * For vga driver, no further configuration is required.
+ */
+ if (card_selected == -1 || (card[card_selected].flags & UNSUPPORTED))
+ return;
+
+ /*
+ * Configure the modes order.
+ */
+ config_virtual = 0;
+ for (;;) {
+ char modes[128];
+
+ emptylines();
+
+ printf("%s", modesorderintro_text);
+ printf("%s for 8-bit\n", config_modesline8bpp);
+ printf("%s for 16-bit\n", config_modesline16bpp);
+ printf("%s for 24-bit\n", config_modesline24bpp);
+ printf("\n");
+ printf("%s", modesorder_text2);
+
+ printf("Enter your choice: ");
+ getstring(s);
+ printf("\n");
+
+ c = atoi(s) - 1;
+ if (c < 0 || c >= 3)
+ break;
+
+ printf("Select modes from the following list:\n\n");
+
+ for (i = 0; i < NU_MODESTRINGS; i++)
+ printf(" %c %s\n", i < 9 ? '1' + i :
+ 'a' + i - 9,
+ modestring[i]);
+ printf("\n");
+
+ printf("%s", modeslist_text);
+
+ printf("Which modes? ");
+ getstring(s);
+ printf("\n");
+
+ modes[0] = '\0';
+ for (i = 0; i < strlen(s); i++) {
+ if ( NU_MODESTRINGS > 9 ) {
+ if ((s[i] < '1' || s[i] > '9') &&
+ (s[i] < 'a' || s[i] > 'a' + NU_MODESTRINGS - 10)) {
+ printf("Invalid mode skipped.\n");
+ continue;
+ }
+ }
+ else {
+ if (s[i] < '1' || s[i] > '0' + NU_MODESTRINGS) {
+ printf("Invalid mode skipped.\n");
+ continue;
+ }
+ }
+ if (i > 0)
+ strcat(modes, " ");
+ strcat(modes, modestring[s[i] <= '9' ? s[i] - '1' :
+ s[i] - 'a' + 9]);
+ }
+ switch (c) {
+ case 0 :
+ config_modesline8bpp = Malloc(strlen(modes) + 1);
+ strcpy(config_modesline8bpp, modes);
+ break;
+ case 1 :
+ config_modesline16bpp = Malloc(strlen(modes) + 1);
+ strcpy(config_modesline16bpp, modes);
+ break;
+ case 2 :
+ config_modesline24bpp = Malloc(strlen(modes) + 1);
+ strcpy(config_modesline24bpp, modes);
+ break;
+ }
+
+ printf("%s", virtual_text);
+
+ printf("Please answer the following question with either 'y' or 'n'.\n");
+ printf("Do you want a virtual screen that is larger than the physical screen?");
+ getstring(s);
+ if (answerisyes(s))
+ config_virtual = 1;
+ }
+}
+
+static char *defaultdepthtext =
+"Please specify which color depth you want to use by default:\n"
+"\n";
+
+static struct depth_str {
+ char *name;
+ char *desc;
+} depth_list[] = {
+ { "1", "1 bit (monochrome)" },
+ { "4", "4 bits (16 colors)" },
+ { "8", "8 bits (256 colors)" },
+ { "16", "16 bits (65536 colors)" },
+ { "24", "24 bits (16 million colors)" }
+};
+
+static int ndepths = sizeof(depth_list)/sizeof(struct depth_str);
+
+static void
+depth_configuration(void)
+{
+ int i;
+ char s[80];
+ int depth;
+
+ printf(defaultdepthtext);
+ for (i=0; i<ndepths; i++) {
+ printf("%3d %-50s\n",i+1,depth_list[i].desc);
+ }
+
+ printf("\nEnter a number to choose the default depth.\n\n");
+ getstring(s);
+ if (strlen(s) == 0)
+ depth = 0;
+ else {
+ i = atoi(s)-1;
+ depth = (i < 0 || i > ndepths) ? 0 : i;
+ }
+ config_depth = depth_list[depth].name;
+}
+
+/*
+ * Create the XF86Config file.
+ */
+
+static char *XF86Config_firstchunk_text =
+"# File generated by xf86config.\n"
+"\n"
+"#\n"
+"# Copyright (c) 2004, by the "XVENDORNAMESHORT"\n"
+"#\n"
+"# Permission is hereby granted, free of charge, to any person obtaining a\n"
+"# copy of this software and associated documentation files (the \"Software\"),\n"
+"# to deal in the Software without restriction, including without limitation\n"
+"# the rights to use, copy, modify, merge, publish, distribute, sublicense,\n"
+"# and/or sell copies of the Software, and to permit persons to whom the\n"
+"# Software is furnished to do so, subject to the following conditions:\n"
+"# \n"
+"# The above copyright notice and this permission notice shall be included in\n"
+"# all copies or substantial portions of the Software.\n"
+"# \n"
+"# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n"
+"# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n"
+"# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n"
+"# THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n"
+"# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF\n"
+"# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n"
+"# SOFTWARE.\n"
+"# \n"
+"# Except as contained in this notice, the name of "XVENDORNAMESHORT" shall\n"
+"# not be used in advertising or otherwise to promote the sale, use or other\n"
+"# dealings in this Software without prior written authorization from the\n"
+"# "XVENDORNAMESHORT".\n"
+"#\n"
+"\n"
+"# **********************************************************************\n"
+"# Refer to the XF86Config(4/5) man page for details about the format of \n"
+"# this file.\n"
+"# **********************************************************************\n"
+"\n"
+"# **********************************************************************\n"
+"# Module section -- this section is used to specify\n"
+"# which dynamically loadable modules to load.\n"
+"# **********************************************************************\n"
+"#\n"
+"Section \"Module\"\n"
+"\n"
+"# This loads the DBE extension module.\n"
+"\n"
+" Load \"dbe\" # Double buffer extension\n"
+"\n"
+"# This loads the miscellaneous extensions module, and disables\n"
+"# initialisation of the XFree86-DGA extension within that module.\n"
+" SubSection \"extmod\"\n"
+" Option \"omit xfree86-dga\" # don't initialise the DGA extension\n"
+" EndSubSection\n"
+"\n"
+"# This loads the Type1 and FreeType font modules\n"
+" Load \"type1\"\n"
+" Load \"speedo\"\n"
+" Load \"freetype\"\n"
+"# Load \"xtt\"\n"
+"\n"
+"# This loads the GLX module\n"
+"# Load \"glx\"\n"
+"# This loads the DRI module\n"
+"# Load \"dri\"\n"
+"\n"
+"EndSection\n"
+"\n"
+"# **********************************************************************\n"
+"# Files section. This allows default font and rgb paths to be set\n"
+"# **********************************************************************\n"
+"\n"
+"Section \"Files\"\n"
+"\n"
+"# The location of the RGB database. Note, this is the name of the\n"
+"# file minus the extension (like \".txt\" or \".db\"). There is normally\n"
+"# no need to change the default.\n"
+"\n"
+" RgbPath \"" TREEROOTLX "/rgb\"\n"
+"\n"
+"# Multiple FontPath entries are allowed (which are concatenated together),\n"
+"# as well as specifying multiple comma-separated entries in one FontPath\n"
+"# command (or a combination of both methods)\n"
+"# \n"
+"# If you don't have a floating point coprocessor and emacs, Mosaic or other\n"
+"# programs take long to start up, try moving the Type1 and Speedo directory\n"
+"# to the end of this list (or comment them out).\n"
+"# \n"
+"\n";
+
+static char *XF86Config_fontpaths[] =
+{
+/* " FontPath \"" TREEROOTLX "/fonts/75dpi/\"\n"*/
+ "/fonts/local/",
+ "/fonts/misc/",
+ "/fonts/75dpi/:unscaled",
+ "/fonts/100dpi/:unscaled",
+ "/fonts/Speedo/",
+ "/fonts/Type1/",
+ "/fonts/TrueType/",
+ "/fonts/freefont/",
+ "/fonts/75dpi/",
+ "/fonts/100dpi/",
+ 0 /* end of fontpaths */
+};
+
+static char *XF86Config_fontpathchunk_text =
+
+"\n"
+"# The module search path. The default path is shown here.\n"
+"\n"
+"# ModulePath \"" MODULEPATH "\"\n"
+"\n"
+"EndSection\n"
+"\n"
+"# **********************************************************************\n"
+"# Server flags section.\n"
+"# **********************************************************************\n"
+"\n"
+"Section \"ServerFlags\"\n"
+"\n"
+"# Uncomment this to cause a core dump at the spot where a signal is \n"
+"# received. This may leave the console in an unusable state, but may\n"
+"# provide a better stack trace in the core dump to aid in debugging\n"
+"\n"
+"# Option \"NoTrapSignals\"\n"
+"\n"
+"# Uncomment this to disable the <Crtl><Alt><Fn> VT switch sequence\n"
+"# (where n is 1 through 12). This allows clients to receive these key\n"
+"# events.\n"
+"\n"
+"# Option \"DontVTSwitch\"\n"
+"\n"
+"# Uncomment this to disable the <Crtl><Alt><BS> server abort sequence\n"
+"# This allows clients to receive this key event.\n"
+"\n"
+"# Option \"DontZap\"\n"
+"\n"
+"# Uncomment this to disable the <Crtl><Alt><KP_+>/<KP_-> mode switching\n"
+"# sequences. This allows clients to receive these key events.\n"
+"\n"
+"# Option \"Dont Zoom\"\n"
+"\n"
+"# Uncomment this to disable tuning with the xvidtune client. With\n"
+"# it the client can still run and fetch card and monitor attributes,\n"
+"# but it will not be allowed to change them. If it tries it will\n"
+"# receive a protocol error.\n"
+"\n"
+"# Option \"DisableVidModeExtension\"\n"
+"\n"
+"# Uncomment this to enable the use of a non-local xvidtune client. \n"
+"\n"
+"# Option \"AllowNonLocalXvidtune\"\n"
+"\n"
+"# Uncomment this to disable dynamically modifying the input device\n"
+"# (mouse and keyboard) settings. \n"
+"\n"
+"# Option \"DisableModInDev\"\n"
+"\n"
+"# Uncomment this to enable the use of a non-local client to\n"
+"# change the keyboard or mouse settings (currently only xset).\n"
+"\n"
+"# Option \"AllowNonLocalModInDev\"\n"
+"\n"
+"EndSection\n"
+"\n"
+"# **********************************************************************\n"
+"# Input devices\n"
+"# **********************************************************************\n"
+"\n"
+"# **********************************************************************\n"
+"# Core keyboard's InputDevice section\n"
+"# **********************************************************************\n"
+"\n"
+"Section \"InputDevice\"\n"
+"\n"
+" Identifier \"Keyboard1\"\n"
+" Driver \"Keyboard\"\n"
+"\n"
+"# For most OSs the protocol can be omitted (it defaults to \"Standard\").\n"
+"# When using XQUEUE (only for SVR3 and SVR4, but not Solaris),\n"
+"# uncomment the following line.\n"
+"\n"
+"# Option \"Protocol\" \"Xqueue\"\n"
+"\n"
+" Option \"AutoRepeat\" \"500 30\"\n"
+"\n"
+"# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))\n"
+"# Option \"Xleds\" \"1 2 3\"\n"
+"\n";
+
+static char *keyboardchunk2_text =
+"\n";
+
+static char *keyboardchunk3_text =
+"# To customise the XKB settings to suit your keyboard, modify the\n"
+"# lines below (which are the defaults). For example, for a non-U.S.\n"
+"# keyboard, you will probably want to use:\n"
+"# Option \"XkbModel\" \"pc102\"\n"
+"# If you have a US Microsoft Natural keyboard, you can use:\n"
+"# Option \"XkbModel\" \"microsoft\"\n"
+"#\n"
+"# Then to change the language, change the Layout setting.\n"
+"# For example, a german layout can be obtained with:\n"
+"# Option \"XkbLayout\" \"de\"\n"
+"# or:\n"
+"# Option \"XkbLayout\" \"de\"\n"
+"# Option \"XkbVariant\" \"nodeadkeys\"\n"
+"#\n"
+"# If you'd like to switch the positions of your capslock and\n"
+"# control keys, use:\n"
+"# Option \"XkbOptions\" \"ctrl:swapcaps\"\n"
+"\n"
+"# These are the default XKB settings for "XVENDORNAMESHORT"\n"
+"# Option \"XkbRules\" \"__XKBDEFRULES__\"\n"
+"# Option \"XkbModel\" \"pc101\"\n"
+"# Option \"XkbLayout\" \"us\"\n"
+"# Option \"XkbVariant\" \"\"\n"
+"# Option \"XkbOptions\" \"\"\n"
+"\n";
+
+static char *keyboardlastchunk_text =
+"\n"
+"EndSection\n"
+"\n"
+"\n";
+
+static char *pointersection_text1 =
+"# **********************************************************************\n"
+"# Core Pointer's InputDevice section\n"
+"# **********************************************************************\n"
+"\n"
+"Section \"InputDevice\"\n"
+"\n"
+"# Identifier and driver\n"
+"\n"
+" Identifier \"Mouse1\"\n"
+" Driver \"mouse\"\n"
+;
+
+static char *pointersection_text2 =
+"\n"
+"# Mouse-speed setting for PS/2 mouse.\n"
+"\n"
+"# Option \"Resolution\" \"256\"\n"
+"\n"
+"# When using XQUEUE, comment out the above two lines, and uncomment\n"
+"# the following line.\n"
+"\n"
+"# Option \"Protocol\" \"Xqueue\"\n"
+"\n"
+"# Baudrate and SampleRate are only for some Logitech mice. In\n"
+"# almost every case these lines should be omitted.\n"
+"\n"
+"# Option \"BaudRate\" \"9600\"\n"
+"# Option \"SampleRate\" \"150\"\n"
+"\n"
+"# Emulate3Buttons is an option for 2-button Microsoft mice\n"
+"# Emulate3Timeout is the timeout in milliseconds (default is 50ms)\n"
+"\n";
+
+static char *xinputsection_text =
+"# **********************************************************************\n"
+"# Other input device sections \n"
+"# this is optional and is required only if you\n"
+"# are using extended input devices. This is for example only. Refer\n"
+"# to the XF86Config man page for a description of the options.\n"
+"# **********************************************************************\n"
+"#\n"
+"# Section \"InputDevice\" \n"
+"# Identifier \"Mouse2\"\n"
+"# Driver \"mouse\"\n"
+"# Option \"Protocol\" \"MouseMan\"\n"
+"# Option \"Device\" \"/dev/mouse2\"\n"
+"# EndSection\n"
+"#\n"
+"# Section \"InputDevice\"\n"
+"# Identifier \"spaceball\"\n"
+"# Driver \"magellan\"\n"
+"# Option \"Device\" \"/dev/cua0\"\n"
+"# EndSection\n"
+"#\n"
+"# Section \"InputDevice\"\n"
+"# Identifier \"spaceball2\"\n"
+"# Driver \"spaceorb\"\n"
+"# Option \"Device\" \"/dev/cua0\"\n"
+"# EndSection\n"
+"#\n"
+"# Section \"InputDevice\"\n"
+"# Identifier \"touchscreen0\"\n"
+"# Driver \"microtouch\"\n"
+"# Option \"Device\" \"/dev/ttyS0\"\n"
+"# Option \"MinX\" \"1412\"\n"
+"# Option \"MaxX\" \"15184\"\n"
+"# Option \"MinY\" \"15372\"\n"
+"# Option \"MaxY\" \"1230\"\n"
+"# Option \"ScreenNumber\" \"0\"\n"
+"# Option \"ReportingMode\" \"Scaled\"\n"
+"# Option \"ButtonNumber\" \"1\"\n"
+"# Option \"SendCoreEvents\"\n"
+"# EndSection\n"
+"#\n"
+"# Section \"InputDevice\"\n"
+"# Identifier \"touchscreen1\"\n"
+"# Driver \"elo2300\"\n"
+"# Option \"Device\" \"/dev/ttyS0\"\n"
+"# Option \"MinX\" \"231\"\n"
+"# Option \"MaxX\" \"3868\"\n"
+"# Option \"MinY\" \"3858\"\n"
+"# Option \"MaxY\" \"272\"\n"
+"# Option \"ScreenNumber\" \"0\"\n"
+"# Option \"ReportingMode\" \"Scaled\"\n"
+"# Option \"ButtonThreshold\" \"17\"\n"
+"# Option \"ButtonNumber\" \"1\"\n"
+"# Option \"SendCoreEvents\"\n"
+"# EndSection\n"
+"\n";
+
+static char *monitorsection_text1 =
+"# **********************************************************************\n"
+"# Monitor section\n"
+"# **********************************************************************\n"
+"\n"
+"# Any number of monitor sections may be present\n"
+"\n"
+"Section \"Monitor\"\n"
+"\n";
+
+static char *monitorsection_text2 =
+"# HorizSync is in kHz unless units are specified.\n"
+"# HorizSync may be a comma separated list of discrete values, or a\n"
+"# comma separated list of ranges of values.\n"
+"# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR\'S\n"
+"# USER MANUAL FOR THE CORRECT NUMBERS.\n"
+"\n";
+
+static char *monitorsection_text3 =
+"# HorizSync 30-64 # multisync\n"
+"# HorizSync 31.5, 35.2 # multiple fixed sync frequencies\n"
+"# HorizSync 15-25, 30-50 # multiple ranges of sync frequencies\n"
+"\n"
+"# VertRefresh is in Hz unless units are specified.\n"
+"# VertRefresh may be a comma separated list of discrete values, or a\n"
+"# comma separated list of ranges of values.\n"
+"# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR\'S\n"
+"# USER MANUAL FOR THE CORRECT NUMBERS.\n"
+"\n";
+
+#if 0
+static char *monitorsection_text4 =
+"# Modes can be specified in two formats. A compact one-line format, or\n"
+"# a multi-line format.\n"
+"\n"
+"# These two are equivalent\n"
+"\n"
+"# ModeLine \"1024x768i\" 45 1024 1048 1208 1264 768 776 784 817 Interlace\n"
+"\n"
+"# Mode \"1024x768i\"\n"
+"# DotClock 45\n"
+"# HTimings 1024 1048 1208 1264\n"
+"# VTimings 768 776 784 817\n"
+"# Flags \"Interlace\"\n"
+"# EndMode\n"
+"\n";
+
+static char *modelines_text =
+"# This is a set of standard mode timings. Modes that are out of monitor spec\n"
+"# are automatically deleted by the server (provided the HorizSync and\n"
+"# VertRefresh lines are correct), so there's no immediate need to\n"
+"# delete mode timings (unless particular mode timings don't work on your\n"
+"# monitor). With these modes, the best standard mode that your monitor\n"
+"# and video card can support for a given resolution is automatically\n"
+"# used.\n"
+"\n"
+"# 640x400 @ 70 Hz, 31.5 kHz hsync\n"
+"Modeline \"640x400\" 25.175 640 664 760 800 400 409 411 450\n"
+"# 640x480 @ 60 Hz, 31.5 kHz hsync\n"
+"Modeline \"640x480\" 25.175 640 664 760 800 480 491 493 525\n"
+"# 800x600 @ 56 Hz, 35.15 kHz hsync\n"
+"ModeLine \"800x600\" 36 800 824 896 1024 600 601 603 625\n"
+"# 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync\n"
+"Modeline \"1024x768\" 44.9 1024 1048 1208 1264 768 776 784 817 Interlace\n"
+"\n"
+"# 640x400 @ 85 Hz, 37.86 kHz hsync\n"
+"Modeline \"640x400\" 31.5 640 672 736 832 400 401 404 445 -HSync +VSync\n"
+"# 640x480 @ 72 Hz, 36.5 kHz hsync\n"
+"Modeline \"640x480\" 31.5 640 680 720 864 480 488 491 521\n"
+"# 640x480 @ 75 Hz, 37.50 kHz hsync\n"
+"ModeLine \"640x480\" 31.5 640 656 720 840 480 481 484 500 -HSync -VSync\n"
+"# 800x600 @ 60 Hz, 37.8 kHz hsync\n"
+"Modeline \"800x600\" 40 800 840 968 1056 600 601 605 628 +hsync +vsync\n"
+"\n"
+"# 640x480 @ 85 Hz, 43.27 kHz hsync\n"
+"Modeline \"640x480\" 36 640 696 752 832 480 481 484 509 -HSync -VSync\n"
+"# 1152x864 @ 89 Hz interlaced, 44 kHz hsync\n"
+"ModeLine \"1152x864\" 65 1152 1168 1384 1480 864 865 875 985 Interlace\n"
+"\n"
+"# 800x600 @ 72 Hz, 48.0 kHz hsync\n"
+"Modeline \"800x600\" 50 800 856 976 1040 600 637 643 666 +hsync +vsync\n"
+"# 1024x768 @ 60 Hz, 48.4 kHz hsync\n"
+"Modeline \"1024x768\" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync\n"
+"\n"
+"# 640x480 @ 100 Hz, 53.01 kHz hsync\n"
+"Modeline \"640x480\" 45.8 640 672 768 864 480 488 494 530 -HSync -VSync\n"
+"# 1152x864 @ 60 Hz, 53.5 kHz hsync\n"
+"Modeline \"1152x864\" 89.9 1152 1216 1472 1680 864 868 876 892 -HSync -VSync\n"
+"# 800x600 @ 85 Hz, 55.84 kHz hsync\n"
+"Modeline \"800x600\" 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync\n"
+"\n"
+"# 1024x768 @ 70 Hz, 56.5 kHz hsync\n"
+"Modeline \"1024x768\" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync\n"
+"# 1280x1024 @ 87 Hz interlaced, 51 kHz hsync\n"
+"Modeline \"1280x1024\" 80 1280 1296 1512 1568 1024 1025 1037 1165 Interlace\n"
+"\n"
+"# 800x600 @ 100 Hz, 64.02 kHz hsync\n"
+"Modeline \"800x600\" 69.65 800 864 928 1088 600 604 610 640 -HSync -VSync\n"
+"# 1024x768 @ 76 Hz, 62.5 kHz hsync\n"
+"Modeline \"1024x768\" 85 1024 1032 1152 1360 768 784 787 823\n"
+"# 1152x864 @ 70 Hz, 62.4 kHz hsync\n"
+"Modeline \"1152x864\" 92 1152 1208 1368 1474 864 865 875 895\n"
+"# 1280x1024 @ 61 Hz, 64.2 kHz hsync\n"
+"Modeline \"1280x1024\" 110 1280 1328 1512 1712 1024 1025 1028 1054\n"
+"\n"
+"# 1024x768 @ 85 Hz, 70.24 kHz hsync\n"
+"Modeline \"1024x768\" 98.9 1024 1056 1216 1408 768 782 788 822 -HSync -VSync\n"
+"# 1152x864 @ 78 Hz, 70.8 kHz hsync\n"
+"Modeline \"1152x864\" 110 1152 1240 1324 1552 864 864 876 908\n"
+"\n"
+"# 1280x1024 @ 70 Hz, 74.59 kHz hsync\n"
+"Modeline \"1280x1024\" 126.5 1280 1312 1472 1696 1024 1032 1040 1068 -HSync -VSync\n"
+"# 1600x1200 @ 60Hz, 75.00 kHz hsync\n"
+"Modeline \"1600x1200\" 162 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync\n"
+"# 1152x864 @ 84 Hz, 76.0 kHz hsync\n"
+"Modeline \"1152x864\" 135 1152 1464 1592 1776 864 864 876 908\n"
+"\n"
+"# 1280x1024 @ 74 Hz, 78.85 kHz hsync\n"
+"Modeline \"1280x1024\" 135 1280 1312 1456 1712 1024 1027 1030 1064\n"
+"\n"
+"# 1024x768 @ 100Hz, 80.21 kHz hsync\n"
+"Modeline \"1024x768\" 115.5 1024 1056 1248 1440 768 771 781 802 -HSync -VSync\n"
+"# 1280x1024 @ 76 Hz, 81.13 kHz hsync\n"
+"Modeline \"1280x1024\" 135 1280 1312 1416 1664 1024 1027 1030 1064\n"
+"\n"
+"# 1600x1200 @ 70 Hz, 87.50 kHz hsync\n"
+"Modeline \"1600x1200\" 189 1600 1664 1856 2160 1200 1201 1204 1250 -HSync -VSync\n"
+"# 1152x864 @ 100 Hz, 89.62 kHz hsync\n"
+"Modeline \"1152x864\" 137.65 1152 1184 1312 1536 864 866 885 902 -HSync -VSync\n"
+"# 1280x1024 @ 85 Hz, 91.15 kHz hsync\n"
+"Modeline \"1280x1024\" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +HSync +VSync\n"
+"# 1600x1200 @ 75 Hz, 93.75 kHz hsync\n"
+"Modeline \"1600x1200\" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync\n"
+"# 1600x1200 @ 85 Hz, 105.77 kHz hsync\n"
+"Modeline \"1600x1200\" 220 1600 1616 1808 2080 1200 1204 1207 1244 +HSync +VSync\n"
+"# 1280x1024 @ 100 Hz, 107.16 kHz hsync\n"
+"Modeline \"1280x1024\" 181.75 1280 1312 1440 1696 1024 1031 1046 1072 -HSync -VSync\n"
+"\n"
+"# 1800x1440 @ 64Hz, 96.15 kHz hsync \n"
+"ModeLine \"1800X1440\" 230 1800 1896 2088 2392 1440 1441 1444 1490 +HSync +VSync\n"
+"# 1800x1440 @ 70Hz, 104.52 kHz hsync \n"
+"ModeLine \"1800X1440\" 250 1800 1896 2088 2392 1440 1441 1444 1490 +HSync +VSync\n"
+"\n"
+"# 512x384 @ 78 Hz, 31.50 kHz hsync\n"
+"Modeline \"512x384\" 20.160 512 528 592 640 384 385 388 404 -HSync -VSync\n"
+"# 512x384 @ 85 Hz, 34.38 kHz hsync\n"
+"Modeline \"512x384\" 22 512 528 592 640 384 385 388 404 -HSync -VSync\n"
+"\n"
+#if XFREE86_VERSION >= 311
+"# Low-res Doublescan modes\n"
+"# If your chipset does not support doublescan, you get a 'squashed'\n"
+"# resolution like 320x400.\n"
+"\n"
+"# 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio\n"
+"Modeline \"320x200\" 12.588 320 336 384 400 200 204 205 225 Doublescan\n"
+"# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio\n"
+"Modeline \"320x240\" 12.588 320 336 384 400 240 245 246 262 Doublescan\n"
+"# 320x240 @ 72 Hz, 36.5 kHz hsync\n"
+"Modeline \"320x240\" 15.750 320 336 384 400 240 244 246 262 Doublescan\n"
+"# 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio\n"
+"ModeLine \"400x300\" 18 400 416 448 512 300 301 302 312 Doublescan\n"
+"# 400x300 @ 60 Hz, 37.8 kHz hsync\n"
+"Modeline \"400x300\" 20 400 416 480 528 300 301 303 314 Doublescan\n"
+"# 400x300 @ 72 Hz, 48.0 kHz hsync\n"
+"Modeline \"400x300\" 25 400 424 488 520 300 319 322 333 Doublescan\n"
+"# 480x300 @ 56 Hz, 35.2 kHz hsync, 8:5 aspect ratio\n"
+"ModeLine \"480x300\" 21.656 480 496 536 616 300 301 302 312 Doublescan\n"
+"# 480x300 @ 60 Hz, 37.8 kHz hsync\n"
+"Modeline \"480x300\" 23.890 480 496 576 632 300 301 303 314 Doublescan\n"
+"# 480x300 @ 63 Hz, 39.6 kHz hsync\n"
+"Modeline \"480x300\" 25 480 496 576 632 300 301 303 314 Doublescan\n"
+"# 480x300 @ 72 Hz, 48.0 kHz hsync\n"
+"Modeline \"480x300\" 29.952 480 504 584 624 300 319 322 333 Doublescan\n"
+"\n"
+#endif
+;
+#endif
+
+static char *devicesection_text =
+"# **********************************************************************\n"
+"# Graphics device section\n"
+"# **********************************************************************\n"
+"\n"
+"# Any number of graphics device sections may be present\n"
+"\n"
+"# Standard VGA Device:\n"
+"\n"
+"Section \"Device\"\n"
+" Identifier \"Standard VGA\"\n"
+" VendorName \"Unknown\"\n"
+" BoardName \"Unknown\"\n"
+"\n"
+"# The chipset line is optional in most cases. It can be used to override\n"
+"# the driver's chipset detection, and should not normally be specified.\n"
+"\n"
+"# Chipset \"generic\"\n"
+"\n"
+"# The Driver line must be present. When using run-time loadable driver\n"
+"# modules, this line instructs the server to load the specified driver\n"
+"# module. Even when not using loadable driver modules, this line\n"
+"# indicates which driver should interpret the information in this section.\n"
+"\n"
+" Driver \"vga\"\n"
+"# The BusID line is used to specify which of possibly multiple devices\n"
+"# this section is intended for. When this line isn't present, a device\n"
+"# section can only match up with the primary video device. For PCI\n"
+"# devices a line like the following could be used. This line should not\n"
+"# normally be included unless there is more than one video device\n"
+"# intalled.\n"
+"\n"
+"# BusID \"PCI:0:10:0\"\n"
+"\n"
+"# VideoRam 256\n"
+"\n"
+"# Clocks 25.2 28.3\n"
+"\n"
+"EndSection\n"
+"\n"
+"# Device configured by xf86config:\n"
+"\n";
+
+static char *screensection_text1 =
+"# **********************************************************************\n"
+"# Screen sections\n"
+"# **********************************************************************\n"
+"\n"
+"# Any number of screen sections may be present. Each describes\n"
+"# the configuration of a single screen. A single specific screen section\n"
+"# may be specified from the X server command line with the \"-screen\"\n"
+"# option.\n";
+
+static char *serverlayout_section_text1 =
+"# **********************************************************************\n"
+"# ServerLayout sections.\n"
+"# **********************************************************************\n"
+"\n"
+"# Any number of ServerLayout sections may be present. Each describes\n"
+"# the way multiple screens are organised. A specific ServerLayout\n"
+"# section may be specified from the X server command line with the\n"
+"# \"-layout\" option. In the absence of this, the first section is used.\n"
+"# When now ServerLayout section is present, the first Screen section\n"
+"# is used alone.\n"
+"\n"
+"Section \"ServerLayout\"\n"
+"\n"
+"# The Identifier line must be present\n"
+" Identifier \"Simple Layout\"\n"
+"\n"
+"# Each Screen line specifies a Screen section name, and optionally\n"
+"# the relative position of other screens. The four names after\n"
+"# primary screen name are the screens to the top, bottom, left and right\n"
+"# of the primary screen. In this example, screen 2 is located to the\n"
+"# right of screen 1.\n"
+"\n";
+
+static char *serverlayout_section_text2 =
+"\n"
+"# Each InputDevice line specifies an InputDevice section name and\n"
+"# optionally some options to specify the way the device is to be\n"
+"# used. Those options include \"CorePointer\", \"CoreKeyboard\" and\n"
+"# \"SendCoreEvents\".\n"
+"\n"
+" InputDevice \"Mouse1\" \"CorePointer\"\n"
+" InputDevice \"Keyboard1\" \"CoreKeyboard\"\n"
+"\n"
+"EndSection\n"
+"\n"
+"# Section \"DRI\"\n"
+"# Mode 0666\n"
+"# EndSection\n"
+"\n";
+
+static void
+write_fontpath_section(FILE *f)
+{
+ /* this will create the Fontpath lines, but only after checking,
+ * that the corresponding dir exists (was THE absolute problem
+ * users had with XFree86/OS2 3.1.2D !)
+ */
+ int i;
+ char cur[256+20],*colon, *hash;
+
+ for (i=0; XF86Config_fontpaths[i]; i++) {
+ strcpy(cur,TREEROOTLX);
+ strcat(cur,XF86Config_fontpaths[i]);
+ /* remove a ':' */
+ colon = strchr(cur+2,':'); /* OS/2: C:/...:scaled */
+ if (colon) *colon = 0;
+ hash = exists_dir(cur) ? "" : "#";
+ fprintf(f,"%s FontPath \"%s%s\"\n",
+ hash,
+ TREEROOTLX,
+ XF86Config_fontpaths[i]);
+ }
+}
+
+static void
+write_XF86Config(char *filename)
+{
+ FILE *f;
+
+ /*
+ * Write the file.
+ */
+
+ f = fopen(filename, "w");
+ if (f == NULL) {
+ printf("Failed to open filename for writing.\n");
+#ifndef __EMX__
+ if (getuid() != 0)
+ printf("Maybe you need to be root to write to the specified directory?\n");
+#endif
+ exit(-1);
+ }
+
+ fprintf(f, "%s", XF86Config_firstchunk_text);
+ write_fontpath_section(f);
+ fprintf(f, "%s", XF86Config_fontpathchunk_text);
+
+ /*
+ * Write keyboard section.
+ */
+ if (config_altmeta) {
+ fprintf(f, " Option \"LeftAlt\" \"Meta\"\n");
+ fprintf(f, " Option \"RightAlt\" \"ModeShift\"\n");
+ }
+ else {
+ fprintf(f, "# Option \"LeftAlt\" \"Meta\"\n");
+ fprintf(f, "# Option \"RightAlt\" \"ModeShift\"\n");
+ }
+#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT) && !defined(PCVT_SUPPORT)
+ /* wscons keyoards need a protocol line */
+ fprintf(f, " Option \"Protocol\" \"wskbd\"\n");
+ fprintf(f, " Option \"Device\" \"%s\"\n", config_keyboard_dev);
+ fprintf(f, " Option \"XkbKeycodes\" \"wscons(ppc)\"\n");
+#endif
+ fprintf(f, "%s", keyboardchunk2_text);
+
+ fprintf(f, "%s", keyboardchunk3_text);
+ if (config_xkbdisable) {
+ fprintf(f, " Option \"XkbDisable\"\n\n");
+ } else {
+ fprintf(f, "# Option \"XkbDisable\"\n\n");
+ }
+ fprintf(f, " Option \"XkbRules\" \"%s\"\n",
+ config_xkbrules);
+ fprintf(f, " Option \"XkbModel\" \"%s\"\n",
+ config_xkbmodel);
+ fprintf(f, " Option \"XkbLayout\" \"%s\"\n",
+ config_xkblayout);
+ if (config_xkbvariant)
+ fprintf(f, " Option \"XkbVariant\" \"%s\"\n",
+ config_xkbvariant);
+ if (config_xkboptions)
+ fprintf(f, " Option \"XkbOptions\" \"%s\"\n",
+ config_xkboptions);
+
+ fprintf(f, "%s",keyboardlastchunk_text);
+
+ /*
+ * Write pointer section.
+ */
+ fprintf(f, "%s", pointersection_text1);
+ fprintf(f, " Option \"Protocol\" \"%s\"\n",
+ mouse_info[config_mousetype].name);
+#if !defined(__UNIXOS2__) && !defined(QNX4)
+ fprintf(f, " Option \"Device\" \"%s\"\n", config_pointerdevice);
+#endif
+ fprintf(f, "%s", pointersection_text2);
+ if (!config_emulate3buttons)
+ fprintf(f, "#");
+ fprintf(f, " Option \"Emulate3Buttons\"\n");
+ fprintf(f, "# Option \"Emulate3Timeout\" \"50\"\n\n");
+ fprintf(f, "# ChordMiddle is an option for some 3-button Logitech mice\n\n");
+ if (!config_chordmiddle)
+ fprintf(f, "#");
+ fprintf(f, " Option \"ChordMiddle\"\n\n");
+ if (config_cleardtrrts) {
+ fprintf(f, " Option \"ClearDTR\"\n");
+ fprintf(f, " Option \"ClearRTS\"\n\n");
+ }
+ fprintf(f, "EndSection\n\n\n");
+
+ /*
+ * Write XInput sample section
+ */
+ fprintf(f, "%s", xinputsection_text);
+
+ /*
+ * Write monitor section.
+ */
+ fprintf(f, "%s", monitorsection_text1);
+ fprintf(f, " Identifier \"%s\"\n", config_monitoridentifier);
+ fprintf(f, "\n");
+ fprintf(f, "%s", monitorsection_text2);
+ fprintf(f, " HorizSync %s\n", config_hsyncrange);
+ fprintf(f, "\n");
+ fprintf(f, "%s", monitorsection_text3);
+ fprintf(f, " VertRefresh %s\n", config_vsyncrange);
+ fprintf(f, "\n");
+#if 0
+ fprintf(f, "%s", monitorsection_text4);
+ fprintf(f, "%s", modelines_text);
+#endif
+ fprintf(f, "EndSection\n\n\n");
+
+ /*
+ * Write Device section.
+ */
+
+ fprintf(f, "%s", devicesection_text);
+ fprintf(f, "Section \"Device\"\n");
+ fprintf(f, " Identifier \"%s\"\n", config_deviceidentifier);
+ if (card_selected != -1) {
+ fprintf(f, " Driver \"%s\"\n", card[card_selected].driver);
+ if (card[card_selected].flags & UNSUPPORTED) {
+ fprintf(f, " # unsupported card\n");
+ }
+ } else {
+ fprintf(f, " Driver \"vga\"\n"
+ " # unsupported card\n");
+ }
+ /* Rely on server to detect video memory. */
+ fprintf(f, " #VideoRam %d\n", config_videomemory);
+ if (card_selected != -1)
+ /* Add comment lines from card definition. */
+ fprintf(f, card[card_selected].lines);
+ if (config_ramdac != NULL)
+ fprintf(f, " Ramdac \"%s\"\n", config_ramdac);
+ if (card_selected != -1)
+ if (card[card_selected].dacspeed != NULL)
+ fprintf(f, " Dacspeed %s\n",
+ card[card_selected].dacspeed);
+ if (config_clockchip != NULL)
+ fprintf(f, " Clockchip \"%s\"\n", config_clockchip);
+ else
+ if (config_numberofclockslines == 0)
+ fprintf(f, " # Insert Clocks lines here if appropriate\n");
+ else {
+ int i;
+ for (i = 0; i < config_numberofclockslines; i++)
+ fprintf(f, " Clocks %s\n", config_clocksline[i]);
+ }
+ fprintf(f, "EndSection\n\n\n");
+
+ /*
+ * Write Screen sections.
+ */
+
+ fprintf(f, "%s", screensection_text1);
+
+ fprintf(f,
+ "Section \"Screen\"\n"
+ " Identifier \"Screen 1\"\n"
+ " Device \"%s\"\n"
+ " Monitor \"%s\"\n"
+ " DefaultDepth %s\n"
+ "\n"
+ " Subsection \"Display\"\n"
+ " Depth 8\n"
+ " Modes %s\n"
+ " ViewPort 0 0\n",
+ config_deviceidentifier,
+ config_monitoridentifier,
+ config_depth,
+ config_modesline8bpp);
+ if (config_virtual)
+ fprintf(f, " Virtual %d %d\n",
+ config_virtualx8bpp, config_virtualy8bpp);
+ fprintf(f,
+ " EndSubsection\n"
+ " Subsection \"Display\"\n"
+ " Depth 16\n"
+ " Modes %s\n"
+ " ViewPort 0 0\n",
+ config_modesline16bpp);
+ if (config_virtual)
+ fprintf(f, " Virtual %d %d\n",
+ config_virtualx16bpp, config_virtualy16bpp);
+ fprintf(f,
+ " EndSubsection\n"
+ " Subsection \"Display\"\n"
+ " Depth 24\n"
+ " Modes %s\n"
+ " ViewPort 0 0\n",
+ config_modesline24bpp);
+ if (config_virtual)
+ fprintf(f, " Virtual %d %d\n",
+ config_virtualx24bpp, config_virtualy24bpp);
+ fprintf(f,
+ " EndSubsection\n"
+ "EndSection\n"
+ "\n");
+
+ /*
+ * ServerLayout section
+ */
+
+ fprintf(f, serverlayout_section_text1);
+ /* replace with screen config */
+ fprintf(f, " Screen \"Screen 1\"\n");
+
+ fprintf(f, serverlayout_section_text2);
+
+ fclose(f);
+}
+
+static char *
+append_version(char *name)
+{
+#ifdef APPEND_VERSION_TO_CONFIG_NAME
+ char *ret = NULL;
+
+ if (XF86_VERSION_MAJOR > 9 || XF86_VERSION_MAJOR < 0)
+ return name;
+
+ ret = Malloc(strlen(name) + 2 + 1);
+ sprintf(ret, "%s-%d", name, XF86_VERSION_MAJOR);
+ free(name);
+ return ret;
+#else
+ return name;
+#endif
+}
+
+/*
+ * Ask where to write XF86Config to. Returns filename.
+ */
+
+static char *
+ask_XF86Config_location(void) {
+ char s[80];
+ char *filename = NULL;
+
+ printf(
+"I am going to write the XF86Config file now. Make sure you don't accidently\n"
+"overwrite a previously configured one.\n\n");
+
+#ifndef __EMX__
+ if (getuid() == 0) {
+#ifdef PREFER_XF86CONFIG_IN_ETC
+ filename = Strdup("/etc/X11/" XCONFIGFILE);
+ filename = append_version(filename);
+ printf("Shall I write it to %s? ", filename);
+ getstring(s);
+ printf("\n");
+ if (answerisyes(s))
+ return filename;
+#endif
+
+ if (filename)
+ free(filename);
+ filename = Strdup(TREEROOTCFG "/" XCONFIGFILE);
+ filename = append_version(filename);
+ printf("Please answer the following question with either 'y' or 'n'.\n");
+ printf("Shall I write it to the default location, %s? ", filename);
+ getstring(s);
+ printf("\n");
+ if (answerisyes(s))
+ return filename;
+
+#ifndef PREFER_XF86CONFIG_IN_ETC
+ if (filename)
+ free(filename);
+ filename = Strdup("/etc/X11/" XCONFIGFILE);
+ filename = append_version(filename);
+ printf("Shall I write it to %s? ", filename);
+ getstring(s);
+ printf("\n");
+ if (answerisyes(s))
+ return filename;
+#endif
+#else /* __EMX__ */
+ {
+ printf("Please answer the following question with either 'y' or 'n'.\n");
+ printf("Shall I write it to the default location, drive:/"__XSERVERNAME__"/lib/X11/XConfig? ");
+ getstring(s);
+ printf("\n");
+ if (answerisyes(s)) {
+ return __XOS2RedirRoot("/"__XSERVERNAME__"/lib/X11/XConfig",'/');
+ }
+#endif /* __EMX__ */
+ }
+
+ if (filename)
+ free(filename);
+ filename = Strdup(XCONFIGFILE);
+ filename = append_version(filename);
+ printf("Do you want it written to the current directory as '%s'? ", filename);
+ getstring(s);
+ printf("\n");
+ if (answerisyes(s)) {
+ return filename;
+ }
+
+ printf("Please give a filename to write to: ");
+ getstring(s);
+ printf("\n");
+ if (filename)
+ free(filename);
+ filename = Strdup(s);
+ return filename;
+}
+
+
+/*
+ * Check if an earlier version of XFree86 is installed; warn about proper
+ * search path order in that case.
+ */
+
+static char *notinstalled_text =
+"The directory " TREEROOT " does not exist. This probably means that you have\n"
+"not yet installed an X11R6-based version of "__XSERVERNAME__". Please install\n"
+"XFree86 3.1+ before running this program, following the instructions in\n"
+"the INSTALL or README that comes with the "__XSERVERNAME__" distribution for your OS.\n"
+"For a minimal installation it is sufficient to only install base binaries,\n"
+"libraries, configuration files and a server that you want to use.\n"
+"\n";
+
+#ifndef __UNIXOS2__
+static char *oldxfree86_text =
+"The directory '/usr/X386/bin' exists. You probably have an old version of\n"
+"__XSERVERNAME__ installed (XFree86 3.1 installs in '" TREEROOT "' instead of\n"
+"'/usr/X386').\n"
+"\n"
+"It is important that the directory '" TREEROOT "' is present in your\n"
+"search path, *before* any occurrence of '/usr/X386/bin'. If you have installed\n"
+"X program binaries that are not in the base __XSERVERNAME__ distribution in\n"
+"'/usr/X386/bin', you can keep the directory in your path as long as it is\n"
+"after '" TREEROOT "'.\n"
+"\n";
+
+static char *pathnote_text =
+"Note that the X binary directory in your path may be a symbolic link.\n"
+"In that case you could modify the symbolic link to point to the new binaries.\n"
+"Example: 'rm -f /usr/bin/X11; ln -s /usr/X11R6/bin /usr/bin/X11', if the\n"
+"link is '/usr/bin/X11'.\n"
+"\n"
+"Make sure the path is OK before continuing.\n";
+#endif
+
+static void
+path_check(void) {
+ char s[80];
+ int ok;
+
+ ok = exists_dir(TREEROOT);
+ if (!ok) {
+ printf("%s", notinstalled_text);
+ printf("Do you want to continue? ");
+ getstring(s);
+ if (!answerisyes(s))
+ exit(-1);
+ printf("\n");
+ }
+
+#ifndef __UNIXOS2__
+ ok = exists_dir("/usr/X386/bin");
+ if (!ok)
+ return;
+
+ printf("%s", oldxfree86_text);
+ printf("Your PATH is currently set as follows:\n%s\n\n",
+ getenv("PATH"));
+ printf("%s", pathnote_text);
+ keypress();
+#endif
+}
+
+
+static void
+configdir_check(void)
+{
+ /* /etc/X11 may not exist on some systems */
+ if (getuid() == 0) {
+ struct stat buf;
+ if (stat("/etc/X11", &buf) == -1 && errno == ENOENT)
+ mkdir("/etc/X11", 0777);
+ if (stat(TREEROOTCFG, &buf) == -1 && errno == ENOENT)
+ mkdir(TREEROOTCFG, 0777);
+ }
+}
+
+
+/*
+ * Program entry point.
+ */
+
+int
+main(int argc, char *argv[]) {
+
+ createtmpdir();
+
+ emptylines();
+
+ printf("%s", intro_text);
+
+ keypress();
+ emptylines();
+
+ path_check();
+
+ emptylines();
+
+ configdir_check();
+
+ emptylines();
+
+ mouse_configuration();
+
+ emptylines();
+
+ keyboard_configuration();
+
+ emptylines();
+
+ monitor_configuration();
+
+ emptylines();
+
+ carddb_configuration();
+
+ emptylines();
+
+ screen_configuration();
+
+ emptylines();
+
+ depth_configuration();
+
+ emptylines();
+
+ write_XF86Config(ask_XF86Config_location());
+
+ printf("%s", finalcomment_text);
+
+ exit(0);
+}
diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.man.pre b/hw/xfree86/utils/xorgconfig/xorgconfig.man.pre
new file mode 100644
index 000000000..63e55f349
--- /dev/null
+++ b/hw/xfree86/utils/xorgconfig/xorgconfig.man.pre
@@ -0,0 +1,22 @@
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.man,v 1.5 2001/11/01 23:35:34 dawes Exp $
+.TH xorgconfig 1 __vendorversion__
+.SH NAME
+xorgconfig \- generate an __XCONFIGFILE__ file
+.SH SYNOPSIS
+.B xorgconfig
+.SH DESCRIPTION
+\fIxorgconfig\fP is an interactive program for generating an __XCONFIGFILE__ file
+for use with __XSERVERNAME__ X servers.
+.PP
+Note that the default name used by \fIxorgconfig\fP for the __XCONFIGFILE__ file
+is system-dependent. For instance, on some systems, __XCONFIGFILE__-4 is used,
+and on OS/2, XConfig is used.
+.SH FILES
+.TP
+.I __projectroot__/lib/X11/Cards
+Video cards database
+.SH "SEE ALSO"
+__XSERVERNAME__(1), __XCONFIGFILE__(__filemansuffix__), reconfig(1)
+.SH AUTHOR
+Harm Hanemaayer.
+.\" $TOG: xf86conf.man /main/9 1997/07/19 10:53:08 kaleb $
diff --git a/hw/xfree86/xorgconf.cpp b/hw/xfree86/xorgconf.cpp
new file mode 100644
index 000000000..c94c1e5a4
--- /dev/null
+++ b/hw/xfree86/xorgconf.cpp
@@ -0,0 +1,626 @@
+XCOMM $XdotOrg$
+XCOMM
+XCOMM Copyright (c) 1994-1998 by The XFree86 Project, Inc.
+XCOMM
+XCOMM Permission is hereby granted, free of charge, to any person obtaining a
+XCOMM copy of this software and associated documentation files (the "Software"),
+XCOMM to deal in the Software without restriction, including without limitation
+XCOMM the rights to use, copy, modify, merge, publish, distribute, sublicense,
+XCOMM and/or sell copies of the Software, and to permit persons to whom the
+XCOMM Software is furnished to do so, subject to the following conditions:
+XCOMM
+XCOMM The above copyright notice and this permission notice shall be included in
+XCOMM all copies or substantial portions of the Software.
+XCOMM
+XCOMM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+XCOMM IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+XCOMM FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+XCOMM THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+XCOMM WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+XCOMM OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+XCOMM SOFTWARE.
+XCOMM
+XCOMM Except as contained in this notice, the name of the XFree86 Project shall
+XCOMM not be used in advertising or otherwise to promote the sale, use or other
+XCOMM dealings in this Software without prior written authorization from the
+XCOMM XFree86 Project.
+XCOMM
+XCOMM $XConsortium: XF86Conf.cpp /main/22 1996/10/23 11:43:51 kaleb $
+
+XCOMM **********************************************************************
+XCOMM This is a sample configuration file only, intended to illustrate
+XCOMM what a config file might look like. Refer to the XF86Config(4/5)
+XCOMM man page for details about the format of this file. This man page
+XCOMM is installed as MANPAGE
+XCOMM **********************************************************************
+
+XCOMM The ordering of sections is not important in version 4.0 and later.
+
+XCOMM **********************************************************************
+XCOMM Files section. This allows default font and rgb paths to be set
+XCOMM **********************************************************************
+
+Section "Files"
+
+XCOMM The location of the RGB database. Note, this is the name of the
+XCOMM file minus the extension (like ".txt" or ".db"). There is normally
+XCOMM no need to change the default.
+
+ RgbPath RGBPATH
+
+XCOMM Multiple FontPath entries are allowed (which are concatenated together),
+XCOMM as well as specifying multiple comma-separated entries in one FontPath
+XCOMM command (or a combination of both methods)
+
+ FontPath LOCALFONTPATH
+ FontPath MISCFONTPATH
+ FontPath DPI75USFONTPATH
+ FontPath DPI100USFONTPATH
+ FontPath T1FONTPATH
+ FontPath TRUETYPEFONTPATH
+ FontPath CIDFONTPATH
+ FontPath SPFONTPATH
+ FontPath DPI75FONTPATH
+ FontPath DPI100FONTPATH
+
+XCOMM ModulePath can be used to set a search path for the X server modules.
+XCOMM The default path is shown here.
+
+XCOMM ModulePath MODULEPATH
+
+EndSection
+
+XCOMM **********************************************************************
+XCOMM Module section -- this is an optional section which is used to specify
+XCOMM which run-time loadable modules to load when the X server starts up.
+XCOMM **********************************************************************
+
+Section "Module"
+
+XCOMM This loads the DBE extension module.
+
+ Load "dbe"
+
+XCOMM This loads the miscellaneous extensions module, and disables
+XCOMM initialisation of the XFree86-DGA extension within that module.
+
+ SubSection "extmod"
+ Option "omit xfree86-dga"
+ EndSubSection
+
+XCOMM This loads the Type1 and FreeType font modules
+
+ Load "type1"
+ Load "freetype"
+
+EndSection
+
+
+XCOMM **********************************************************************
+XCOMM Server flags section. This contains various server-wide Options.
+XCOMM **********************************************************************
+
+Section "ServerFlags"
+
+XCOMM Uncomment this to cause a core dump at the spot where a signal is
+XCOMM received. This may leave the console in an unusable state, but may
+XCOMM provide a better stack trace in the core dump to aid in debugging
+
+XCOMM Option "NoTrapSignals"
+
+XCOMM Uncomment this to disable the <Crtl><Alt><Fn> VT switch sequence
+XCOMM (where n is 1 through 12). This allows clients to receive these key
+XCOMM events.
+
+XCOMM Option "DontVTSwitch"
+
+XCOMM Uncomment this to disable the <Crtl><Alt><BS> server abort sequence
+XCOMM This allows clients to receive this key event.
+
+XCOMM Option "DontZap"
+
+XCOMM Uncomment this to disable the <Crtl><Alt><KP_+>/<KP_-> mode switching
+XCOMM sequences. This allows clients to receive these key events.
+
+XCOMM Option "DontZoom"
+
+XCOMM Uncomment this to disable tuning with the xvidtune client. With
+XCOMM it the client can still run and fetch card and monitor attributes,
+XCOMM but it will not be allowed to change them. If it tries it will
+XCOMM receive a protocol error.
+
+XCOMM Option "DisableVidModeExtension"
+
+XCOMM Uncomment this to enable the use of a non-local xvidtune client.
+
+XCOMM Option "AllowNonLocalXvidtune"
+
+XCOMM Uncomment this to disable dynamically modifying the input device
+XCOMM (mouse and keyboard) settings.
+
+XCOMM Option "DisableModInDev"
+
+XCOMM Uncomment this to enable the use of a non-local client to
+XCOMM change the keyboard or mouse settings (currently only xset).
+
+XCOMM Option "AllowNonLocalModInDev"
+
+XCOMM Set the basic blanking screen saver timeout.
+
+ Option "blank time" "10" # 10 minutes
+
+XCOMM Set the DPMS timeouts. These are set here because they are global
+XCOMM rather than screen-specific. These settings alone don't enable DPMS.
+XCOMM It is enabled per-screen (or per-monitor), and even then only when
+XCOMM the driver supports it.
+
+ Option "standby time" "20"
+ Option "suspend time" "30"
+ Option "off time" "60"
+
+XCOMM On some platform the server needs to estimate the sizes of PCI
+XCOMM memory and pio ranges. This is done by assuming that PCI ranges
+XCOMM don't overlap. Some broken BIOSes tend to set ranges of inactive
+XCOMM devices wrong. Here one can adjust how aggressive the assumptions
+XCOMM should be. Default is 0.
+
+XCOMM Option "EstimateSizesAggresively" "0"
+
+EndSection
+
+XCOMM **********************************************************************
+XCOMM Input devices
+XCOMM **********************************************************************
+
+XCOMM **********************************************************************
+XCOMM Core keyboard's InputDevice section
+XCOMM **********************************************************************
+
+Section "InputDevice"
+
+ Identifier "Keyboard1"
+ Driver "keyboard"
+
+XCOMM For most OSs the protocol can be omitted (it defaults to "Standard").
+XCOMM When using XQUEUE (only for SVR3 and SVR4, but not Solaris), comment
+XCOMM out the above line, and uncomment the following line.
+
+XCOMM Option "Protocol" "Xqueue"
+
+XCOMM Set the keyboard auto repeat parameters. Not all platforms implement
+XCOMM this.
+
+ Option "AutoRepeat" "500 5"
+
+XCOMM Specifiy which keyboard LEDs can be user-controlled (eg, with xset(1)).
+
+XCOMM Option "Xleds" "1 2 3"
+
+XCOMM To disable the XKEYBOARD extension, uncomment XkbDisable.
+
+XCOMM Option "XkbDisable"
+
+XCOMM To customise the XKB settings to suit your keyboard, modify the
+XCOMM lines below (which are the defaults). For example, for a European
+XCOMM keyboard, you will probably want to use one of:
+XCOMM
+XCOMM Option "XkbModel" "pc102"
+XCOMM Option "XkbModel" "pc105"
+XCOMM
+XCOMM If you have a Microsoft Natural keyboard, you can use:
+XCOMM
+XCOMM Option "XkbModel" "microsoft"
+XCOMM
+XCOMM If you have a US "windows" keyboard you will want:
+XCOMM
+XCOMM Option "XkbModel" "pc104"
+XCOMM
+XCOMM Then to change the language, change the Layout setting.
+XCOMM For example, a german layout can be obtained with:
+XCOMM
+XCOMM Option "XkbLayout" "de"
+XCOMM
+XCOMM or:
+XCOMM
+XCOMM Option "XkbLayout" "de"
+XCOMM Option "XkbVariant" "nodeadkeys"
+XCOMM
+XCOMM If you'd like to switch the positions of your capslock and
+XCOMM control keys, use:
+XCOMM
+XCOMM Option "XkbOptions" "ctrl:swapcaps"
+
+
+XCOMM These are the default XKB settings for xorg
+XCOMM
+XCOMM Option "XkbRules" "xorg"
+XCOMM Option "XkbModel" "pc101"
+XCOMM Option "XkbLayout" "us"
+XCOMM Option "XkbVariant" ""
+XCOMM Option "XkbOptions" ""
+
+EndSection
+
+
+XCOMM **********************************************************************
+XCOMM Core Pointer's InputDevice section
+XCOMM **********************************************************************
+
+Section "InputDevice"
+
+XCOMM Identifier and driver
+
+ Identifier "Mouse1"
+ Driver "mouse"
+
+XCOMM The mouse protocol and device. The device is normally set to /dev/mouse,
+XCOMM which is usually a symbolic link to the real device.
+
+ Option "Protocol" "Microsoft"
+ Option "Device" "/dev/mouse"
+
+XCOMM On platforms where PnP mouse detection is supported the following
+XCOMM protocol setting can be used when using a newer PnP mouse:
+
+XCOMM Option "Protocol" "Auto"
+
+XCOMM When using mouse connected to a PS/2 port (aka "MousePort"), set the
+XCOMM the protocol as follows. On some platforms some other settings may
+XCOMM be available.
+
+XCOMM Option "Protocol" "PS/2"
+
+XCOMM When using XQUEUE (only for SVR3 and SVR4, but not Solaris), use
+XCOMM the following instead of any of the lines above. The Device line
+XCOMM is not required in this case.
+
+XCOMM Option "Protocol" "Xqueue"
+
+XCOMM Baudrate and SampleRate are only for some older Logitech mice. In
+XCOMM almost every case these lines should be omitted.
+
+XCOMM Option "BaudRate" "9600"
+XCOMM Option "SampleRate" "150"
+
+XCOMM Emulate3Buttons is an option for 2-button mice
+XCOMM Emulate3Timeout is the timeout in milliseconds (default is 50ms)
+
+XCOMM Option "Emulate3Buttons"
+XCOMM Option "Emulate3Timeout" "50"
+
+XCOMM ChordMiddle is an option for some 3-button Logitech mice, or any
+XCOMM 3-button mouse where the middle button generates left+right button
+XCOMM events.
+
+XCOMM Option "ChordMiddle"
+
+EndSection
+
+Section "InputDevice"
+ Identifier "Mouse2"
+ Driver "mouse"
+ Option "Protocol" "MouseMan"
+ Option "Device" "/dev/mouse2"
+EndSection
+
+XCOMM Some examples of extended input devices
+
+XCOMM Section "InputDevice"
+XCOMM Identifier "spaceball"
+XCOMM Driver "magellan"
+XCOMM Option "Device" "/dev/cua0"
+XCOMM EndSection
+XCOMM
+XCOMM Section "InputDevice"
+XCOMM Identifier "spaceball2"
+XCOMM Driver "spaceorb"
+XCOMM Option "Device" "/dev/cua0"
+XCOMM EndSection
+XCOMM
+XCOMM Section "InputDevice"
+XCOMM Identifier "touchscreen0"
+XCOMM Driver "microtouch"
+XCOMM Option "Device" "/dev/ttyS0"
+XCOMM Option "MinX" "1412"
+XCOMM Option "MaxX" "15184"
+XCOMM Option "MinY" "15372"
+XCOMM Option "MaxY" "1230"
+XCOMM Option "ScreenNumber" "0"
+XCOMM Option "ReportingMode" "Scaled"
+XCOMM Option "ButtonNumber" "1"
+XCOMM Option "SendCoreEvents"
+XCOMM EndSection
+XCOMM
+XCOMM Section "InputDevice"
+XCOMM Identifier "touchscreen1"
+XCOMM Driver "elo2300"
+XCOMM Option "Device" "/dev/ttyS0"
+XCOMM Option "MinX" "231"
+XCOMM Option "MaxX" "3868"
+XCOMM Option "MinY" "3858"
+XCOMM Option "MaxY" "272"
+XCOMM Option "ScreenNumber" "0"
+XCOMM Option "ReportingMode" "Scaled"
+XCOMM Option "ButtonThreshold" "17"
+XCOMM Option "ButtonNumber" "1"
+XCOMM Option "SendCoreEvents"
+XCOMM EndSection
+
+XCOMM **********************************************************************
+XCOMM Monitor section
+XCOMM **********************************************************************
+
+XCOMM Any number of monitor sections may be present
+
+Section "Monitor"
+
+XCOMM The identifier line must be present.
+
+ Identifier "Generic Monitor"
+
+XCOMM HorizSync is in kHz unless units are specified.
+XCOMM HorizSync may be a comma separated list of discrete values, or a
+XCOMM comma separated list of ranges of values.
+XCOMM NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S
+XCOMM USER MANUAL FOR THE CORRECT NUMBERS.
+
+XCOMM HorizSync 31.5 # typical for a single frequency fixed-sync monitor
+XCOMM HorizSync 30-64 # multisync
+XCOMM HorizSync 31.5, 35.2 # multiple fixed sync frequencies
+XCOMM HorizSync 15-25, 30-50 # multiple ranges of sync frequencies
+
+XCOMM VertRefresh is in Hz unless units are specified.
+XCOMM VertRefresh may be a comma separated list of discrete values, or a
+XCOMM comma separated list of ranges of values.
+XCOMM NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S
+XCOMM USER MANUAL FOR THE CORRECT NUMBERS.
+
+XCOMM VertRefresh 60 # typical for a single frequency fixed-sync monitor
+
+XCOMM VertRefresh 50-100 # multisync
+XCOMM VertRefresh 60, 65 # multiple fixed sync frequencies
+XCOMM VertRefresh 40-50, 80-100 # multiple ranges of sync frequencies
+
+XCOMM Modes can be specified in two formats. A compact one-line format, or
+XCOMM a multi-line format.
+
+XCOMM A generic VGA 640x480 mode (hsync = 31.5kHz, refresh = 60Hz)
+XCOMM These two are equivalent
+
+XCOMM ModeLine "640x480" 25.175 640 664 760 800 480 491 493 525
+
+ Mode "640x480"
+ DotClock 25.175
+ HTimings 640 664 760 800
+ VTimings 480 491 493 525
+ EndMode
+
+XCOMM These two are equivalent
+
+XCOMM ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace
+
+XCOMM Mode "1024x768i"
+XCOMM DotClock 45
+XCOMM HTimings 1024 1048 1208 1264
+XCOMM VTimings 768 776 784 817
+XCOMM Flags "Interlace"
+XCOMM EndMode
+
+XCOMM If a monitor has DPMS support, that can be indicated here. This will
+XCOMM enable DPMS when the monitor is used with drivers that support it.
+
+XCOMM Option "dpms"
+
+XCOMM If a monitor requires that the sync signals be superimposed on the
+XCOMM green signal, the following option will enable this when used with
+XCOMM drivers that support it. Only a relatively small range of hardware
+XCOMM (and drivers) actually support this.
+
+XCOMM Option "sync on green"
+
+EndSection
+
+XCOMM **********************************************************************
+XCOMM Graphics device section
+XCOMM **********************************************************************
+
+XCOMM Any number of graphics device sections may be present
+
+Section "Device"
+
+XCOMM The Identifier must be present.
+
+ Identifier "Generic VGA"
+
+XCOMM The Driver line must be present. When using run-time loadable driver
+XCOMM modules, this line instructs the server to load the specified driver
+XCOMM module. Even when not using loadable driver modules, this line
+XCOMM indicates which driver should interpret the information in this section.
+
+ Driver "vga"
+
+XCOMM The chipset line is optional in most cases. It can be used to override
+XCOMM the driver's chipset detection, and should not normally be specified.
+
+XCOMM Chipset "generic"
+
+XCOMM Various other lines can be specified to override the driver's automatic
+XCOMM detection code. In most cases they are not needed.
+
+XCOMM VideoRam 256
+XCOMM Clocks 25.2 28.3
+
+XCOMM The BusID line is used to specify which of possibly multiple devices
+XCOMM this section is intended for. When this line isn't present, a device
+XCOMM section can only match up with the primary video device. For PCI
+XCOMM devices a line like the following could be used. This line should not
+XCOMM normally be included unless there is more than one video device
+XCOMM intalled.
+
+XCOMM BusID "PCI:0:10:0"
+
+XCOMM Various option lines can be added here as required. Some options
+XCOMM are more appropriate in Screen sections, Display subsections or even
+XCOMM Monitor sections.
+
+XCOMM Option "hw cursor" "off"
+
+EndSection
+
+Section "Device"
+ Identifier "any supported Trident chip"
+ Driver "trident"
+EndSection
+
+Section "Device"
+ Identifier "MGA Millennium I"
+ Driver "mga"
+ Option "hw cursor" "off"
+ BusID "PCI:0:10:0"
+EndSection
+
+Section "Device"
+ Identifier "MGA G200 AGP"
+ Driver "mga"
+ BusID "PCI:1:0:0"
+ Option "pci retry"
+EndSection
+
+
+XCOMM **********************************************************************
+XCOMM Screen sections.
+XCOMM **********************************************************************
+
+XCOMM Any number of screen sections may be present. Each describes
+XCOMM the configuration of a single screen. A single specific screen section
+XCOMM may be specified from the X server command line with the "-screen"
+XCOMM option.
+
+Section "Screen"
+
+XCOMM The Identifier, Device and Monitor lines must be present
+
+ Identifier "Screen 1"
+ Device "Generic VGA"
+ Monitor "Generic Monitor"
+
+XCOMM The favoured Depth and/or Bpp may be specified here
+
+ DefaultDepth 8
+
+ SubSection "Display"
+ Depth 8
+ Modes "640x480"
+ ViewPort 0 0
+ Virtual 800 600
+ EndSubsection
+
+ SubSection "Display"
+ Depth 4
+ Modes "640x480"
+ EndSubSection
+
+ SubSection "Display"
+ Depth 1
+ Modes "640x480"
+ EndSubSection
+
+EndSection
+
+
+Section "Screen"
+ Identifier "Screen MGA1"
+ Device "MGA Millennium I"
+ Monitor "Generic Monitor"
+ Option "no accel"
+ DefaultDepth 16
+XCOMM DefaultDepth 24
+
+ SubSection "Display"
+ Depth 8
+ Modes "1280x1024"
+ Option "rgb bits" "8"
+ Visual "StaticColor"
+ EndSubSection
+ SubSection "Display"
+ Depth 16
+ Modes "1280x1024"
+ EndSubSection
+ SubSection "Display"
+ Depth 24
+ Modes "1280x1024"
+ EndSubSection
+EndSection
+
+
+Section "Screen"
+ Identifier "Screen MGA2"
+ Device "MGA G200 AGP"
+ Monitor "Generic Monitor"
+ DefaultDepth 8
+
+ SubSection "Display"
+ Depth 8
+ Modes "1280x1024"
+ Option "rgb bits" "8"
+ Visual "StaticColor"
+ EndSubSection
+EndSection
+
+
+XCOMM **********************************************************************
+XCOMM ServerLayout sections.
+XCOMM **********************************************************************
+
+XCOMM Any number of ServerLayout sections may be present. Each describes
+XCOMM the way multiple screens are organised. A specific ServerLayout
+XCOMM section may be specified from the X server command line with the
+XCOMM "-layout" option. In the absence of this, the first section is used.
+XCOMM When now ServerLayout section is present, the first Screen section
+XCOMM is used alone.
+
+Section "ServerLayout"
+
+XCOMM The Identifier line must be present
+
+ Identifier "Main Layout"
+
+XCOMM Each Screen line specifies a Screen section name, and optionally
+XCOMM the relative position of other screens. The four names after
+XCOMM primary screen name are the screens to the top, bottom, left and right
+XCOMM of the primary screen. In this example, screen 2 is located to the
+XCOMM right of screen 1.
+
+ Screen "Screen MGA 1" "" "" "" "Screen MGA 2"
+ Screen "Screen MGA 2" "" "" "Screen MGA 1" ""
+
+XCOMM Each InputDevice line specifies an InputDevice section name and
+XCOMM optionally some options to specify the way the device is to be
+XCOMM used. Those options include "CorePointer", "CoreKeyboard" and
+XCOMM "SendCoreEvents". In this example, "Mouse1" is the core pointer,
+XCOMM and "Mouse2" is an extended input device that also generates core
+XCOMM pointer events (i.e., both mice will move the standard pointer).
+
+ InputDevice "Mouse1" "CorePointer"
+ InputDevice "Mouse2" "SendCoreEvents"
+ InputDevice "Keyboard1" "CoreKeyboard"
+
+EndSection
+
+
+Section "ServerLayout"
+ Identifier "another layout"
+ Screen "Screen 1"
+ Screen "Screen MGA 1"
+ InputDevice "Mouse1" "CorePointer"
+ InputDevice "Keyboard1" "CoreKeyboard"
+EndSection
+
+
+Section "ServerLayout"
+ Identifier "simple layout"
+ Screen "Screen 1"
+ InputDevice "Mouse1" "CorePointer"
+ InputDevice "Keyboard1" "CoreKeyboard"
+EndSection
+