From fba3344b370a8d320e37f55ca7f7b666e4117e9f Mon Sep 17 00:00:00 2001 From: Anssi Hannula Date: Sat, 4 Nov 2006 22:49:53 -0500 Subject: [PATCH] --- yaml --- r: 40698 b: refs/heads/master c: 41ad5fbabda0c3930136bb40cfc7a0c23013365f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/input/hid-core.c | 7 ++++++- trunk/drivers/usb/input/hid-input.c | 4 ++++ trunk/drivers/usb/input/hid.h | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 3ab8ab315e56..96e82f5c263e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 752c58a471c108d64da1676b2925dfbd83eb177e +refs/heads/master: 41ad5fbabda0c3930136bb40cfc7a0c23013365f diff --git a/trunk/drivers/usb/input/hid-core.c b/trunk/drivers/usb/input/hid-core.c index 6daf85c6eeee..6095d9cedb7e 100644 --- a/trunk/drivers/usb/input/hid-core.c +++ b/trunk/drivers/usb/input/hid-core.c @@ -1643,6 +1643,9 @@ void hid_init_reports(struct hid_device *hid) #define USB_VENDOR_ID_AIRCABLE 0x16CA #define USB_DEVICE_ID_AIRCABLE1 0x1502 +#define USB_VENDOR_ID_LOGITECH 0x046d +#define USB_DEVICE_ID_LOGITECH_USB_RECEIVER 0xc101 + /* * Alphabetically sorted blacklist by quirk type. */ @@ -1811,7 +1814,9 @@ static const struct hid_blacklist { { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE }, { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET }, - + + { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_USB_RECEIVER, HID_QUIRK_BAD_RELATIVE_KEYS }, + { 0, 0 } }; diff --git a/trunk/drivers/usb/input/hid-input.c b/trunk/drivers/usb/input/hid-input.c index 9a808a3b4d37..c8ce65c70a42 100644 --- a/trunk/drivers/usb/input/hid-input.c +++ b/trunk/drivers/usb/input/hid-input.c @@ -564,6 +564,10 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel || ((device->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_7) && (usage->hid == 0x00090007))) goto ignore; + if ((device->quirks & HID_QUIRK_BAD_RELATIVE_KEYS) && + usage->type == EV_KEY && (field->flags & HID_MAIN_ITEM_RELATIVE)) + field->flags &= ~HID_MAIN_ITEM_RELATIVE; + set_bit(usage->type, input->evbit); while (usage->code <= max && test_and_set_bit(usage->code, bit)) diff --git a/trunk/drivers/usb/input/hid.h b/trunk/drivers/usb/input/hid.h index 9b50effef758..8aa9ec08e8ab 100644 --- a/trunk/drivers/usb/input/hid.h +++ b/trunk/drivers/usb/input/hid.h @@ -260,6 +260,7 @@ struct hid_item { #define HID_QUIRK_POWERBOOK_HAS_FN 0x00001000 #define HID_QUIRK_POWERBOOK_FN_ON 0x00002000 #define HID_QUIRK_INVERT_HWHEEL 0x00004000 +#define HID_QUIRK_BAD_RELATIVE_KEYS 0x00008000 /* * This is the global environment of the parser. This information is