diff options
author | Roland Mainz <roland.mainz@nrubsig.org> | 2004-04-10 10:08:42 +0000 |
---|---|---|
committer | Roland Mainz <roland.mainz@nrubsig.org> | 2004-04-10 10:08:42 +0000 |
commit | 40967f22d344900087307d6f3eea631ecb4d2c32 (patch) | |
tree | a48ff866b43af23726fb39535ea3f2f609d7ff46 | |
parent | 6cf32b778611e87717724b5aa388b44d0051d0eb (diff) |
Resync to 2004-04-10 XORG-RELEASE-1 branch (step 2: Adding missing files
and removing obsolete ones)
-rw-r--r-- | hw/xfree86/common/xorgHelper.c | 20 | ||||
-rw-r--r-- | hw/xfree86/common/xorgVersion.h | 51 | ||||
-rw-r--r-- | hw/xfree86/doc/man/Xorg.man.pre | 691 | ||||
-rw-r--r-- | hw/xfree86/doc/man/xorg.conf.man.pre | 1872 | ||||
-rw-r--r-- | hw/xfree86/getconfig/xorg.cfg | 50 | ||||
-rw-r--r-- | hw/xfree86/utils/xorgcfg/XOrgCfg.pre | 1851 | ||||
-rw-r--r-- | hw/xfree86/utils/xorgcfg/xorgcfg.man.pre | 152 | ||||
-rw-r--r-- | hw/xfree86/utils/xorgconfig/xorgconfig.c | 2906 | ||||
-rw-r--r-- | hw/xfree86/utils/xorgconfig/xorgconfig.man.pre | 22 | ||||
-rw-r--r-- | hw/xfree86/xorgconf.cpp | 626 |
10 files changed, 8241 insertions, 0 deletions
diff --git a/hw/xfree86/common/xorgHelper.c b/hw/xfree86/common/xorgHelper.c new file mode 100644 index 000000000..998725ca1 --- /dev/null +++ b/hw/xfree86/common/xorgHelper.c @@ -0,0 +1,20 @@ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xorgHelper.c,v 1.1.6.1 2004/04/02 21:47:17 eich Exp $ */ + +#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..018bbdb0d --- /dev/null +++ b/hw/xfree86/common/xorgVersion.h @@ -0,0 +1,51 @@ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xorgVersion.h,v 1.1.6.1 2004/04/02 21:47:17 eich 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/xorgVersion.h,v 1.1.6.1 2004/04/02 21:47:17 eich Exp $ */ diff --git a/hw/xfree86/doc/man/Xorg.man.pre b/hw/xfree86/doc/man/Xorg.man.pre new file mode 100644 index 000000000..44c42e53f --- /dev/null +++ b/hw/xfree86/doc/man/Xorg.man.pre @@ -0,0 +1,691 @@ +.\" $XdotOrg: xc/programs/Xserver/hw/xfree86/Xorg.man,v 1.1.6.1 2004/04/02 21:47:16 eich Exp $ +.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..79a9ee43e --- /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.6.1 2004/04/02 21:47:17 eich 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/getconfig/xorg.cfg b/hw/xfree86/getconfig/xorg.cfg new file mode 100644 index 000000000..6853ca2bd --- /dev/null +++ b/hw/xfree86/getconfig/xorg.cfg @@ -0,0 +1,50 @@ +# $XdotOrg: xc/programs/Xserver/hw/xfree86/getconfig/xorg.cfg,v 1.1.6.1 2004/04/02 21:47:28 eich Exp $ + +# 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/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®istry=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/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/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..2a502dc92 --- /dev/null +++ b/hw/xfree86/xorgconf.cpp @@ -0,0 +1,626 @@ +XCOMM $XdotOrg: xc/programs/Xserver/hw/xfree86/xorgconf.cpp,v 1.1.6.1 2004/04/02 21:47:17 eich Exp $ +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 + |