kdrive: add protocol mouse option

kdrive probes a lot of PS/2 protocols for the mouse device, which
makes the mouse unusable for some seconds after X startup.
This new "protocol" option allows forcing the mouse protocol.
It can be used this way:
Xfbdev -mouse mouse,,protocol=ps/2 -keybd keyboard

Signed-off-by: Olivier Blin <blino@mandriva.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Olivier Blin 2009-05-28 20:57:36 +02:00 committed by Peter Hutterer
parent 20d9f11abf
commit 7f027d9dc0
3 changed files with 9 additions and 1 deletions

View File

@ -961,7 +961,11 @@ MouseInit (KdPointerInfo *pi)
km = (Kmouse *) xalloc (sizeof (Kmouse));
if (km) {
km->iob.avail = km->iob.used = 0;
MouseFirstProtocol(km, "exps/2");
MouseFirstProtocol(km, pi->protocol ? pi->protocol : "exps/2");
/* MouseFirstProtocol sets state to MouseBroken for later protocol
* checks. Skip these checks if a protocol was supplied */
if (pi->protocol)
km->state = MouseWorking;
km->i_prot = 0;
km->tty = isatty (fd);
km->iob.fd = -1;

View File

@ -220,6 +220,7 @@ struct _KdPointerInfo {
DeviceIntPtr dixdev;
char *name;
char *path;
char *protocol;
InputOption *options;
int inputClass;

View File

@ -1166,6 +1166,8 @@ KdParsePointerOptions (KdPointerInfo *pi)
pi->transformCoordinates = FALSE;
else if (!strcasecmp (option->key, "device"))
pi->path = strdup(option->value);
else if (!strcasecmp (option->key, "protocol"))
pi->protocol = strdup(option->value);
else
ErrorF("Pointer option key (%s) of value (%s) not assigned!\n",
option->key, option->value);
@ -1186,6 +1188,7 @@ KdParsePointer (char *arg)
return NULL;
pi->emulateMiddleButton = kdEmulateMiddleButton;
pi->transformCoordinates = !kdRawPointerCoordinates;
pi->protocol = NULL;
pi->nButtons = 5; /* XXX should not be hardcoded */
pi->inputClass = KD_MOUSE;