summaryrefslogtreecommitdiff
path: root/hw/kdrive/src
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2007-08-23 18:19:17 -0700
committerIan Romanick <idr@us.ibm.com>2007-08-23 18:19:17 -0700
commit8b6b40b7271acd81a9548f502c18f46f3b640640 (patch)
tree1462cb63501a8bdd8845d7c62e038b6a86b78fd5 /hw/kdrive/src
parentab7a6d860d4a275a810a64b1ba7b13726ed10575 (diff)
parent3305d17195e3a0a5555300555bd7703312fa489f (diff)
Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into pci-reworkpci-rework
Conflicts: hw/xfree86/common/xf86.h hw/xfree86/common/xf86Init.c hw/xfree86/common/xf86pciBus.c hw/xfree86/int10/generic.c hw/xfree86/int10/helper_exec.c hw/xfree86/loader/xf86sym.c hw/xfree86/os-support/bus/Pci.c hw/xfree86/os-support/bus/Pci.h hw/xfree86/os-support/bus/linuxPci.c hw/xfree86/os-support/linux/int10/linux.c
Diffstat (limited to 'hw/kdrive/src')
-rw-r--r--hw/kdrive/src/kaa.c2
-rw-r--r--hw/kdrive/src/kaa.h2
-rw-r--r--hw/kdrive/src/kaapict.c2
-rw-r--r--hw/kdrive/src/kasync.c8
-rw-r--r--hw/kdrive/src/kcmap.c3
-rw-r--r--hw/kdrive/src/kcolor.c3
-rw-r--r--hw/kdrive/src/kcurscol.c2
-rw-r--r--hw/kdrive/src/kdrive.c23
-rw-r--r--hw/kdrive/src/kdrive.h14
-rw-r--r--hw/kdrive/src/kinfo.c3
-rw-r--r--hw/kdrive/src/kinput.c190
-rw-r--r--hw/kdrive/src/kkeymap.c3
-rw-r--r--hw/kdrive/src/kkeymap.h3
-rw-r--r--hw/kdrive/src/kloadmap.c3
-rw-r--r--hw/kdrive/src/kmap.c3
-rw-r--r--hw/kdrive/src/kmode.c2
-rw-r--r--hw/kdrive/src/knoop.c3
-rw-r--r--hw/kdrive/src/koffscreen.c2
-rw-r--r--hw/kdrive/src/kshadow.c2
-rw-r--r--hw/kdrive/src/ktest.c3
-rw-r--r--hw/kdrive/src/kxv.c2
-rw-r--r--hw/kdrive/src/kxv.h2
-rw-r--r--hw/kdrive/src/vga.c3
-rw-r--r--hw/kdrive/src/vga.h3
24 files changed, 163 insertions, 123 deletions
diff --git a/hw/kdrive/src/kaa.c b/hw/kdrive/src/kaa.c
index c29e9e9f0..c9805ddb6 100644
--- a/hw/kdrive/src/kaa.c
+++ b/hw/kdrive/src/kaa.c
@@ -1,6 +1,4 @@
/*
- * $RCSId: xc/programs/Xserver/hw/kdrive/kaa.c,v 1.4 2001/06/04 09:45:41 keithp Exp $
- *
* Copyright © 2001 Keith Packard
*
* Partly based on code that is Copyright © The XFree86 Project Inc.
diff --git a/hw/kdrive/src/kaa.h b/hw/kdrive/src/kaa.h
index 15f2faac2..db890a75b 100644
--- a/hw/kdrive/src/kaa.h
+++ b/hw/kdrive/src/kaa.h
@@ -1,6 +1,4 @@
/*
- * $RCSId: $
- *
* Copyright © 2001 Keith Packard
*
* Partly based on code that is Copyright © The XFree86 Project Inc.
diff --git a/hw/kdrive/src/kaapict.c b/hw/kdrive/src/kaapict.c
index 6d44b726a..501b6b9c4 100644
--- a/hw/kdrive/src/kaapict.c
+++ b/hw/kdrive/src/kaapict.c
@@ -1,6 +1,4 @@
/*
- * $RCSId$
- *
* Copyright © 2001 Keith Packard
*
* Partly based on code that is Copyright © The XFree86 Project Inc.
diff --git a/hw/kdrive/src/kasync.c b/hw/kdrive/src/kasync.c
index 00d756fc9..cc751112c 100644
--- a/hw/kdrive/src/kasync.c
+++ b/hw/kdrive/src/kasync.c
@@ -1,6 +1,4 @@
/*
- * Id: kasync.c,v 1.3 1999/11/24 04:29:28 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kasync.c,v 1.8 2001/03/30 02:15:19 keithp Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
@@ -296,13 +293,8 @@ KdScreenInitAsync (ScreenPtr pScreen)
pScreen->PaintWindowBorder = KdCheckPaintWindow;
pScreen->CopyWindow = KdCheckCopyWindow;
-#ifndef FB_OLD_SCREEN
pScreen->BackingStoreFuncs.SaveAreas = KdCheckSaveAreas;
pScreen->BackingStoreFuncs.RestoreAreas = KdCheckRestoreAreas;
-#else
- pScreenPriv->BackingStoreFuncs.SaveAreas = KdCheckSaveAreas;
- pScreenPriv->BackingStoreFuncs.RestoreAreas = KdCheckRestoreAreas;
-#endif
#ifdef RENDER
KdPictureInitAsync (pScreen);
#endif
diff --git a/hw/kdrive/src/kcmap.c b/hw/kdrive/src/kcmap.c
index 92ce5b920..4941ad17f 100644
--- a/hw/kdrive/src/kcmap.c
+++ b/hw/kdrive/src/kcmap.c
@@ -1,6 +1,4 @@
/*
- * Id: kcmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kcmap.c,v 1.4 2000/05/24 23:57:56 keithp Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/src/kcolor.c b/hw/kdrive/src/kcolor.c
index c3669abdf..31af5c37e 100644
--- a/hw/kdrive/src/kcolor.c
+++ b/hw/kdrive/src/kcolor.c
@@ -1,6 +1,4 @@
/*
- * Id: kcolor.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kcolor.c,v 1.2 1999/12/30 03:03:05 robin Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/src/kcurscol.c b/hw/kdrive/src/kcurscol.c
index 943417e0d..6a17df30f 100644
--- a/hw/kdrive/src/kcurscol.c
+++ b/hw/kdrive/src/kcurscol.c
@@ -1,6 +1,4 @@
/*
- * $RCSId: xc/programs/Xserver/hw/kdrive/kcurscol.c,v 1.4 2000/05/11 18:14:13 tsi Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index b6ac0b0cf..2bb7b530b 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -1,6 +1,4 @@
/*
- * $RCSId: xc/programs/Xserver/hw/kdrive/kdrive.c,v 1.29 2002/10/31 18:29:50 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -83,6 +81,8 @@ int kdVirtualTerminal = -1;
Bool kdSwitchPending;
char *kdSwitchCmd;
DDXPointRec kdOrigin;
+Bool kdHasPointer = FALSE;
+Bool kdHasKbd = FALSE;
static Bool kdCaughtSignal = FALSE;
@@ -97,7 +97,6 @@ extern WindowPtr *WindowTable;
void
KdSetRootClip (ScreenPtr pScreen, BOOL enable)
{
-#ifndef FB_OLD_SCREEN
WindowPtr pWin = WindowTable[pScreen->myNum];
WindowPtr pChild;
Bool WasViewable;
@@ -224,7 +223,6 @@ KdSetRootClip (ScreenPtr pScreen, BOOL enable)
}
if (pWin->realized)
WindowsRestructured ();
-#endif /* !FB_OLD_SCREEN */
}
void
@@ -600,6 +598,8 @@ KdUseMsg (void)
ErrorF("-card pcmcia Use PCMCIA card as additional screen\n");
ErrorF("-screen WIDTH[/WIDTHMM]xHEIGHT[/HEIGHTMM][@ROTATION][X][Y][xDEPTH/BPP{,DEPTH/BPP}[xFREQ]] Specify screen characteristics\n");
ErrorF("-rgba rgb/bgr/vrgb/vbgr/none Specify subpixel ordering for LCD panels\n");
+ ErrorF("-mouse driver [,n,,options] Specify the pointer driver and its options (n is the number of buttons)\n");
+ ErrorF("-keybd driver [,,options] Specify the keyboard driver and its options\n");
ErrorF("-zaphod Disable cursor screen switching\n");
ErrorF("-2button Emulate 3 button mouse\n");
ErrorF("-3button Disable 3 button mouse emulation\n");
@@ -608,7 +608,6 @@ KdUseMsg (void)
ErrorF("-softCursor Force software cursor\n");
ErrorF("-videoTest Start the server, pause momentarily and exit\n");
ErrorF("-origin X,Y Locates the next screen in the the virtual screen (Xinerama)\n");
- ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n");
ErrorF("-switchCmd Command to execute on vt switch\n");
ErrorF("-nozap Don't terminate server on Ctrl+Alt+Backspace\n");
ErrorF("vtxx Use virtual terminal xx instead of the next available\n");
@@ -741,12 +740,14 @@ KdProcessArgument (int argc, char **argv, int i)
if (i + 1 >= argc)
UseMsg();
KdAddConfigPointer(argv[i + 1]);
+ kdHasPointer = TRUE;
return 2;
}
if (!strcmp (argv[i], "-keybd")) {
if (i + 1 >= argc)
UseMsg();
KdAddConfigKeyboard(argv[i + 1]);
+ kdHasKbd = TRUE;
return 2;
}
@@ -1067,14 +1068,6 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
pScreen->SaveScreen = KdSaveScreen;
pScreen->CreateWindow = KdCreateWindow;
-#ifdef FB_OLD_SCREEN
- pScreenPriv->BackingStoreFuncs.SaveAreas = fbSaveAreas;
- pScreenPriv->BackingStoreFuncs.RestoreAreas = fbSaveAreas;
- pScreenPriv->BackingStoreFuncs.SetClipmaskRgn = 0;
- pScreenPriv->BackingStoreFuncs.GetImagePixmap = 0;
- pScreenPriv->BackingStoreFuncs.GetSpansPixmap = 0;
-#endif
-
#if KD_MAX_FB > 1
if (screen->fb[1].depth)
{
@@ -1156,12 +1149,8 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
#if 0
pScreen->backingStoreSupport = Always;
-#ifdef FB_OLD_SCREEN
- miInitializeBackingStore (pScreen, &pScreenPriv->BackingStoreFuncs);
-#else
miInitializeBackingStore (pScreen);
#endif
-#endif
/*
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index ced48d7a8..81f3e019d 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -1,6 +1,4 @@
/*
- * Id: kdrive.h,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kdrive.h,v 1.29 2002/11/13 16:37:39 keithp Exp $ */
#ifndef _KDRIVE_H_
#define _KDRIVE_H_
@@ -216,9 +213,6 @@ typedef struct {
CreateScreenResourcesProcPtr CreateScreenResources;
CloseScreenProcPtr CloseScreen;
-#ifdef FB_OLD_SCREEN
- miBSFuncRec BackingStoreFuncs;
-#endif
} KdPrivScreenRec, *KdPrivScreenPtr;
typedef enum _kdPointerState {
@@ -336,6 +330,11 @@ struct _KdKeyboardInfo {
int inputClass;
#ifdef XKB
XkbDescPtr xkb;
+ char *xkbRules;
+ char *xkbModel;
+ char *xkbLayout;
+ char *xkbVariant;
+ char *xkbOptions;
#endif
int LockLed;
@@ -879,12 +878,13 @@ KdRingBell (KdKeyboardInfo *ki,
int duration);
extern KdPointerDriver LinuxMouseDriver;
-extern KdPointerDriver LinuxEvdevDriver;
+extern KdPointerDriver LinuxEvdevMouseDriver;
extern KdPointerDriver Ps2MouseDriver;
extern KdPointerDriver BusMouseDriver;
extern KdPointerDriver MsMouseDriver;
extern KdPointerDriver TsDriver;
extern KdKeyboardDriver LinuxKeyboardDriver;
+extern KdKeyboardDriver LinuxEvdevKeyboardDriver;
extern KdOsFuncs LinuxFuncs;
extern KdPointerDriver VxWorksMouseDriver;
diff --git a/hw/kdrive/src/kinfo.c b/hw/kdrive/src/kinfo.c
index 1e03ac8a2..2621f10dd 100644
--- a/hw/kdrive/src/kinfo.c
+++ b/hw/kdrive/src/kinfo.c
@@ -1,6 +1,4 @@
/*
- * Id: kinfo.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kinfo.c,v 1.2 2000/02/23 20:29:53 dawes Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 7edcc5106..6c247c185 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -1,6 +1,4 @@
/*
- * Id: kinput.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
* Copyright © 2006 Nokia Corporation
*
@@ -22,7 +20,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kinput.c,v 1.30 2002/11/13 16:37:39 keithp Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
@@ -740,6 +737,9 @@ KdKeyboardProc(DeviceIntPtr pDevice, int onoff)
DevicePtr pDev = (DevicePtr)pDevice;
KdKeyboardInfo *ki;
Atom xiclass;
+#ifdef XKB
+ XkbComponentNamesRec names;
+#endif
if (!pDev)
return BadImplementation;
@@ -788,13 +788,13 @@ KdKeyboardProc(DeviceIntPtr pDevice, int onoff)
KdInitModMap(ki);
KdInitAutoRepeats(ki);
-#ifndef XKB
+#ifdef XKB
if (!noXkbExtension) {
memset(&names, 0, sizeof(XkbComponentNamesRec));
- if (XkbInitialMap)
- names.keymap = XkbInitialMap;
- XkbSetRulesDflts ("base", "pc105", "us", NULL, NULL);
+ XkbSetRulesDflts (ki->xkbRules, ki->xkbModel, ki->xkbLayout,
+ ki->xkbVariant, ki->xkbOptions);
+
ret = XkbInitKeyboardDeviceStruct (pDevice,
&names,
&ki->keySyms,
@@ -963,6 +963,13 @@ KdNewKeyboard (void)
ki->bellDuration = 200;
ki->next = NULL;
ki->options = NULL;
+#ifdef XKB
+ ki->xkbRules = KdSaveString("base");
+ ki->xkbModel = KdSaveString("pc105");
+ ki->xkbLayout = KdSaveString("us");
+ ki->xkbVariant = NULL;
+ ki->xkbOptions = NULL;
+#endif
return ki;
}
@@ -1098,11 +1105,78 @@ KdRemovePointer (KdPointerInfo *pi)
KdFreePointer(pi);
}
+/*
+ * You can call your kdriver server with something like:
+ * $ ./hw/kdrive/yourserver/X :1 -mouse evdev,,device=/dev/input/event4 -keybd
+ * evdev,,device=/dev/input/event1,xkbmodel=abnt2,xkblayout=br
+ */
+static Bool
+KdGetOptions (InputOption **options, char *string)
+{
+ InputOption *newopt = NULL, **tmpo = NULL;
+ int tam_key = 0;
+
+ newopt = (InputOption *) xalloc(sizeof (InputOption));
+ if (!newopt)
+ return FALSE;
+
+ bzero(newopt, sizeof (InputOption));
+
+ for (tmpo = options; *tmpo; tmpo = &(*tmpo)->next)
+ ; /* Hello, I'm here */
+ *tmpo = newopt;
+
+ if (strchr(string, '='))
+ {
+ tam_key = (strchr(string, '=') - string);
+ newopt->key = (char *)xalloc(tam_key);
+ strncpy(newopt->key, string, tam_key);
+ newopt->key[tam_key] = '\0';
+ newopt->value = xstrdup(strchr(string, '=') + 1);
+ }
+ else
+ {
+ newopt->key = xstrdup(string);
+ newopt->value = NULL;
+ }
+ newopt->next = NULL;
+
+ return TRUE;
+}
+
+static void
+KdParseKbdOptions (KdKeyboardInfo *ki)
+{
+ InputOption *option = NULL;
+
+ for (option = ki->options; option; option = option->next)
+ {
+#ifdef XKB
+ if (strcasecmp(option->key, "XkbRules") == 0)
+ ki->xkbRules = option->value;
+ else if (strcasecmp(option->key, "XkbModel") == 0)
+ ki->xkbModel = option->value;
+ else if (strcasecmp(option->key, "XkbLayout") == 0)
+ ki->xkbLayout = option->value;
+ else if (strcasecmp(option->key, "XkbVariant") == 0)
+ ki->xkbVariant = option->value;
+ else if (strcasecmp(option->key, "XkbOptions") == 0)
+ ki->xkbOptions = option->value;
+ else if (!strcasecmp (option->key, "device"))
+ ki->path = KdSaveString(option->value);
+ else
+#endif
+ ErrorF("Kbd option key (%s) of value (%s) not assigned!\n",
+ option->key, option->value);
+ }
+}
+
KdKeyboardInfo *
KdParseKeyboard (char *arg)
{
char save[1024];
char delim;
+ InputOption *options = NULL;
KdKeyboardInfo *ki = NULL;
ki = KdNewKeyboard();
@@ -1145,18 +1219,63 @@ KdParseKeyboard (char *arg)
else
ki->driverPrivate = xstrdup(save);
- /* FIXME actually implement options */
+ if (delim != ',')
+ {
+ return ki;
+ }
+
+ arg = KdParseFindNext (arg, ",", save, &delim);
+
+ while (delim == ',')
+ {
+ arg = KdParseFindNext (arg, ",", save, &delim);
+
+ if (!KdGetOptions(&options, save))
+ {
+ KdFreeKeyboard(ki);
+ return NULL;
+ }
+ }
+
+ if (options)
+ {
+ ki->options = options;
+ KdParseKbdOptions(ki);
+ }
return ki;
}
+static void
+KdParsePointerOptions (KdPointerInfo *pi)
+{
+ InputOption *option = NULL;
+
+ for (option = pi->options; option; option = option->next)
+ {
+ if (!strcmp (option->key, "emulatemiddle"))
+ pi->emulateMiddleButton = TRUE;
+ else if (!strcmp (option->key, "noemulatemiddle"))
+ pi->emulateMiddleButton = FALSE;
+ else if (!strcmp (option->key, "transformcoord"))
+ pi->transformCoordinates = TRUE;
+ else if (!strcmp (option->key, "rawcoord"))
+ pi->transformCoordinates = FALSE;
+ else if (!strcasecmp (option->key, "device"))
+ pi->path = KdSaveString(option->value);
+ else
+ ErrorF("Pointer option key (%s) of value (%s) not assigned!\n",
+ option->key, option->value);
+ }
+}
+
KdPointerInfo *
KdParsePointer (char *arg)
{
char save[1024];
char delim;
KdPointerInfo *pi = NULL;
- InputOption *options = NULL, *newopt = NULL, **tmpo = NULL;
+ InputOption *options = NULL;
int i = 0;
pi = KdNewPointer();
@@ -1216,45 +1335,21 @@ KdParsePointer (char *arg)
s++;
}
}
- else if (!strcmp (save, "emulatemiddle"))
- pi->emulateMiddleButton = TRUE;
- else if (!strcmp (save, "noemulatemiddle"))
- pi->emulateMiddleButton = FALSE;
- else if (!strcmp (save, "transformcoord"))
- pi->transformCoordinates = TRUE;
- else if (!strcmp (save, "rawcoord"))
- pi->transformCoordinates = FALSE;
else
{
- newopt = (InputOption *) xalloc(sizeof (InputOption));
- if (!newopt)
+ if (!KdGetOptions(&options, save))
{
KdFreePointer(pi);
return NULL;
}
- bzero(newopt, sizeof (InputOption));
-
- for (tmpo = &options; *tmpo; tmpo = &(*tmpo)->next)
- *tmpo = newopt;
-
- if (strchr(arg, '='))
- {
- i = (strchr(arg, '=') - arg);
- newopt->key = (char *)xalloc(i+1);
- strncpy(newopt->key, arg, i+1);
- newopt->value = xstrdup(strchr(arg, '=') + 1);
- }
- else
- {
- newopt->key = xstrdup(save);
- newopt->value = NULL;
- }
- newopt->next = NULL;
}
}
if (options)
+ {
pi->options = options;
+ KdParsePointerOptions(pi);
+ }
return pi;
}
@@ -2296,6 +2391,7 @@ ChangeDeviceControl(register ClientPtr client, DeviceIntPtr pDev,
return Success;
case DEVICE_CORE:
+ case DEVICE_ENABLE:
return Success;
default:
@@ -2319,13 +2415,11 @@ NewInputDeviceRequest(InputOption *options, DeviceIntPtr *pdev)
pi = KdNewPointer();
if (!pi)
return BadAlloc;
- pi->options = options;
}
else if (strcmp(option->value, "keyboard") == 0) {
ki = KdNewKeyboard();
if (!ki)
return BadAlloc;
- ki->options = options;
}
else {
ErrorF("unrecognised device type!\n");
@@ -2334,8 +2428,21 @@ NewInputDeviceRequest(InputOption *options, DeviceIntPtr *pdev)
}
}
+ if (!ki && !pi) {
+ ErrorF("unrecognised device identifier!\n");
+ return BadValue;
+ }
+
+ /* FIXME: change this code below to use KdParseKbdOptions and
+ * KdParsePointerOptions */
for (option = options; option; option = option->next) {
- if (strcmp(option->key, "driver") == 0) {
+ if (strcmp(option->key, "device") == 0) {
+ if (pi && option->value)
+ pi->path = KdSaveString(option->value);
+ else if (ki && option->value)
+ ki->path = KdSaveString(option->value);
+ }
+ else if (strcmp(option->key, "driver") == 0) {
if (pi) {
pi->driver = KdFindPointerDriver(option->value);
if (!pi->driver) {
@@ -2343,6 +2450,7 @@ NewInputDeviceRequest(InputOption *options, DeviceIntPtr *pdev)
KdFreePointer(pi);
return BadValue;
}
+ pi->options = options;
}
else if (ki) {
ki->driver = KdFindKeyboardDriver(option->value);
@@ -2351,6 +2459,7 @@ NewInputDeviceRequest(InputOption *options, DeviceIntPtr *pdev)
KdFreeKeyboard(ki);
return BadValue;
}
+ ki->options = options;
}
}
}
@@ -2384,4 +2493,5 @@ NewInputDeviceRequest(InputOption *options, DeviceIntPtr *pdev)
void
DeleteInputDeviceRequest(DeviceIntPtr pDev)
{
+ RemoveDevice(pDev);
}
diff --git a/hw/kdrive/src/kkeymap.c b/hw/kdrive/src/kkeymap.c
index ce4596fc8..ae90a3499 100644
--- a/hw/kdrive/src/kkeymap.c
+++ b/hw/kdrive/src/kkeymap.c
@@ -1,6 +1,4 @@
/*
- * Id: kkeymap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kkeymap.c,v 1.1 1999/11/19 13:53:49 hohndel Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/src/kkeymap.h b/hw/kdrive/src/kkeymap.h
index ccc5e86f8..f66cfa49a 100644
--- a/hw/kdrive/src/kkeymap.h
+++ b/hw/kdrive/src/kkeymap.h
@@ -1,6 +1,4 @@
/*
- * Id: kkeymap.h,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kkeymap.h,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */
/*
* All global variables and functions pertaining to keyboard key mapping
* live in this header file.
diff --git a/hw/kdrive/src/kloadmap.c b/hw/kdrive/src/kloadmap.c
index b62b2deb2..21440a423 100644
--- a/hw/kdrive/src/kloadmap.c
+++ b/hw/kdrive/src/kloadmap.c
@@ -1,6 +1,4 @@
/*
- * Id: kloadmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kloadmap.c,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/src/kmap.c b/hw/kdrive/src/kmap.c
index 73ff427c5..b92c1a84f 100644
--- a/hw/kdrive/src/kmap.c
+++ b/hw/kdrive/src/kmap.c
@@ -1,6 +1,4 @@
/*
- * Id: kmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kmap.c,v 1.10 2001/07/24 21:26:17 keithp Exp $ */
#include <kdrive-config.h>
#include "kdrive.h"
diff --git a/hw/kdrive/src/kmode.c b/hw/kdrive/src/kmode.c
index 5a0c09095..d02cb55e1 100644
--- a/hw/kdrive/src/kmode.c
+++ b/hw/kdrive/src/kmode.c
@@ -1,6 +1,4 @@
/*
- * $RCSId: xc/programs/Xserver/hw/kdrive/kmode.c,v 1.7 2002/10/14 18:01:40 keithp Exp $
- *
* Copyright 1999 SuSE, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
diff --git a/hw/kdrive/src/knoop.c b/hw/kdrive/src/knoop.c
index 416e23ef5..a3e9468ed 100644
--- a/hw/kdrive/src/knoop.c
+++ b/hw/kdrive/src/knoop.c
@@ -1,6 +1,4 @@
/*
- * Id: knoop.c,v 1.2 1999/11/02 06:16:28 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/knoop.c,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */
/*
* GC ops that don't do anything
diff --git a/hw/kdrive/src/koffscreen.c b/hw/kdrive/src/koffscreen.c
index eeb35fa56..efe03642f 100644
--- a/hw/kdrive/src/koffscreen.c
+++ b/hw/kdrive/src/koffscreen.c
@@ -1,6 +1,4 @@
/*
- * $Id$
- *
* Copyright © 2003 Anders Carlsson
*
* Permission to use, copy, modify, distribute, and sell this software and its
diff --git a/hw/kdrive/src/kshadow.c b/hw/kdrive/src/kshadow.c
index 34e1d5de4..ea44812db 100644
--- a/hw/kdrive/src/kshadow.c
+++ b/hw/kdrive/src/kshadow.c
@@ -1,6 +1,4 @@
/*
- * $RCSId: $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
diff --git a/hw/kdrive/src/ktest.c b/hw/kdrive/src/ktest.c
index 935c00e62..150af5639 100644
--- a/hw/kdrive/src/ktest.c
+++ b/hw/kdrive/src/ktest.c
@@ -1,6 +1,4 @@
/*
- * Id: ktest.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/ktest.c,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/src/kxv.c b/hw/kdrive/src/kxv.c
index 4e672f16f..b8fbd731b 100644
--- a/hw/kdrive/src/kxv.c
+++ b/hw/kdrive/src/kxv.c
@@ -35,8 +35,6 @@ of the copyright holder.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kxv.c,v 1.3 2001/08/09 09:08:54 keithp Exp $ */
-
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
#endif
diff --git a/hw/kdrive/src/kxv.h b/hw/kdrive/src/kxv.h
index b9eca8b8e..5d1441642 100644
--- a/hw/kdrive/src/kxv.h
+++ b/hw/kdrive/src/kxv.h
@@ -35,8 +35,6 @@ of the copyright holder.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/kxv.h,v 1.1 2001/03/30 02:18:41 keithp Exp $ */
-
#ifndef _XVDIX_H_
#define _XVDIX_H_
diff --git a/hw/kdrive/src/vga.c b/hw/kdrive/src/vga.c
index 9b8a7da39..862f074a2 100644
--- a/hw/kdrive/src/vga.c
+++ b/hw/kdrive/src/vga.c
@@ -1,6 +1,4 @@
/*
- * Id: vga.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/vga.c,v 1.2 1999/12/30 03:03:07 robin Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/src/vga.h b/hw/kdrive/src/vga.h
index 5d7e77307..0615d5256 100644
--- a/hw/kdrive/src/vga.h
+++ b/hw/kdrive/src/vga.h
@@ -1,6 +1,4 @@
/*
- * Id: vga.h,v 1.1 1999/11/02 03:54:46 keithp Exp $
- *
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $RCSId: xc/programs/Xserver/hw/kdrive/vga.h,v 1.2 1999/12/30 03:03:07 robin Exp $ */
#ifndef _VGA_H_
#define _VGA_H_