[PATCH] Input: mousedev - fix regression of inverting axes
From: Christoph Fritz <hidden>
Date: 2010-08-21 13:46:03
Also in:
lkml
Subsystem:
input (keyboard, mouse, joystick, touchscreen) drivers, the rest · Maintainers:
Dmitry Torokhov, Linus Torvalds
On Fri, Aug 20, 2010 at 10:33:16PM +0200, Bruno Prémont wrote:
Somewhere between 2.6.35 and Linus's tree as of this writing gpm
started moving its cursor to the opposite direction of mouse movement.
e.g. moving mouse up causes cursor to move down, moving mouse left
causes cursor to go right
Under 2.6.35 the cursor moved into the same direction as the mouse.
Note, mouse is synaptics touchpad (Acer TravelMate660):
Synaptics Touchpad, model: 1, fw: 5.8, id: 0x9d48b1, caps: 0x904713/0x4006/0x0
When I get around to it I will try to get more precise information as
to when this regression got introduced, eventually bisecting.
BrunoThanks Bruno, I successfully tested the patch below with gpm. --- Introduced by 987a6c0298260b7aa40702b349282554d6180e4b a swap in max/min calculation gets fixed by this patch. Reported-by: Bruno Prémont <bonbons@linux-vserver.org> Signed-off-by: Christoph Fritz <redacted> --- drivers/input/mousedev.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
index 83c24cc..d528a2d 100644
--- a/drivers/input/mousedev.c
+++ b/drivers/input/mousedev.c@@ -138,8 +138,8 @@ static void mousedev_touchpad_event(struct input_dev *dev, fx(0) = value; if (mousedev->touch && mousedev->pkt_count >= 2) { - size = input_abs_get_min(dev, ABS_X) - - input_abs_get_max(dev, ABS_X); + size = input_abs_get_max(dev, ABS_X) - + input_abs_get_min(dev, ABS_X); if (size == 0) size = 256 * 2;
@@ -155,8 +155,8 @@ static void mousedev_touchpad_event(struct input_dev *dev, fy(0) = value; if (mousedev->touch && mousedev->pkt_count >= 2) { /* use X size for ABS_Y to keep the same scale */ - size = input_abs_get_min(dev, ABS_X) - - input_abs_get_max(dev, ABS_X); + size = input_abs_get_max(dev, ABS_X) - + input_abs_get_min(dev, ABS_X); if (size == 0) size = 256 * 2;
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html