--- a/drivers/platform/x86/dell-wmi.c~ 2009-04-21 11:19:04.000000000 -0500 +++ a/drivers/platform/x86/dell-wmi.c 2009-04-21 11:51:39.000000000 -0500 @@ -49,8 +49,70 @@ enum { KE_KEY, KE_SW, KE_END }; static struct key_entry dell_wmi_keymap[] = { - {KE_KEY, 0xe045, KEY_PROG1}, {KE_KEY, 0xe009, KEY_EJECTCD}, + + /* Inside the structure for a brightness keycode, a new brightness + * level will be reported after the scancode (at offset 6) + */ + {KE_KEY, 0xe006, KEY_BRIGHTNESSUP}, + {KE_KEY, 0xe005, KEY_BRIGHTNESSDOWN}, + + /* The volume hotkeys are here so that the the OS + * can be notified and show an OSD. The keys will still + * send out a scan code via the EC. + {KE_KEY, 0xe030, KEY_VOLUMEUP}, + {KE_KEY, 0xe02e, KEY_VOLUMEDOWN}, + {KE_KEY, 0xe020, KEY_MUTE}, + */ + + /* A majority of platforms support a simple toggle event, but + * some actually have support to raise or lower the backlit keyboard + * brightness with different keys. + * The brightness is changed by the EC, these are here just to report + * that information to the OS to show an OSD. + {KE_KEY, 0xe00c, KEY_KBDILLUMTOGGLE}, + {KE_KEY, 0xe033, KEY_KBDILLUMUP}, + {KE_KEY, 0xe034, KEY_KBDILLUMDOWN}, + */ + + /* Inside the structure for a display switch, the next device is + * reported at offset 6, the active devices at offset 8, and the + * attached devices at offset 10 + */ + {KE_KEY, 0xe00b, KEY_DISPLAYTOGGLE}, + + /* This is actually for all radios on one button */ + {KE_SW, 0xe008, KEY_WLAN}, + + /* Wifi Catcher */ + {KE_KEY, 0xe011, KEY_PROG1}, + + /* Battery health status button */ + {KE_KEY, 0xe007, KEY_BATTERY}, + + /* This is the scan code sent when there is a BIOS error detected. + * What happens in these situations will need to be further elaborated + * upon + {KE_KEY, 0xe00d, error scan code}, + */ + + /* Ambient light sensor is actually toggled by the BIOS and/or EC. + * This is for informative purposes of notifying the OS via an OSD. + * The new status will be at offset 6, the current limit at offset 8 + * and the absolute limit at offset 10 + {KE_KEY, 0xe013, ambient light sensor code}, + */ + + /* The *lock keys are here so that the the OS + * can be notified and show an OSD. The keys will still + * send out a scan code via the EC. + * If the system contains LEDs for these buttons, the WMI + * events will not be sent out + {KE_KEY, 0x003a, KEY_CAPSLOCK}, + {KE_KEY, 0xe045, KEY_NUMLOCK}, + {KE_KEY, 0xe046, KEY_SCROLLLOCK}, + */ + {KE_END, 0} };