]> xenbits.xensource.com Git - people/royger/linux-2.6.18-xen.git/commitdiff
linux-2.6.18/Input: mousedev - handle mice that use absolute
authorOlaf Hering <olaf@aepfle.de>
Thu, 22 Sep 2011 17:57:57 +0000 (18:57 +0100)
committerOlaf Hering <olaf@aepfle.de>
Thu, 22 Sep 2011 17:57:57 +0000 (18:57 +0100)
coordinates

After commit 1083:211849d9d511 the mouse multiplexer /dev/input/mice
does not receive updates because the base kernel lacks a change from
2.6.24. If xorg.conf uses the mouse driver instead of the evdev
driver,
the mouse is stuck because now the "Xen Virtual Pointer" is not seen
as
a mouse anymore.  Adding the backported patch below fixes it.

Mainline commit 6724f93463c332018e05f538a2ab3ce41eac0e8a

        Input: mousedev - handle mice that use absolute coordinates

        Devices like the HP Integrated Remote Console Virtual Mouse,
        which are
        standard equipment on all Proliant and Integrity servers,
        produce
        absolute coordinates instead of relative coordinates.  This is
        done to
        synchronize the position of the mouse cursor on the client
        desktop
        with the mouse cursor position on the server.  Mousedev is not
        designed to pass those absolute events directly to X, but it
        can
        translate them into relative movements.  It currently does
        this for
        tablet like devices and touchpads.  This patch merely tells it
        to also
        include a device with ABS_X, ABS_Y, and mouse buttons in its
        list of
        devices to process input for.

        This patch enables the mouse pointer to move when using the
        remote
        console.

Signed-off-by: Micah Parrish <micah.parrish@hp.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Olaf Hering <olaf@aepfle.de>
drivers/input/mousedev.c

index 1f851acab30db2f692ab74886256701409432110..b94c7efecb0d5111731ac061bbf604dad40a5dfb 100644 (file)
@@ -712,6 +712,12 @@ static struct input_device_id mousedev_ids[] = {
                .keybit = { [LONG(BTN_TOOL_FINGER)] = BIT(BTN_TOOL_FINGER) },
                .absbit = { BIT(ABS_X) | BIT(ABS_Y) | BIT(ABS_PRESSURE) | BIT(ABS_TOOL_WIDTH) },
        },      /* A touchpad */
+       {
+               .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_KEYBIT | INPUT_DEVICE_ID_MATCH_ABSBIT,
+               .evbit = { BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_SYN) },
+               .keybit = { [LONG(BTN_LEFT)] = BIT(BTN_LEFT) },
+               .absbit = { BIT(ABS_X) | BIT(ABS_Y) },
+       },      /* Mouse-like device with absolute X and Y but ordinary clicks, like hp ILO2 High Performance mouse */
 
        { },    /* Terminating entry */
 };