aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-input.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2017-05-10 17:12:52 +0200
committerJiri Kosina <jkosina@suse.cz>2017-05-11 10:27:48 +0200
commit61df56bef97e1708bfbc006b307b00834ad61fe8 (patch)
treec27725afb17fd8e1d57d78a51eac5cddb1a7a85d /drivers/hid/hid-input.c
parentMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid (diff)
downloadlinux-dev-61df56bef97e1708bfbc006b307b00834ad61fe8.tar.xz
linux-dev-61df56bef97e1708bfbc006b307b00834ad61fe8.zip
HID: Add mapping for Microsoft Win8 Wireless Radio Controls extensions
Microsoft has defined some extra HUT codes for the Generic Desktop Page for Wireless Radio controls, see: https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/airplane-mode-radio-management https://web.archive.org/web/20170509144631/https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/airplane-mode-radio-management I've 3 2-in-1 keyboard docks: Dell Venue Pro 11 keyboard dock, HP pavilion x2 keyboard dock and a PEAQ C1010 keyboard dock which have a wireless radio toggle hotkey, which uses the 0x000100c6 HUT code defined in these extensions. This commit adds a mapping for this key, this makes the rfkill toggle hotkey work on the Dell Venue Pro 11 and HP Pavilion X2 keyboards, the PEAQ C1010 keyboard does generate events for the 0x000100c6 HUT code when pressed, but the reported value is always 0. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-input.c')
-rw-r--r--drivers/hid/hid-input.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index a1ebdd7d4d4d..412040b11268 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -656,6 +656,15 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
case HID_GD_START: map_key_clear(BTN_START); break;
case HID_GD_SELECT: map_key_clear(BTN_SELECT); break;
+ case HID_GD_RFKILL_BTN:
+ /* MS wireless radio ctl extension, also check CA */
+ if (field->application == 0x0001000c) {
+ map_key_clear(KEY_RFKILL);
+ /* We need to simulate the btn release */
+ field->flags |= HID_MAIN_ITEM_RELATIVE;
+ break;
+ }
+
default: goto unknown;
}