[PATCH 1/2] kdrive: add protocol mouse option

Peter Hutterer peter.hutterer at who-t.net
Wed May 27 15:13:09 PDT 2009


On Wed, May 27, 2009 at 07:04:16PM +0200, Olivier Blin wrote:
> Peter Hutterer <peter.hutterer at who-t.net> writes:
> 
> > On Tue, May 26, 2009 at 03:30:08PM +0200, Olivier Blin wrote:
> >> 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 at mandriva.com>
> >> ---
> >>  hw/kdrive/linux/mouse.c |    4 +++-
> >>  hw/kdrive/src/kdrive.h  |    1 +
> >>  hw/kdrive/src/kinput.c  |    3 +++
> >>  3 files changed, 7 insertions(+), 1 deletions(-)
> >> 
> >> diff --git a/hw/kdrive/linux/mouse.c b/hw/kdrive/linux/mouse.c
> >> index 02214b3..253da26 100644
> >> --- a/hw/kdrive/linux/mouse.c
> >> +++ b/hw/kdrive/linux/mouse.c
> >> @@ -961,7 +961,9 @@ MouseInit (KdPointerInfo *pi)
> >>      km = (Kmouse *) xalloc (sizeof (Kmouse));
> >>      if (km) {
> >>          km->iob.avail = km->iob.used = 0;
> >> -        MouseFirstProtocol(km, "exps/2");
> >> +        MouseFirstProtocol(km, pi->force_protocol ? pi->force_protocol : "exps/2");
> >> +        if (pi->force_protocol) 
> >> +                km->state = MouseWorking;
> >>          km->i_prot = 0;
> >>          km->tty = isatty (fd);
> >>          km->iob.fd = -1;
> >> diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
> >> index c60559a..c025144 100644
> >> --- a/hw/kdrive/src/kdrive.h
> >> +++ b/hw/kdrive/src/kdrive.h
> >> @@ -220,6 +220,7 @@ struct _KdPointerInfo {
> >>      DeviceIntPtr          dixdev;
> >>      char                  *name;
> >>      char                  *path;
> >> +    char                  *force_protocol;
> >>      InputOption           *options;
> >>      int                   inputClass;
> >>  
> >> diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
> >> index 0d216a9..5f82ba4 100644
> >> --- a/hw/kdrive/src/kinput.c
> >> +++ b/hw/kdrive/src/kinput.c
> >> @@ -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->force_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->force_protocol = NULL;
> >>      pi->nButtons = 5; /* XXX should not be hardcoded */
> >>      pi->inputClass = KD_MOUSE;
> >>  
> >> -- 
> >> 1.6.2.4
> >
> > wouldn't it be better to name the option "protocol" instead of
> > "force_protocol" to reflect the cmdline option?
> 
> I used the "force_" prefix mainly to indicate it is optional, but it's
> ok to just name it protocol (note that "device" option and pi->path have
> the same issue, if we want to be picky).
> Do you want me to resend the patch using "protocol" as field name?

yes. I think it is the better option. We don't need to show in the name that
it's optional, it's common that an unset option defaults to some
auto-detected value. 

force_protocol is IMO even a bit misleading here, it would indicate that
you're overriding or enforcing a protocol on the device even if the protocol
is not supported. When in fact I guess that by using a wrong protocol the
device simply won't work, right?

Either way, amend with s/force_protocol/protocol/ and we're all good.

Cheers,
  Peter



More information about the xorg mailing list