diff --git a/config/10-evdev.conf b/config/10-evdev.conf index 7406f4ef2..cc83ab232 100644 --- a/config/10-evdev.conf +++ b/config/10-evdev.conf @@ -1,8 +1,40 @@ # # Catch-all evdev loader for udev-based systems -# +# We don't simply match on any device since that also adds accelerometers +# and other devices that we don't really want to use. The list below +# matches everything but joysticks. + Section "InputClass" - Identifier "evdev-catchall" - Driver "evdev" + Identifier "evdev pointer catchall" + MatchIsPointer "on" MatchDevicePath "/dev/input/event*" + Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev touchscreen catchall" + MatchIsTouchscreen "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" EndSection diff --git a/config/Makefile.am b/config/Makefile.am index eed745483..675a3b260 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -9,7 +9,7 @@ AM_CFLAGS += $(UDEV_CFLAGS) libconfig_la_SOURCES += udev.c libconfig_la_LIBADD = $(UDEV_LIBS) -xorgconfddir = $(prefix)/etc/X11/$(XF86CONFIGDIR) +xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR) xorgconfd_DATA = 10-evdev.conf else diff --git a/configure.ac b/configure.ac index cdde2bab0..4c1034f68 100644 --- a/configure.ac +++ b/configure.ac @@ -1802,8 +1802,10 @@ if test "x$XORG" = xyes; then AC_SUBST([driverdir]) sdkdir="$includedir/xorg" extdir="$includedir/X11/extensions" + sysconfigdir="$datadir/X11/$XF86CONFIGDIR" AC_SUBST([sdkdir]) AC_SUBST([extdir]) + AC_SUBST([sysconfigdir]) AC_SUBST([logdir]) # stuff the ABI versions into the pc file too diff --git a/cpprules.in b/cpprules.in index 301305e58..6e435785a 100644 --- a/cpprules.in +++ b/cpprules.in @@ -34,6 +34,7 @@ MANDEFS = \ -D__adminmansuffix__=$(ADMIN_MAN_SUFFIX) \ -D__mandir__=$(mandir) \ -D__projectroot__=$(prefix) \ + -D__sysconfdir__=$(sysconfdir) \ -D__datadir__=$(datadir) \ -D__xconfigfile__=$(__XCONFIGFILE__) \ -D__xconfigdir__=$(__XCONFIGDIR__) \ diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 718a07860..1e9543fa2 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -97,20 +97,15 @@ extern DeviceAssocRec mouse_assoc; #endif #ifndef ROOT_CONFIGDIRPATH #define ROOT_CONFIGDIRPATH "%A," "%R," \ - "/etc/X11/%R," "%P/etc/X11/%R," \ - "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ - "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ - "%P/etc/X11/%X," \ - "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ - "%P/lib/X11/%X" + "/etc/X11/%R," "%C/X11/%R," \ + "/etc/X11/%X," "%C/X11/%X" #endif #ifndef USER_CONFIGDIRPATH -#define USER_CONFIGDIRPATH "/etc/X11/%S," "%P/etc/X11/%S," \ - "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ - "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ - "%P/etc/X11/%X," \ - "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ - "%P/lib/X11/%X" +#define USER_CONFIGDIRPATH "/etc/X11/%R," "%C/X11/%R," \ + "/etc/X11/%X," "%C/X11/%X" +#endif +#ifndef SYS_CONFIGDIRPATH +#define SYS_CONFIGDIRPATH "/usr/share/X11/%X," "%D/X11/%X" #endif #ifndef PROJECTROOT #define PROJECTROOT "/usr/X11R6" @@ -2429,7 +2424,7 @@ checkInput(serverLayoutPtr layout, Bool implicit_layout) { ConfigStatus xf86HandleConfigFile(Bool autoconfig) { - const char *filename, *dirname; + const char *filename, *dirname, *sysdirname; char *filesearch, *dirsearch; MessageType filefrom = X_DEFAULT; MessageType dirfrom = X_DEFAULT; @@ -2452,6 +2447,8 @@ xf86HandleConfigFile(Bool autoconfig) dirfrom = X_CMDLINE; xf86initConfigFiles(); + sysdirname = xf86openConfigDirFiles(SYS_CONFIGDIRPATH, NULL, + PROJECTROOT); dirname = xf86openConfigDirFiles(dirsearch, xf86ConfigDir, PROJECTROOT); filename = xf86openConfigFile(filesearch, xf86ConfigFile, PROJECTROOT); if (filename) { @@ -2472,7 +2469,10 @@ xf86HandleConfigFile(Bool autoconfig) "Unable to locate/open config directory: \"%s\"\n", xf86ConfigDir); } - if (!filename && !dirname) + if (sysdirname) + xf86MsgVerb(X_DEFAULT, 0, "Using system config directory \"%s\"\n", + sysdirname); + if (!filename && !dirname && !sysdirname) return CONFIG_NOFILE; } diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre index 93c8ac41d..f7ff6f617 100644 --- a/hw/xfree86/doc/man/xorg.conf.man.pre +++ b/hw/xfree86/doc/man/xorg.conf.man.pre @@ -102,19 +102,51 @@ is the machine's hostname as reported by .BR gethostname (__libmansuffix__). .PP Additional configuration files are searched for in the following -directories: +directories when the server is started as a normal user: .PP .RS 4 .nf -.I /etc/X11/__xconfigdir__\-4 +.IR /etc/X11/ +.IR __sysconfdir__/X11/ .I /etc/X11/__xconfigdir__ -.I /etc/__xconfigdir__ -.IR __projectroot__/etc/X11/__xconfigdir__. -.I __projectroot__/etc/X11/__xconfigdir__\-4 -.I __projectroot__/etc/X11/__xconfigdir__ -.IR __projectroot__/lib/X11/__xconfigdir__. -.I __projectroot__/lib/X11/__xconfigdir__\-4 -.I __projectroot__/lib/X11/__xconfigdir__ +.I __sysconfdir__/X11/__xconfigdir__ +.fi +.RE +.PP +where +.I +is a relative path (with no \(lq..\(rq components) specified with the +.B \-configdir +command line option. +.PP +When the __xservername__ server is started by the \(lqroot\(rq user, the +config directory search locations are as follows: +.PP +.RS 4 +.nf + +.IR /etc/X11/ +.IR __sysconfdir__/X11/ +.I /etc/X11/__xconfigdir__ +.I __sysconfdir__/X11/__xconfigdir__ +.fi +.RE +.PP +where +.I +is the path specified with the +.B \-configdir +command line option (which may be absolute or relative). +.PP +Finally, configuration files will also be searched for in directories +reserved for system use. These are to separate configuration files from +the vendor or 3rd party packages from those of local administration. +These files are found in the following directories: +.PP +.RS 4 +.nf +.I /usr/share/X11/__xconfigdir__ +.I __datadir__/X11/__xconfigdir__ .fi .RE .PP @@ -2373,25 +2405,16 @@ Display drivers: .PP Input drivers: .BR acecad (__drivermansuffix__), -.BR calcomp (__drivermansuffix__), .BR citron (__drivermansuffix__), -.BR dmc (__drivermansuffix__), -.BR dynapro (__drivermansuffix__), .BR elographics (__drivermansuffix__), .BR evdev (__drivermansuffix__), .BR fpit (__drivermansuffix__), -.BR js_x (__drivermansuffix__), .BR joystick (__drivermansuffix__), .BR kbd (__drivermansuffix__), -.BR magictouch (__drivermansuffix__), -.BR microtouch (__drivermansuffix__), .BR mousedrv (__drivermansuffix__), .BR mutouch (__drivermansuffix__), -.BR palmax (__drivermansuffix__), .BR penmount (__drivermansuffix__), .BR synaptics (__drivermansuffix__), -.BR tek4957 (__drivermansuffix__), -.BR ur98 (__drivermansuffix__), .BR vmmouse (__drivermansuffix__), .BR void (__drivermansuffix__), .BR wacom (__drivermansuffix__). diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am index 49c191f2a..caf7079d4 100644 --- a/hw/xfree86/parser/Makefile.am +++ b/hw/xfree86/parser/Makefile.am @@ -34,7 +34,9 @@ libxf86config_a_SOURCES = \ $(INTERNAL_SOURCES) libxf86config_a_CFLAGS = $(AM_CFLAGS) -AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) +AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \ + -DSYSCONFDIR=\"$(sysconfdir)\" \ + -DDATADIR=\"$(datadir)\" EXTRA_DIST = \ Configint.h \ diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c index cdca9ca1c..8aab0cf41 100644 --- a/hw/xfree86/parser/scan.c +++ b/hw/xfree86/parser/scan.c @@ -599,6 +599,8 @@ xf86pathIsSafe(const char *path) * %F config file environment ($XORGCONFIG) as a relative path * %G config file environment ($XORGCONFIG) as a safe path * %P projroot + * %C sysconfdir + * %D datadir * %M major version number * %% % */ @@ -615,6 +617,12 @@ xf86pathIsSafe(const char *path) #ifndef PROJECTROOT #define PROJECTROOT "/usr/X11R6" #endif +#ifndef SYSCONFDIR +#define SYSCONFDIR PROJECTROOT "/etc" +#endif +#ifndef DATADIR +#define DATADIR PROJECTROOT "/share" +#endif #ifndef XCONFENV #define XCONFENV "XORGCONFIG" #endif @@ -755,6 +763,12 @@ DoSubstitution(const char *template, const char *cmdline, const char *projroot, else BAIL_OUT; break; + case 'C': + APPEND_STR(SYSCONFDIR); + break; + case 'D': + APPEND_STR(DATADIR); + break; case 'M': if (!majorvers[0]) { if (XF86_VERSION_MAJOR < 0 || XF86_VERSION_MAJOR > 99) { diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c index 7f23d9ef3..f5f087314 100644 --- a/hw/xfree86/ramdac/xf86Cursor.c +++ b/hw/xfree86/ramdac/xf86Cursor.c @@ -312,6 +312,7 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs, xf86SetCursor(pScreen, NullCursor, x, y); ScreenPriv->isUp = FALSE; } + ScreenPriv->CurrentCursor = NullCursor; return; } diff --git a/xorg-server.pc.in b/xorg-server.pc.in index 3d58dabbf..376cb933d 100644 --- a/xorg-server.pc.in +++ b/xorg-server.pc.in @@ -2,8 +2,10 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ +datarootdir=@datarootdir@ moduledir=@moduledir@ sdkdir=@sdkdir@ +sysconfigdir=@sysconfigdir@ abi_ansic=@abi_ansic@ abi_videodrv=@abi_videodrv@