|
@@ -89,6 +89,29 @@ static int quirk_logitech_ultrax_remote(struct hid_usage *usage, struct input_de
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+static int quirk_gyration_remote(struct hid_usage *usage, struct input_dev *input,
|
|
|
+ unsigned long **bit, int *max)
|
|
|
+{
|
|
|
+ if ((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ set_bit(EV_REP, input->evbit);
|
|
|
+ switch(usage->hid & HID_USAGE) {
|
|
|
+ /* Reported on Gyration MCE Remote */
|
|
|
+ case 0x00d: map_key_clear(KEY_HOME); break;
|
|
|
+ case 0x024: map_key_clear(KEY_DVD); break;
|
|
|
+ case 0x025: map_key_clear(KEY_PVR); break;
|
|
|
+ case 0x046: map_key_clear(KEY_MEDIA); break;
|
|
|
+ case 0x047: map_key_clear(KEY_MP3); break;
|
|
|
+ case 0x049: map_key_clear(KEY_CAMERA); break;
|
|
|
+ case 0x04a: map_key_clear(KEY_VIDEO); break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
static int quirk_chicony_tactical_pad(struct hid_usage *usage, struct input_dev *input,
|
|
|
unsigned long **bit, int *max)
|
|
|
{
|
|
@@ -303,6 +326,9 @@ static int quirk_sunplus_wdesktop(struct hid_usage *usage, struct input_dev *inp
|
|
|
#define VENDOR_ID_EZKEY 0x0518
|
|
|
#define DEVICE_ID_BTC_8193 0x0002
|
|
|
|
|
|
+#define VENDOR_ID_GYRATION 0x0c16
|
|
|
+#define DEVICE_ID_GYRATION_REMOTE 0x0002
|
|
|
+
|
|
|
#define VENDOR_ID_LOGITECH 0x046d
|
|
|
#define DEVICE_ID_LOGITECH_RECEIVER 0xc101
|
|
|
#define DEVICE_ID_S510_RECEIVER 0xc50c
|
|
@@ -337,6 +363,8 @@ static const struct hid_input_blacklist {
|
|
|
|
|
|
{ VENDOR_ID_EZKEY, DEVICE_ID_BTC_8193, quirk_btc_8193 },
|
|
|
|
|
|
+ { VENDOR_ID_GYRATION, DEVICE_ID_GYRATION_REMOTE, quirk_gyration_remote },
|
|
|
+
|
|
|
{ VENDOR_ID_LOGITECH, DEVICE_ID_LOGITECH_RECEIVER, quirk_logitech_ultrax_remote },
|
|
|
{ VENDOR_ID_LOGITECH, DEVICE_ID_S510_RECEIVER, quirk_logitech_wireless },
|
|
|
{ VENDOR_ID_LOGITECH, DEVICE_ID_S510_RECEIVER_2, quirk_logitech_wireless },
|