Linux Input/HID development
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Gabor Balla <gaborwho@gmail.com>
Cc: "linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	Benjamin Tissoires <benjamin.tissoires@gmail.com>,
	Stephen Chandler Paul <thatslyude@gmail.com>,
	Nick Bowler <nbowler@draconx.ca>,
	Andrew Duggan <andrew.duggan@gmail.com>
Subject: Re: PROBLEM: Missing events on thinkpad trackpoint buttons
Date: Thu, 20 Aug 2015 16:13:39 -0700	[thread overview]
Message-ID: <20150820231339.GA7236@localhost> (raw)
In-Reply-To: <20150820230840.GB12900@localhost>

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@gmail.com> wrote:
> > > On Thu, Aug 20, 2015 at 3:56 PM, Dmitry Torokhov
> > > <dmitry.torokhov@gmail.com> 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@gmail.com> 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?

Thanks.

-- 
Dmitry


Input: synaptics - fix handling of disabling gesture mode

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

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@draconx.ca>
Suggested-by: Gabor Balla <gaborwho@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 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;

  reply	other threads:[~2015-08-20 23:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-20 20:50 PROBLEM: Missing events on thinkpad trackpoint buttons Gabor Balla
2015-08-20 21:35 ` Dmitry Torokhov
2015-08-20 22:24   ` Gabor Balla
2015-08-20 22:42     ` Gabor Balla
2015-08-20 22:56     ` Dmitry Torokhov
2015-08-20 23:01       ` Dmitry Torokhov
2015-08-20 23:05         ` Gabor Balla
2015-08-20 23:08           ` Dmitry Torokhov
2015-08-20 23:13             ` Dmitry Torokhov [this message]
2015-08-20 23:35               ` Gabor Balla
2015-08-21  0:06                 ` Dmitry Torokhov
2015-08-24 17:57               ` Dmitry Torokhov
2015-08-24 23:44                 ` Nick Bowler
     [not found]               ` <CAN+gG=H88uVbRun=Vs1r1b8jM=wpnC1285BquFpDsh8HQdr07Q@mail.gmail.com>
2015-09-27 12:14                 ` Benjamin Tissoires
2015-09-28 22:52                   ` Dmitry Torokhov
2015-09-29  0:22                     ` Nick Bowler
2015-09-29  0:26                       ` Dmitry Torokhov
  -- strict thread matches above, loose matches on Subject: below --
2015-08-18  2:31 Nick Bowler
2015-08-18 19:06 ` Benjamin Tissoires
2015-08-19 13:52   ` Benjamin Tissoires
2015-08-19 14:10     ` Nick Bowler
2015-08-19 14:12       ` Benjamin Tissoires
2015-08-19 21:27     ` Dmitry Torokhov
2015-08-19 21:33       ` Stephen Chandler Paul
2015-08-19 21:34       ` Benjamin Tissoires

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150820231339.GA7236@localhost \
    --to=dmitry.torokhov@gmail.com \
    --cc=andrew.duggan@gmail.com \
    --cc=benjamin.tissoires@gmail.com \
    --cc=gaborwho@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=nbowler@draconx.ca \
    --cc=thatslyude@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox