Input: HID - add a quirk for the Logitech USB Receiver
authorAnssi Hannula <anssi.hannula@gmail.com>
Sun, 5 Nov 2006 03:49:53 +0000 (22:49 -0500)
committerDmitry Torokhov <dtor@insightbb.com>
Sun, 5 Nov 2006 03:49:53 +0000 (22:49 -0500)
commit41ad5fbabda0c3930136bb40cfc7a0c23013365f
treedb544c34e7cb6a4b785ab1c3b6aef69bc79363e3
parent752c58a471c108d64da1676b2925dfbd83eb177e
Input: HID - add a quirk for the Logitech USB Receiver

Logitech USB Receiver (046d:c101) has two interfaces. The first one
contains fields from HID_UP_KEYBOARD and HID_UP_LED, and the other one
contains fields from HID_UP_CONSUMER and HID_UP_LOGIVENDOR. This device
is used with multiple wireless Logitech products, including UltraX Media
Remote.

All fields on both interfaces are either keys or leds. All fields in the
first interface are marked as Absolute, while the fields in the second
interface are marked as Relative. Marking the keys as relative causes
hidinput_hid_event() to send release events right after key press
events.

The device has EV_REP set, so the userspace expects the device to send
repeat events if a key is held down. However, as hidinput_hid_event()
sends release events immediately, repeat events are not sent at all. In
fact, the userspace has no way of knowing if a key is being held down.

Fix this by adding a quirk for 046d:c101 which changes relative keys to
absolute ones.

Signed-off-by: Anssi Hannula <anssi.hannula@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/usb/input/hid-core.c
drivers/usb/input/hid-input.c
drivers/usb/input/hid.h