dell-wmi: add additional keyboard events
Subsystems (2)
PATCH 2/4 dell-wmi: add additional keyboard events
From: Mario Limonciello <[email protected]>
Upcoming Dell hardware will send more keyboard events via WMI. Add support for them.
Signed-off-by Mario Limonciello <[email protected]>
Signed-off-by Matthew Garrett <[email protected]>
Cc Len Brown <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
---
drivers/platform/x86/dell-wmi.c | 45 +++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-)
drivers/platform/x86/dell-wmi.c renamed from drivers/platform/x86/dell-wmi.c~dell-wmi-add-additional-keyboard-events +44 -1
@@ -46,10 +46,53 @@ struct key_entry {u16 keycode; }; -enum {KE_KEY ,KE_SW ,KE_END }; +enum {KE_KEY ,KE_SW ,KE_IGNORE ,KE_END }; + +/* +* Certain keys are flagged as KE_IGNORE. All of these are either +* notifications (rather than requests for change) or are also sent +* via the keyboard controller so should not be sent again. +*/ static struct key_entry dell_wmi_keymap[] = { {KE_KEY ,0xe045 ,KEY_PROG1 }, + {KE_KEY ,0xe009 ,KEY_EJECTCD }, + +/* These also contain the brightness level at offset 6 */ + {KE_KEY ,0xe006 ,KEY_BRIGHTNESSUP }, + {KE_KEY ,0xe005 ,KEY_BRIGHTNESSDOWN }, + +/* Battery health status button */ + {KE_KEY ,0xe007 ,KEY_BATTERY }, + +/* This is actually for all radios. Although physically a +* switch, the notification does not provide an indication of +* state and so it should be reported as a key */ + {KE_KEY ,0xe008 ,KEY_WLAN }, + +/* The next device is at offset 6, the active devices are at +offset 8 and the attached devices at offset 10 */ + {KE_KEY ,0xe00b ,KEY_DISPLAYTOGGLE }, + + {KE_IGNORE ,0xe00c ,KEY_KBDILLUMTOGGLE }, + +/* BIOS error detected */ + {KE_IGNORE ,0xe00d ,KEY_RESERVED }, + +/* Wifi Catcher */ + {KE_KEY ,0xe011 ,KEY_PROG2 }, + +/* Ambient light sensor toggle */ + {KE_IGNORE ,0xe013 ,KEY_RESERVED }, + + {KE_IGNORE ,0xe020 ,KEY_MUTE }, + {KE_IGNORE ,0xe02e ,KEY_VOLUMEDOWN }, + {KE_IGNORE ,0xe030 ,KEY_VOLUMEUP }, + {KE_IGNORE ,0xe033 ,KEY_KBDILLUMUP }, + {KE_IGNORE ,0xe034 ,KEY_KBDILLUMDOWN }, + {KE_IGNORE ,0xe03a ,KEY_CAPSLOCK }, + {KE_IGNORE ,0xe045 ,KEY_NUMLOCK }, + {KE_IGNORE ,0xe046 ,KEY_SCROLLLOCK }, {KE_END ,0 } };
_