Hi Matthew: Matthew Garrett wrote: > This is the version I'm planning on applying - look ok? I've skipped the > OSD stuff, since right now we're not going to do anything terribly > useful with them. I'd prefer some consensus on where we're going with > these notifications. > > commit d0cc3d9de1b8e97a7176ddc7efe48239896100c1 > Author: Matthew Garrett <mjg@xxxxxxxxxx> > Date: Wed Apr 29 18:07:30 2009 +0100 > > From: Mario Limonciello <mario_limonciello@xxxxxxxx> > > dell-wmi: Add additional keyboard events > > Upcoming Dell hardware will send more keyboard events via WMI. Add support > for them. > > Signed-off-by: Mario Limonciello <mario_limonciello@xxxxxxxx> > > diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c > index 81d7179..847f486 100644 > --- a/drivers/platform/x86/dell-wmi.c > +++ b/drivers/platform/x86/dell-wmi.c > @@ -48,8 +48,49 @@ struct key_entry { > > enum { KE_KEY, KE_SW, KE_END }; > > +/* > + * There are some additional events sent as scancodes, but these are > + * not currently terribly relevant to Linux. They are: > + * > + * 0xe020: Mute > + * 0xe02e: Volume down > + * 0xe030: Volume up > + * 0xe00c: Keyboard illumination toggle > + * 0xe033: Keyboard illumination up > + * 0xe034: Keyboard illumination down > + * 0xe00d: BIOS error detected > + * 0xe013: Ambient light sensor toggle > + * 0xe03a: Caps lock > + * 0xe045: Num lock > + * 0xe046: Scroll lock > + * > + * All of these are either notifications (rather than requests for change) or > + * are also sent via the keyboard controller > + */ > + > 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}, > + > + /* 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}, > + > + /* 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}, > + > + /* Wifi Catcher */ > + {KE_KEY, 0xe011, KEY_PROG2}, > + > + /* Battery health status button */ > + {KE_KEY, 0xe007, KEY_BATTERY}, > + > {KE_END, 0} > }; > Two additional comments: 1) Rather than KEY_DISPLAYTOGGLE, it would make more sense to use KEY_SWITCHVIDEOMODE. 2) There is another scancode that should be tied to KEY_SWITCHVIDEOMODE, 0xe09b. Machines will support one or the other, but not both. Regards -- Mario Limonciello *Dell | Linux Engineering* mario_limonciello@xxxxxxxx
Attachment:
signature.asc
Description: OpenPGP digital signature