Re: New ALPS code in -mm

From: Vojtech Pavlik
Date: Fri Mar 04 2005 - 23:54:42 EST


On Fri, Mar 04, 2005 at 10:02:03PM +0100, Benoit Boissinot wrote:
> On Tue, 1 Mar 2005 12:54:32 +0100, Vojtech Pavlik <vojtech@xxxxxxx> wrote:
> >
> > Can you check with a current -mm kernel whether any of the issues is
> > still there? Everything seems to work smoothly with my ALPS.
> >
>
> I have problems with ALPS and 2.6.11-mm1. If I move the pointer with
> the touchpad, it activates button modifiers at the same time. (xev
> reports a MotionNotify event with state = 0x600 or sometimes 0x200
> instead of the expected 0x0).
>
> Moreover the pointer sometimes jump at the bottom right of the screen.
>
> It worked fine with 2.6.11-rc5-mm1.
>
> relevant portion of dmesg:
>
> - with rc5:
>
> Linux version 2.6.11-rc5-mm1 (tonfa@casaverde) (gcc version
> 3.4.3-20050110 (Gentoo Linux 3. 4.3.20050110,
> ssp-3.4.3.20050110-0, pie-8.7.7)) #2 Tue Mar 1 13:33:05 CET 2005
> input: AT Translated Set 2 keyboard on isa0060/serio0
> ALPS Touchpad (Dualpoint) detected
> Enabling hardware tapping
> input: AlpsPS/2 ALPS TouchPad on isa0060/serio1
>
> - with .11
>
> Linux version 2.6.11-mm1 (tonfa@casaverde) (gcc version 3.4.3-20050110
> (Gentoo Linux 3.4.3. 20050110, ssp-3.4.3.20050110-0,
> pie-8.7.7)) #5 Fri Mar 4 16:49:47 CET 2005
> input: AT Translated Set 2 keyboard on isa0060/serio0
> Enabling hardware tapping
> input: DualPoint Stick on isa0060/serio1
> input: AlpsPS/2 ALPS DualPoint TouchPad on isa0060/serio1
>
> I hope it can help.

Can you check if this patch helps?


ChangeSet@xxxxxxxxxx, 2005-03-04 20:19:05+01:00, vojtech@xxxxxxx
input: Fix inverted conditions in ALPS DualPoint stick packet
decoding.
ChangeSet@xxxxxx, 2005-03-04 21:55:23+01:00, vojtech@xxxxxxx
input: Fix ALPS DualPoint stick buttons. Testing shows that they're
at the same place as the pad ones, but packet has z==127.

alps.c | 26 +++++++++---------------
1 files changed, 10 insertions(+), 16 deletions(-)


diff -Nru a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
--- a/drivers/input/mouse/alps.c 2005-03-04 22:00:33 +01:00
+++ b/drivers/input/mouse/alps.c 2005-03-04 22:00:33 +01:00
@@ -124,8 +124,8 @@

/* Relative movement packet */
if (z == 127) {
- input_report_rel(dev2, REL_X, (x > 383 ? x : (x - 768)));
- input_report_rel(dev2, REL_Y, -(y > 255 ? y : (x - 512)));
+ input_report_rel(dev2, REL_X, (x > 383 ? (x - 768) : x));
+ input_report_rel(dev2, REL_Y, -(y > 255 ? (x - 512) : y));
input_sync(dev2);
return;
}
diff -Nru a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
--- a/drivers/input/mouse/alps.c 2005-03-04 22:00:49 +01:00
+++ b/drivers/input/mouse/alps.c 2005-03-04 22:00:49 +01:00
@@ -115,20 +115,14 @@
ges = packet[2] & 1;
fin = packet[2] & 2;

- /* Dualpoint has stick buttons in byte 0 */
- if (priv->i->flags & ALPS_DUALPOINT) {
-
- input_report_key(dev2, BTN_LEFT, packet[0] & 1);
- input_report_key(dev2, BTN_MIDDLE, (packet[0] >> 2) & 1);
- input_report_key(dev2, BTN_RIGHT, (packet[0] >> 1) & 1);
-
- /* Relative movement packet */
- if (z == 127) {
- input_report_rel(dev2, REL_X, (x > 383 ? (x - 768) : x));
- input_report_rel(dev2, REL_Y, -(y > 255 ? (x - 512) : y));
- input_sync(dev2);
- return;
- }
+ if ((priv->i->flags & ALPS_DUALPOINT) && z == 127) {
+ input_report_key(dev2, BTN_LEFT, left);
+ input_report_key(dev2, BTN_RIGHT, right);
+ input_report_key(dev2, BTN_MIDDLE, middle);
+ input_report_rel(dev2, REL_X, (x > 383 ? (x - 768) : x));
+ input_report_rel(dev2, REL_Y, -(y > 255 ? (x - 512) : y));
+ input_sync(dev2);
+ return;
}

/* Convert hardware tap to a reasonable Z value */

--
Vojtech Pavlik
SuSE Labs, SuSE CR
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/