From patchwork Mon Jan 28 18:44:58 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [precise/quantal] SRU: LP1007575 USB Headset interferes with mouse function Date: Mon, 28 Jan 2013 08:44:58 -0000 From: Dave Chiluk X-Patchwork-Id: 216300 Message-Id: <5106C72A.1040608@canonical.com> To: kernel-team@lists.ubuntu.com SRU Justification: Impact: * Plugging in a SB Arena USB headset or a number of other usb headsets causes the current window to hold focus, and prevent other windows from being selected essentially making the desktop unusable. * Without this patch users are forced to not use these devices. Fix: * cherry picked from upstream commit 929578ab0339fe42bb3ceeaa2e6607189cddf70b * This fix was arrived at via bisection, and has been verified in LP1080882 * Fixes the button mappings for the volume control which shows up as a hid device which is attached to the headset. Testcase: * Create 2 windows * With focus set on one of them * Plug in the headset * Attempt to change focus using the mouse to the other window. * User will not be able to select focus on the other window. Patches for Quantal and Precise attached. Dave. >From 289de7981abc6581c034dbd8baa3354f61262ed7 Mon Sep 17 00:00:00 2001 From: Keng-Yu Lin Date: Fri, 6 Jul 2012 18:06:11 +0800 Subject: [PATCH] HID: Add suport for the brightness control keys on HP keyboards The keys are found on the keyboards bundled with HP All-In-One machines with USB VID/PID of 04ca:004d and 04f2:1061. Signed-off-by: Keng-Yu Lin Signed-off-by: Jiri Kosina (cherry picked from commit 929578ab0339fe42bb3ceeaa2e6607189cddf70b) Signed-off-by: David Chiluk --- drivers/hid/hid-input.c | 9 +++++++++ include/linux/hid.h | 1 + 2 files changed, 10 insertions(+) diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 5301006..811bfad 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -837,6 +837,15 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel } break; + case HID_UP_HPVENDOR2: + set_bit(EV_REP, input->evbit); + switch (usage->hid & HID_USAGE) { + case 0x003: map_key_clear(KEY_BRIGHTNESSDOWN); break; + case 0x004: map_key_clear(KEY_BRIGHTNESSUP); break; + default: goto ignore; + } + break; + case HID_UP_MSVENDOR: goto ignore; diff --git a/include/linux/hid.h b/include/linux/hid.h index 449fa38..42970de 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -200,6 +200,7 @@ struct hid_item { #define HID_UP_DIGITIZER 0x000d0000 #define HID_UP_PID 0x000f0000 #define HID_UP_HPVENDOR 0xff7f0000 +#define HID_UP_HPVENDOR2 0xff010000 #define HID_UP_MSVENDOR 0xff000000 #define HID_UP_CUSTOM 0x00ff0000 #define HID_UP_LOGIVENDOR 0xffbc0000 -- 1.7.9.5