Bug 1607

Summary: Xorg keyboard configuration is difficult.
Product: xorg Reporter: Jay Cotton <jay.cotton>
Component: Input/KeyboardAssignee: Jay Cotton <jay.cotton>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: high CC: alan.coopersmith
Version: 6.8.1Keywords: patch
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Jay Cotton 2004-10-11 17:43:42 UTC
When installing Xorg on a system that has XFree86 running, the Xorg server
may use the /etc/X11/XF86Config file.  However, that file has Driver "Keyboard"
which does not map correctly.  I have a fix that add yet another driver
'Keyboard_drv.o' to the system.  This allows Xorg to start, users may then change
to an xorg.conf file that will define a different driver.  The main point is that
the user gets a running system.
Comment 1 Jay Cotton 2004-10-11 17:44:32 UTC
See bug id 890 for details on how we got here.
Comment 2 Jay Cotton 2004-10-11 18:47:21 UTC
Here is the code diffs for this fix.  Any questions ?

--- Imakefile   20 Aug 2004 04:49:44 -0000      1.4
+++ Imakefile   12 Oct 2004 01:41:05 -0000
@@ -1,14 +1,18 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/keyboard/Imakefile,v 1.2 2
001/01/24 00:06:36 dawes Exp $
+XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/keyboard/Imakefile,v 1.2 2
001/01/24 00:06:36 dawes Exp $

-#define IHaveModules
-#include <Server.tmpl>
+#define IHaveModules
+#include <Server.tmpl>

-SRCS = kbd.c
-OBJS = kbd.o
+SRCS = kbd.c
+SRC1 = Keyboard.c
+OBJS = kbd.o
+OBJ1 = Keyboard.o

 DRIVER = kbd

-COMPAT_DRIVER = keyboard
+COMPAT_DRIVER = keyboard
+COMPAT_DRIVER1 = Keyboard
+NEED_EXTRA_KEYBOARD_DRIVER = -DADD_EXTRA_KBD_DRIVER

 #if UseDeprecatedKeyboardDriver
 KEYBOARD_DEFS = -DUSE_DEPRECATED_KEYBOARD_DRIVER
@@ -25,11 +29,25 @@

 ModuleObjectRule()

+LinkFile(Keyboard.c,kbd.c)
+
 ObjectModuleTarget($(DRIVER),$(OBJS))
 ObjectModuleTarget($(COMPAT_DRIVER),$(OBJS))

+AllTarget(Keyboard_drv.o)
+Keyboard.o:    Keyboard.c
+       $(RM) Keyboard.o
+       $(MODCC) $(MODCFLAGS) $(NEED_EXTRA_KEYBOARD_DRIVER) $(_NOOP_) -c Keyboar d.c
+
+Keyboard_drv.o: Keyboard.o
+       RemoveFile(Keyboard_drv.o)
+       $(CC) -o Keyboard_drv.o $(SHLIBLDFLAGS) Keyboard.o
+clean::
+       RemoveFile(Keyboard_drv.o)
+
 InstallObjectModule($(DRIVER),$(MODULEDIR),input)
 InstallObjectModule($(COMPAT_DRIVER),$(MODULEDIR),input)
+InstallObjectModule($(COMPAT_DRIVER1),$(MODULEDIR),input)

 #if !defined(XF86DriverSDK)
 InstallModuleManPage($(DRIVER))
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c,v
retrieving revision 1.6
diff -u -r1.6 kbd.c
--- kbd.c       31 Aug 2004 01:36:13 -0000      1.6
+++ kbd.c       12 Oct 2004 01:43:16 -0000
@@ -71,7 +71,11 @@

 InputDriverRec KEYBOARD = {
        1,
+#ifdef ADD_EXTRA_KBD_DRIVER
+       "Keyboard",
+#else
        "keyboard",
+#endif
        NULL,
        KbdPreInit,
        NULL,
@@ -79,6 +83,7 @@
        0
 };

+
 typedef enum {
     OPTION_ALWAYS_CORE,
     OPTION_SEND_CORE_EVENTS,
@@ -847,7 +852,11 @@
                                /* a tool */
 };

+#ifdef ADD_EXTRA_KBD_DRIVER
+XF86ModuleData KeyboardModuleData = {
+#else
 XF86ModuleData keyboardModuleData = {
+#endif
     &xf86KeyboardVersionRec,
     xf86KeyboardPlug,
     xf86KbdUnplug

Comment 3 Erik Andren 2006-05-23 07:07:33 UTC
Is this really an issue anymore now that imake is something of that past and
most of the expected userbase ought to have migrated by now. 
Comment 4 Daniel Stone 2006-06-03 03:00:10 UTC
i don't think this is very relevant anymore

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.