From f435add45ddde2ebfe701bd407f3dbcc46eebbf9 Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Thu, 22 Sep 2011 18:57:57 +0100 Subject: [PATCH] linux-2.6.18/Input: mousedev - handle mice that use absolute 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 Signed-off-by: Dmitry Torokhov Signed-off-by: Olaf Hering --- drivers/input/mousedev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c index 1f851aca..b94c7efe 100644 --- a/drivers/input/mousedev.c +++ b/drivers/input/mousedev.c @@ -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 */ }; -- 2.39.5