Patchwork [precise/quantal] SRU: LP1007575 USB Headset interferes with mouse function

login
register
mail settings
Submitter Dave Chiluk
Date Jan. 28, 2013, 6:44 p.m.
Message ID <5106C72A.1040608@canonical.com>
Download mbox | patch
Permalink /patch/216300/
State New
Headers show

Comments

Dave Chiluk - Jan. 28, 2013, 6:44 p.m.
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.
Tim Gardner - Jan. 29, 2013, 1:12 p.m.

Herton Ronaldo Krzesinski - Jan. 29, 2013, 1:54 p.m.
Ack for the patches. Although should affect only users of HP keyboards,
not sure everyone on the bugs has the same issue.
Tim Gardner - Jan. 29, 2013, 2:41 p.m.
Appears to already have been applied. Updated bug accordingly.

Patch

From 289de7981abc6581c034dbd8baa3354f61262ed7 Mon Sep 17 00:00:00 2001
From: Keng-Yu Lin <kengyu@canonical.com>
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 <kengyu@canonical.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 929578ab0339fe42bb3ceeaa2e6607189cddf70b)

Signed-off-by: David Chiluk <chiluk@canonical.com>
---
 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