Really fix non functional hotkeys on Asus FX503VD (#1645070)

This commit is contained in:
Hans de Goede 2018-12-11 12:24:42 +01:00
parent 28efc2b6d8
commit 6a45433b3d
2 changed files with 52 additions and 24 deletions

View File

@ -1,4 +1,4 @@
From 330c27ee59fb76db02c671ac4cb32914565aa609 Mon Sep 17 00:00:00 2001 From c1dfbd7a588e43be466d12c3636f5670aef04847 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com> From: Hans de Goede <hdegoede@redhat.com>
Date: Fri, 23 Nov 2018 13:31:00 +0100 Date: Fri, 23 Nov 2018 13:31:00 +0100
Subject: [PATCH 1/2] HID: asus: Add event handler to catch unmapped Asus Subject: [PATCH 1/2] HID: asus: Add event handler to catch unmapped Asus
@ -16,21 +16,22 @@ and add them to the asus_input_mapping() function.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
--- ---
drivers/hid/hid-asus.c | 12 ++++++++++++ drivers/hid/hid-asus.c | 13 +++++++++++++
1 file changed, 12 insertions(+) 1 file changed, 13 insertions(+)
diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
index a1fa2fc8c9b5..043120cc4b97 100644 index a1fa2fc8c9b5..61fb5a43c1cb 100644
--- a/drivers/hid/hid-asus.c --- a/drivers/hid/hid-asus.c
+++ b/drivers/hid/hid-asus.c +++ b/drivers/hid/hid-asus.c
@@ -241,6 +241,17 @@ static int asus_report_input(struct asus_drvdata *drvdat, u8 *data, int size) @@ -241,6 +241,18 @@ static int asus_report_input(struct asus_drvdata *drvdat, u8 *data, int size)
return 1; return 1;
} }
+static int asus_event(struct hid_device *hdev, struct hid_field *field, +static int asus_event(struct hid_device *hdev, struct hid_field *field,
+ struct hid_usage *usage, __s32 value) + struct hid_usage *usage, __s32 value)
+{ +{
+ if ((usage->hid & HID_USAGE_PAGE) == 0xff310000 && !usage->type) { + if ((usage->hid & HID_USAGE_PAGE) == 0xff310000 &&
+ (usage->hid & HID_USAGE) != 0x00 && !usage->type) {
+ hid_warn(hdev, "Unmapped Asus vendor usagepage code 0x%02x\n", + hid_warn(hdev, "Unmapped Asus vendor usagepage code 0x%02x\n",
+ usage->hid & HID_USAGE); + usage->hid & HID_USAGE);
+ } + }
@ -41,7 +42,7 @@ index a1fa2fc8c9b5..043120cc4b97 100644
static int asus_raw_event(struct hid_device *hdev, static int asus_raw_event(struct hid_device *hdev,
struct hid_report *report, u8 *data, int size) struct hid_report *report, u8 *data, int size)
{ {
@@ -832,6 +843,7 @@ static struct hid_driver asus_driver = { @@ -832,6 +844,7 @@ static struct hid_driver asus_driver = {
#ifdef CONFIG_PM #ifdef CONFIG_PM
.reset_resume = asus_reset_resume, .reset_resume = asus_reset_resume,
#endif #endif
@ -50,40 +51,64 @@ index a1fa2fc8c9b5..043120cc4b97 100644
}; };
module_hid_driver(asus_driver); module_hid_driver(asus_driver);
-- --
2.19.1 2.19.2
From 71256aaf9979072c9bd99fb08db586731e3ccf55 Mon Sep 17 00:00:00 2001 From 53cb4c986eaedd2cfa161932b36d80c70d947e9e Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com> From: Hans de Goede <hdegoede@redhat.com>
Date: Fri, 23 Nov 2018 13:44:27 +0100 Date: Fri, 23 Nov 2018 13:44:27 +0100
Subject: [PATCH 2/2] HID: asus: Add USB-id for the ASUS FX503VD laptop Subject: [PATCH 2/2] HID: asus: Add support for the ASUS FX503VD laptop
The ASUS FX503VD laptop uses an USB keyboard with several hotkeys The ASUS FX503VD laptop uses an USB keyboard with several hotkeys
which use the Asus Vendor specific UsagePage. which use the Asus Vendor specific UsagePage.
At the USB-id for this keyboard to the hid-asus driver so that these This uses two usage-codes within the page which have not been seen
custom usages get properly mapped. before, 0x7c for its mic-mute hotkey and 0x99 for Fn+F5 which has
a "fan" symbol as hotkey symbol on the keyb. we map this to KEY_PROG4
(PROG1-PROG3 are already used).
This commit adds the mappings for the 2 new usage codes and the USB-ids
for this keyboard to the hid-asus driver.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
--- ---
drivers/hid/hid-asus.c | 2 ++ drivers/hid/hid-asus.c | 7 +++++++
drivers/hid/hid-ids.h | 1 + drivers/hid/hid-ids.h | 1 +
2 files changed, 3 insertions(+) 2 files changed, 8 insertions(+)
diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
index 043120cc4b97..6e9470e00c69 100644 index 61fb5a43c1cb..ab8bd40a77ed 100644
--- a/drivers/hid/hid-asus.c --- a/drivers/hid/hid-asus.c
+++ b/drivers/hid/hid-asus.c +++ b/drivers/hid/hid-asus.c
@@ -806,6 +806,8 @@ static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc, @@ -522,6 +522,7 @@ static int asus_input_mapping(struct hid_device *hdev,
} case 0x20: asus_map_key_clear(KEY_BRIGHTNESSUP); break;
case 0x35: asus_map_key_clear(KEY_DISPLAY_OFF); break;
case 0x6c: asus_map_key_clear(KEY_SLEEP); break;
+ case 0x7c: asus_map_key_clear(KEY_MICMUTE); break;
case 0x82: asus_map_key_clear(KEY_CAMERA); break;
case 0x88: asus_map_key_clear(KEY_RFKILL); break;
case 0xb5: asus_map_key_clear(KEY_CALC); break;
@@ -540,6 +541,9 @@ static int asus_input_mapping(struct hid_device *hdev,
/* Fn+Space Power4Gear Hybrid */
case 0x5c: asus_map_key_clear(KEY_PROG3); break;
static const struct hid_device_id asus_devices[] = { + /* Fn+F5 "fan" symbol on FX503VD */
+ case 0x99: asus_map_key_clear(KEY_PROG4); break;
+
default:
/* ASUS lazily declares 256 usages, ignore the rest,
* as some make the keyboard appear as a pointer device. */
@@ -817,6 +821,9 @@ static const struct hid_device_id asus_devices[] = {
USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2), QUIRK_USE_KBD_BACKLIGHT },
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3), QUIRK_G752_KEYBOARD },
+ { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
+ USB_DEVICE_ID_ASUSTEK_FX503VD_KEYBOARD) }, + USB_DEVICE_ID_ASUSTEK_FX503VD_KEYBOARD),
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, + QUIRK_USE_KBD_BACKLIGHT },
USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD), I2C_KEYBOARD_QUIRKS}, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD),
QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index c0d668944dbe..5ae1db6fa5c8 100644 index ed35c9a9a110..4206428c0ba2 100644
--- a/drivers/hid/hid-ids.h --- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h
@@ -190,6 +190,7 @@ @@ -190,6 +190,7 @@
@ -95,5 +120,5 @@ index c0d668944dbe..5ae1db6fa5c8 100644
#define USB_VENDOR_ID_ATEN 0x0557 #define USB_VENDOR_ID_ATEN 0x0557
#define USB_DEVICE_ID_ATEN_UC100KM 0x2004 #define USB_DEVICE_ID_ATEN_UC100KM 0x2004
-- --
2.19.1 2.19.2

View File

@ -1881,6 +1881,9 @@ fi
# #
# #
%changelog %changelog
* Tue Dec 11 2018 Hans de Goede <hdegoede@redhat.com>
- Really fix non functional hotkeys on Asus FX503VD (#1645070)
* Mon Dec 10 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.20.0-0.rc6.git0.1 * Mon Dec 10 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.20.0-0.rc6.git0.1
- Linux v4.20-rc6 - Linux v4.20-rc6