Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 628edcde authored by Jiri Kosina's avatar Jiri Kosina
Browse files

HID: proper handling of MS 4k and 6k devices



This removes ugly macros IS_* to distinguish devices that
need special handling in hid-input, and establish proper
quirks for them.

Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 9a15c997
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -349,9 +349,6 @@ int hidinput_mapping_quirks(struct hid_usage *usage,
	return 0;
}

#define IS_BTC8193(x) (x->vendor == 0x0518 && x->product == 0x0002)
#define IS_MS_KB(x) (x->vendor == 0x045e && (x->product == 0x00db || x->product == 0x00f9))

void hidinput_event_quirks(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value)
{
	struct input_dev *input;
@@ -392,7 +389,8 @@ void hidinput_event_quirks(struct hid_device *hid, struct hid_field *field, stru
		return;

	/* Handling MS keyboards special buttons */
	if (IS_MS_KB(hid) && usage->hid == (HID_UP_MSVENDOR | 0xff05)) {
	if (hid->quirks & HID_QUIRK_MICROSOFT_KEYS && 
			usage->hid == (HID_UP_MSVENDOR | 0xff05)) {
		int key = 0;
		static int last_key = 0;
		switch (value) {
+5 −0
Original line number Diff line number Diff line
@@ -305,6 +305,8 @@
#define USB_VENDOR_ID_MICROSOFT		0x045e
#define USB_DEVICE_ID_SIDEWINDER_GV	0x003b
#define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d
#define USB_DEVICE_ID_MS_NE4K		0x00db
#define USB_DEVICE_ID_MS_LK6K		0x00f9

#define USB_VENDOR_ID_MONTEREY		0x0566
#define USB_DEVICE_ID_GENIUS_KB29E	0x3004
@@ -534,6 +536,9 @@ static const struct hid_blacklist {
	{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
	{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },

	{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K, HID_QUIRK_MICROSOFT_KEYS },
	{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_LK6K, HID_QUIRK_MICROSOFT_KEYS },

	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL },

	{ USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS },
+1 −0
Original line number Diff line number Diff line
@@ -283,6 +283,7 @@ struct hid_item {
#define HID_QUIRK_IGNORE_HIDINPUT		0x01000000
#define HID_QUIRK_2WHEEL_MOUSE_HACK_B8		0x02000000
#define HID_QUIRK_HWHEEL_WHEEL_INVERT		0x04000000
#define HID_QUIRK_MICROSOFT_KEYS		0x08000000

/*
 * Separate quirks for runtime report descriptor fixup