Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 05 Aug 2004 09:56:27 -0400
From:      "Alexandre \"Sunny\" Kovalenko" <Alex.Kovalenko@verizon.net>
To:        Mikko =?ISO-8859-1?Q?Ty=F6l=E4j=E4rvi?= <mbsd@pacbell.net>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Challenge getting touchpad to work since src/sys/isa/psm.c 1.71
Message-ID:  <1091714186.698.20.camel@RabbitsDen>
In-Reply-To: <20040804230815.R695@sotec.home>
References:  <200408042100.i74L0PiQ056577@bunrab.catwhisker.org> <1091671902.698.4.camel@RabbitsDen>  <20040804230815.R695@sotec.home>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2004-08-05 at 02:10, Mikko Työläjärvi wrote:
> On Wed, 4 Aug 2004, Alexandre "Sunny" Kovalenko wrote:
> 
> > On Wed, 2004-08-04 at 17:00, David Wolfskill wrote:
> >> Sorry about the delay; right around the time of the commit, I was having
> >> some thermal issues with my laptop (a Dell Inspiron 5000e).  I believe
> >> those are fixed now -- it's gone through 5 days, each of which has
> >> involved a "buildworld cycle" for each of -STABLE & -CURRENT, without
> >> incident.
> >>
> >> But I'm now having trouble getting a "touchpad tap" to be recognized as
> >> a press/release of a mouse button in -CURRENT; I believe that the recent
> >> commit to src/sys/isa/psm.c 1.71 is involved.
> > Rolling psm.c back to 1.70 restores tapping behavior of the touchpad on
> > my AVERATEC 3150H. Unfortunately with 200+ lines of diff, I could not
> > come up with the better idea at the moment.
> >
> > I can test patches or try out settings if necessary.
> 
> Here is what I'm using:
> 
>        $.02,
>        /Mikko
> 
> --- psm.c.orig	Wed Aug  4 22:34:32 2004
> +++ psm.c	Wed Aug  4 22:34:38 2004
> @@ -103,6 +103,13 @@
>   #define PSM_INPUT_TIMEOUT	2000000	/* 2 sec */
>   #endif
> 
> +#ifndef PSM_TAP_TIMEOUT
> +#define PSM_TAP_TIMEOUT		125000
> +#endif
> +#ifndef PSM_TAP_THRESHOLD
> +#define PSM_TAP_THRESHOLD	25
> +#endif
> +
>   /* end of driver specific options */
> 
>   #define PSM_DRIVER_NAME		"psm"
> @@ -181,6 +188,8 @@
>       struct cdev *bdev;
>       int           lasterr;
>       int           cmdcount;
> +    struct timeval taptimeout;	/* (Synaptics) width of a "tap" pulse */
> +    int           zmax;		/* (Synaptics) pressure measured during tap */
>   };
>   static devclass_t psm_devclass;
>   #define PSM_SOFTC(unit)	((struct psm_softc*)devclass_get_softc(psm_devclass, unit))
> @@ -2531,11 +2540,20 @@
>   		} else {
>   		    sc->flags |= PSM_FLAGS_FINGERDOWN;
>   		}
> -
> +		sc->zmax = imax(z, sc->zmax);
>   		sc->xold = x0;
>   		sc->yold = y0;
>   	    } else {
>   		sc->flags &= ~PSM_FLAGS_FINGERDOWN;
> +		sc->flags &= ~PSM_FLAGS_FINGERDOWN;
> +		if (sc->zmax > PSM_TAP_THRESHOLD
> +		    && timevalcmp(&sc->lastsoftintr, &sc->taptimeout, <=)) {
> +		    ms.button |= MOUSE_BUTTON1DOWN;
> +		}
> +		sc->zmax = 0;
> +		sc->taptimeout.tv_sec = PSM_TAP_TIMEOUT / 1000000;
> +		sc->taptimeout.tv_usec = PSM_TAP_TIMEOUT % 1000000;
> +		timevaladd(&sc->taptimeout, &sc->lastsoftintr);
>   	    }
>   	    z = 0;
>   	    break;
I was not able to apply this patch to psm.c 1.71. There is another 
patch from Philip Paeps, which applied cleanly, and I am going to test
it shortly.

Thank you.
---
Alexandre "Sunny" Kovalenko.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1091714186.698.20.camel>