Re: PROBLEM: Missing events on thinkpad trackpoint buttons

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 20, 2015 at 04:13:39PM -0700, Dmitry Torokhov wrote:
> On Thu, Aug 20, 2015 at 04:08:40PM -0700, Dmitry Torokhov wrote:
> > Hi Gabor,
> > 
> > On Fri, Aug 21, 2015 at 01:05:46AM +0200, Gabor Balla wrote:
> > > Hi Dmitry,
> > > 
> > > On Fri, Aug 21, 2015 at 1:01 AM, Dmitry Torokhov
> > > <dmitry.torokhov@xxxxxxxxx> wrote:
> > > > On Thu, Aug 20, 2015 at 3:56 PM, Dmitry Torokhov
> > > > <dmitry.torokhov@xxxxxxxxx> wrote:
> > > >> On Fri, Aug 21, 2015 at 12:24:59AM +0200, Gabor Balla wrote:
> > > >>> Hi Dmitry,
> > > >>>
> > > >>> On Thu, Aug 20, 2015 at 11:35 PM, Dmitry Torokhov
> > > >>> <dmitry.torokhov@xxxxxxxxx> wrote:
> > > >>> > On Thu, Aug 20, 2015 at 10:50:27PM +0200, Gabor Balla wrote:
> > > [...]
> > > > Ah, wait, not quite still. So we actually do want to disable gestures
> > > > when in Absolute mode (non extended). Although frankly I do not think
> > > > we'll ever see pre 4.0 Synaptics device in a wild.
> > > 
> > > Also notice there is a function called synaptics_set_disable_gesture that can
> > > change that bit regardless of current mode.
> > 
> > That attribute is only created when touchpad is used in relative mode,
> > so should be OK.
> > 
> > Thanks.
> 
> How about this one?

Nick, Benjamin, could you please give this a spin?

> 
> Thanks.
> 
> -- 
> Dmitry
> 
> 
> Input: synaptics - fix handling of disabling gesture mode
> 
> From: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
> 
> Bit 2 of the mode byte has dual meaning: it can disable reporting of
> gestures when touchpad works in Relative mode or normal Absolute mode,
> or it can enable so called Extended W-Mode when touchpad uses enhanced
> Absolute mode (W-mode). The extended W-Mode confuses our driver and
> causes missing button presses on some Thinkpads (x250, T450s), so let's
> make sure we do not enable it.
> 
> Also, according to the spec W mode "... bit is defined only in Absolute
> mode on pads whose capExtended capability bit is set. In Relative mode and
> in TouchPads without this capability, the bit is reserved and should be
> left at 0.", so let's make sure we respect this requirement as well.
> 
> Reported-by: Nick Bowler <nbowler@xxxxxxxxxx>
> Suggested-by: Gabor Balla <gaborwho@xxxxxxxxx>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
> ---
>  drivers/input/mouse/synaptics.c |   12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
> index 28daca1..d9c9e41 100644
> --- a/drivers/input/mouse/synaptics.c
> +++ b/drivers/input/mouse/synaptics.c
> @@ -519,14 +519,18 @@ static int synaptics_set_mode(struct psmouse *psmouse)
>  	struct synaptics_data *priv = psmouse->private;
>  
>  	priv->mode = 0;
> -	if (priv->absolute_mode)
> +
> +	if (priv->absolute_mode) {
>  		priv->mode |= SYN_BIT_ABSOLUTE_MODE;
> -	if (priv->disable_gesture)
> +		if (SYN_CAP_EXTENDED(priv->capabilities))
> +			priv->mode |= SYN_BIT_W_MODE;
> +	}
> +
> +	if (!(priv->mode & SYN_BIT_W_MODE) && priv->disable_gesture)
>  		priv->mode |= SYN_BIT_DISABLE_GESTURE;
> +
>  	if (psmouse->rate >= 80)
>  		priv->mode |= SYN_BIT_HIGH_RATE;
> -	if (SYN_CAP_EXTENDED(priv->capabilities))
> -		priv->mode |= SYN_BIT_W_MODE;
>  
>  	if (synaptics_mode_cmd(psmouse, priv->mode))
>  		return -1;

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux