| Jeff Brown | 590a9d6 | 2011-06-30 12:55:34 -0700 | [diff] [blame] | 1 | <!-- | 
 | 2 |    Copyright 2011 The Android Open Source Project | 
 | 3 |  | 
 | 4 |    Licensed under the Apache License, Version 2.0 (the "License"); | 
 | 5 |    you may not use this file except in compliance with the License. | 
 | 6 |    You may obtain a copy of the License at | 
 | 7 |  | 
 | 8 |        http://www.apache.org/licenses/LICENSE-2.0 | 
 | 9 |  | 
 | 10 |    Unless required by applicable law or agreed to in writing, software | 
 | 11 |    distributed under the License is distributed on an "AS IS" BASIS, | 
 | 12 |    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | 13 |    See the License for the specific language governing permissions and | 
 | 14 |    limitations under the License. | 
 | 15 | --> | 
 | 16 |  | 
 | 17 | # Keyboard Devices # | 
 | 18 |  | 
 | 19 | Android supports a variety of keyboard devices including special function | 
 | 20 | keypads (volume and power controls), compact embedded QWERTY keyboards, | 
 | 21 | and fully featured PC-style external keyboards. | 
 | 22 |  | 
 | 23 | This document decribes physical keyboards only.  Refer to the Android SDK | 
 | 24 | for information about soft keyboards (Input Method Editors). | 
 | 25 |  | 
 | 26 | ## Keyboard Classification ## | 
 | 27 |  | 
 | 28 | An input device is classified as a keyboard if either of the following | 
 | 29 | conditions hold: | 
 | 30 |  | 
 | 31 | *   The input device reports the presence of any Linux key codes used on keyboards | 
 | 32 |     including `0` through `0xff` or `KEY_OK` through `KEY_MAX`. | 
 | 33 |  | 
 | 34 | *   The input device reports the presence of any Linux key codes used on joysticks | 
 | 35 |     and gamepads including `BTN_0` through `BTN_9`, `BTN_TRIGGER` through `BTN_DEAD`, | 
 | 36 |     or `BTN_A` through `BTN_THUMBR`. | 
 | 37 |  | 
 | 38 | Joysticks are currently classified as keyboards because joystick and gamepad buttons | 
 | 39 | are reported by `EV_KEY` events in the same way keyboard keys are reported.  Thus | 
 | 40 | joysticks and gamepads also make use of key map files for configuration. | 
 | 41 | Refer to the section on [Joystick Devices](/tech/input/joystick-devices.html) for | 
 | 42 | more information. | 
 | 43 |  | 
 | 44 | Once an input device has been classified as a keyboard, the system loads the | 
 | 45 | input device configuration file and keyboard layout for the keyboard. | 
 | 46 |  | 
 | 47 | The system then tries to determine additional characteristics of the device. | 
 | 48 |  | 
 | 49 | *   If the input device has any keys that are mapped to `KEYCODE_Q`, then the | 
 | 50 |     device is considered to have an alphabetic keypad (as opposed to numeric). | 
 | 51 |     The alphabetic keypad capability is reported in the resource `Configuration` | 
 | 52 |     object as `KEYBOARD_QWERTY`. | 
 | 53 |  | 
 | 54 | *   If the input device has any keys that are mapped to `KEYCODE_DPAD_UP`, | 
 | 55 |     `KEYCODE_DPAD_DOWN`, `KEYCODE_DPAD_LEFT`, `KEYCODE_DPAD_RIGHT`, and | 
 | 56 |     `KEYCODE_DPAD_CENTER` (all must be present), then the device is considered | 
 | 57 |     to have a directional keypad. | 
 | 58 |     The directional keypad capability is reported in the resource `Configuration` | 
 | 59 |     object as `NAVIGATION_DPAD`. | 
 | 60 |  | 
 | 61 | *   If the input device has any keys that are mapped to `KEYCODE_BUTTON_A` | 
 | 62 |     or other gamepad related keys, then the device is considered to have a gamepad. | 
 | 63 |  | 
 | 64 | ## Keyboard Driver Requirements ## | 
 | 65 |  | 
 | 66 | 1.  Keyboard drivers should only register key codes for the keys that they | 
 | 67 |     actually support.  Registering excess key codes may confuse the device | 
 | 68 |     classification algorithm or cause the system to incorrectly detect | 
 | 69 |     the supported keyboard capabilities of the device. | 
 | 70 |  | 
 | 71 | 2.  Keyboard drivers should use `EV_KEY` to report key presses, using a value | 
 | 72 |     of `0` to indicate that a key is released, a value of `1` to indicate that | 
 | 73 |     a key is pressed, and a value greater than or equal to `2` to indicate that | 
 | 74 |     the key is being repeated automatically. | 
 | 75 |  | 
 | 76 | 3.  Android performs its own keyboard repeating.  Auto-repeat functionality | 
 | 77 |     should be disabled in the driver. | 
 | 78 |  | 
 | 79 | 4.  Keyboard drivers may optionally indicate the HID usage or low-level scan | 
 | 80 |     code by sending `EV_MSC` with `MSC_SCANCODE` and a valud indicating the usage | 
 | 81 |     or scan code when the key is pressed.  This information is not currently | 
 | 82 |     used by Android. | 
 | 83 |  | 
 | 84 | 5.  Keyboard drivers should support setting LED states when `EV_LED` is written | 
 | 85 |     to the device.  The `hid-input` driver handles this automatically. | 
 | 86 |     At the time of this writing, Android uses `LED_CAPSLOCK`, `LED_SCROLLLOCK`, | 
 | 87 |     and `LED_NUMLOCK`.  These LEDs only need to be supported when the | 
 | 88 |     keyboard actually has the associated indicator lights. | 
 | 89 |  | 
 | 90 | 6.  Keyboard drivers for embedded keypads (for example, using a GPIO matrix) | 
 | 91 |     should make sure to send `EV_KEY` events with a value of `0` for any keys that | 
 | 92 |     are still pressed when the device is going to sleep.  Otherwise keys might | 
 | 93 |     get stuck down and will auto-repeat forever. | 
 | 94 |  | 
 | 95 | ## Keyboard Operation ## | 
 | 96 |  | 
 | 97 | The following is a brief summary of the keyboard operation on Android. | 
 | 98 |  | 
 | 99 | 1.  The `EventHub` reads raw events from the `evdev` driver and maps Linux key codes | 
 | 100 |     (sometimes referred to as scan codes) into Android key codes using the | 
 | 101 |     keyboard's key layout map. | 
 | 102 |  | 
 | 103 | 2.  The `InputReader` consumes the raw events and updates the meta key state. | 
 | 104 |     For example, if the left shift key is pressed or released, the reader will | 
 | 105 |     set or reset the `META_SHIFT_LEFT_ON` and `META_SHIFT_ON` bits accordingly. | 
 | 106 |  | 
 | 107 | 3.  The `InputReader` notifies the `InputDispatcher` about the key event. | 
 | 108 |  | 
 | 109 | 4.  The `InputDispatcher` asks the `WindowManagerPolicy` what to do with the key | 
 | 110 |     event by calling `WindowManagerPolicy.interceptKeyBeforeQueueing`.  This method | 
 | 111 |     is part of a critical path that is responsible for waking the device when | 
 | 112 |     certain keys are pressed.  The `EventHub` effectively holds a wake lock | 
 | 113 |     along this critical path to ensure that it will run to completion. | 
 | 114 |  | 
 | 115 | 5.  If an `InputFilter` is currently in use, the `InputDispatcher` gives it a | 
 | 116 |     chance to consume or transform the key.  The `InputFilter` may be used to implement | 
 | 117 |     low-level system-wide accessibility policies. | 
 | 118 |  | 
 | 119 | 6.  The `InputDispatcher` enqueues the key for processing on the dispatch thread. | 
 | 120 |  | 
 | 121 | 7.  When the `InputDispatcher` dequeues the key, it gives the `WindowManagerPolicy` | 
 | 122 |     a second chance to intercept the key event by calling | 
 | 123 |     `WindowManagerPolicy.interceptKeyBeforeDispatching`.  This method handles system | 
 | 124 |     shortcuts and other functions. | 
 | 125 |  | 
 | 126 | 8.  The `InputDispatcher` then identifies the key event target (the focused window) | 
 | 127 |     and waits for them to become ready.  Then, the `InputDispatcher` delivers the | 
 | 128 |     key event to the application. | 
 | 129 |  | 
 | 130 | 9.  Inside the application, the key event propagates down the view hierarchy to | 
 | 131 |     the focused view for pre-IME key dispatch. | 
 | 132 |  | 
 | 133 | 10. If the key event is not handled in the pre-IME dispatch and an IME is in use, the | 
 | 134 |     key event is delivered to the IME. | 
 | 135 |  | 
 | 136 | 11. If the key event was not consumed by the IME, then the key event propagates | 
 | 137 |     down the view hierarchy to the focused view for standard key dispatch. | 
 | 138 |  | 
 | 139 | 12. The application reports back to the `InputDispatcher` as to whether the key | 
 | 140 |     event was consumed.  If the event was not consumed, the `InputDispatcher` | 
 | 141 |     calls `WindowManagerPolicy.dispatchUnhandledKey` to apply "fallback" behavior. | 
 | 142 |     Depending on the fallback action, the key event dispatch cycle may be restarted | 
 | 143 |     using a different key code.  For example, if an application does not handle | 
 | 144 |     `KEYCODE_ESCAPE`, the system may redispatch the key event as `KEYCODE_BACK` instead. | 
 | 145 |  | 
 | 146 | ## Keyboard Configuration ## | 
 | 147 |  | 
 | 148 | Keyboard behavior is determined by the keyboard's key layout, key character | 
 | 149 | map and input device configuration. | 
 | 150 |  | 
 | 151 | Refer to the following sections for more details about the files that | 
 | 152 | participate in keyboard configuration: | 
 | 153 |  | 
 | 154 | *   [Key Layout Files](/tech/input/key-layout-files.html) | 
 | 155 | *   [Key Character Map Files](/tech/input/key-character-map-files.html) | 
 | 156 | *   [Input Device Configuration Files](/tech/input/input-device-configuration-files.html) | 
 | 157 |  | 
 | 158 | ### Properties ### | 
 | 159 |  | 
 | 160 | The following input device configuration properties are used for keyboards. | 
 | 161 |  | 
 | 162 | #### `keyboard.layout` #### | 
 | 163 |  | 
 | 164 | *Definition:* `keyboard.layout` = <name> | 
 | 165 |  | 
 | 166 | Specifies the name of the key layout file associated with the input device, | 
 | 167 | excluding the `.kl` extension.  If this file is not found, the input system | 
 | 168 | will use the default key layout instead. | 
 | 169 |  | 
 | 170 | Spaces in the name are converted to underscores during lookup. | 
 | 171 |  | 
 | 172 | Refer to the key layout file documentation for more details. | 
 | 173 |  | 
 | 174 | #### `keyboard.characterMap` #### | 
 | 175 |  | 
 | 176 | *Definition:* `keyboard.characterMap` = <name> | 
 | 177 |  | 
 | 178 | Specifies the name of the key character map file associated with the input device, | 
 | 179 | excluding the `.kcm` extension.  If this file is not found, the input system | 
 | 180 | will use the default key character map instead. | 
 | 181 |  | 
 | 182 | Spaces in the name are converted to underscores during lookup. | 
 | 183 |  | 
 | 184 | Refer to the key character map file documentation for more details. | 
 | 185 |  | 
 | 186 | #### `keyboard.orientationAware` #### | 
 | 187 |  | 
 | 188 | *Definition:* `keyboard.orientationAware` = `0` | `1` | 
 | 189 |  | 
 | 190 | Specifies whether the keyboard should react to display orientation changes. | 
 | 191 |  | 
 | 192 | *   If the value is `1`, the directional keypad keys are rotated when the | 
 | 193 |     associated display orientation changes. | 
 | 194 |  | 
 | 195 | *   If the value is `0`, the keyboard is immune to display orientation changes. | 
 | 196 |  | 
 | 197 | The default value is `0`. | 
 | 198 |  | 
 | 199 | Orientation awareness is used to support rotation of directional keypad keys, | 
 | 200 | such as on the Motorola Droid.  For example, when the device is rotated | 
 | 201 | clockwise 90 degrees from its natural orientation, `KEYCODE_DPAD_UP` is | 
 | 202 | remapped to produce `KEYCODE_DPAD_RIGHT` since the 'up' key ends up pointing | 
 | 203 | 'right' when the device is held in that orientation. | 
 | 204 |  | 
 | 205 | #### `keyboard.builtIn` #### | 
 | 206 |  | 
 | 207 | *Definition:* `keyboard.builtIn` = `0` | `1` | 
 | 208 |  | 
 | 209 | Specifies whether the keyboard is the built-in (physically attached) | 
 | 210 | keyboard. | 
 | 211 |  | 
 | 212 | The default value is `1` if the device name ends with `-keypad`, `0` otherwise. | 
 | 213 |  | 
 | 214 | The built-in keyboard is always assigned a device id of `0`.  Other keyboards | 
 | 215 | that are not built-in are assigned unique non-zero device ids. | 
 | 216 |  | 
 | 217 | Using an id of `0` for the built-in keyboard is important for maintaining | 
 | 218 | compatibility with the `KeyCharacterMap.BUILT_IN_KEYBOARD` field, which specifies | 
 | 219 | the id of the built-in keyboard and has a value of `0`.  This field has been | 
 | 220 | deprecated in the API but older applications might still be using it. | 
 | 221 |  | 
 | 222 | A special-function keyboard (one whose key character map specifies a | 
 | 223 | type of `SPECIAL_FUNCTION`) will never be registered as the built-in keyboard, | 
 | 224 | regardless of the setting of this property.  This is because a special-function | 
 | 225 | keyboard is by definition not intended to be used for general purpose typing. | 
 | 226 |  | 
 | 227 | ### Example Configurations ### | 
 | 228 |  | 
 | 229 |     # This is an example input device configuration file for a built-in | 
 | 230 |     # keyboard that has a DPad. | 
 | 231 |  | 
 | 232 |     # The keyboard is internal because it is part of the device. | 
 | 233 |     device.internal = 1 | 
 | 234 |  | 
 | 235 |     # The keyboard is the default built-in keyboard so it should be assigned | 
 | 236 |     # an id of 0. | 
 | 237 |     keyboard.builtIn = 1 | 
 | 238 |  | 
 | 239 |     # The keyboard includes a DPad which is mounted on the device.  As the device | 
 | 240 |     # is rotated the orientation of the DPad rotates along with it, so the DPad must | 
 | 241 |     # be aware of the display orientation.  This ensures that pressing 'up' on the | 
 | 242 |     # DPad always means 'up' from the perspective of the user, even when the entire | 
 | 243 |     # device has been rotated. | 
 | 244 |     keyboard.orientationAware = 1 | 
 | 245 |  | 
 | 246 | ### Compatibility Notes ### | 
 | 247 |  | 
 | 248 | Prior to Honeycomb, the keyboard input mapper did not use any configuration properties. | 
 | 249 | All keyboards were assumed to be physically attached and orientation aware.  The default | 
 | 250 | key layout and key character map was named `qwerty` instead of `Generic`.  The key | 
 | 251 | character map format was also very different and the framework did not support | 
 | 252 | PC-style full keyboards or external keyboards. | 
 | 253 |  | 
 | 254 | When upgrading devices to Honeycomb, make sure to create or update the necessary | 
 | 255 | configuration and key map files. | 
 | 256 |  | 
 | 257 | ## HID Usages, Linux Key Codes and Android Key Codes ## | 
 | 258 |  | 
 | 259 | The system refers to keys using several different identifiers, depending on the | 
 | 260 | layer of abstraction. | 
 | 261 |  | 
 | 262 | For HID devices, each key has an associated HID usage.  The Linux `hid-input` | 
 | 263 | driver and related vendor and device-specific HID drivers are responsible | 
 | 264 | for parsing HID reports and mapping HID usages to Linux key codes. | 
 | 265 |  | 
 | 266 | As Android reads `EV_KEY` events from the Linux kernel, it translates each | 
 | 267 | Linux key code into its corresponding Android key code according to the | 
 | 268 | key layout file of the device. | 
 | 269 |  | 
 | 270 | When the key event is dispatched to an application, the `android.view.KeyEvent` | 
 | 271 | instance reports the Linux key code as the value of `getScanCode()` and the | 
 | 272 | Android key code as the value of `getKeyCode()`.  For the purposes of the | 
 | 273 | framework, only the value of `getKeyCode()` is important. | 
 | 274 |  | 
 | 275 | Note that the HID usage information is not used by Android itself or | 
 | 276 | passed to applications. | 
 | 277 |  | 
 | 278 | ## Code Tables ## | 
 | 279 |  | 
 | 280 | The following tables show how HID usages, Linux key codes and Android | 
 | 281 | key codes are related to one another. | 
 | 282 |  | 
 | 283 | The LKC column specifies the Linux key code in hexadecimal. | 
 | 284 |  | 
 | 285 | The AKC column specifies the Android key code in hexadecimal. | 
 | 286 |  | 
 | 287 | The Notes column refers to notes that are posted after the table. | 
 | 288 |  | 
 | 289 | The Version column specifies the first version of the Android platform | 
 | 290 | to have included this key in its default key map.  Multiple rows are | 
 | 291 | shown in cases where the default key map has changed between versions. | 
 | 292 | The oldest version indicated is 1.6. | 
 | 293 |  | 
 | 294 | *   In Gingerbread (2.3) and earlier releases, the default key map was | 
 | 295 |     `qwerty.kl`. This key map was only intended for use with the Android | 
 | 296 |     Emulator and was not intended to be used to support arbitrary | 
 | 297 |     external keyboards.  Nevertheless, a few OEMs added Bluetooth | 
 | 298 |     keyboard support to the platform and relied on `qwerty.kl` to | 
 | 299 |     provide the necessary keyboard mappings.  Consequently these | 
 | 300 |     older mappings may be of interest to OEMs who are building | 
 | 301 |     peripherals for these particular devices.  Note that the mappings | 
 | 302 |     are substantially different from the current ones, particularly | 
 | 303 |     with respect to the treatment of the `HOME` key.  It is recommended | 
 | 304 |     that all new peripherals be developed according to the Honeycomb or more | 
 | 305 |     recent key maps (ie. standard HID). | 
 | 306 |  | 
 | 307 | *   As of Honeycomb (3.0), the default key map is `Generic.kl`. | 
 | 308 |     This key map was designed to support full PC style keyboards. | 
 | 309 |     Most functionality of standard HID keyboards should just work out | 
 | 310 |     of the box. | 
 | 311 |  | 
 | 312 | The key code mapping may vary across versions of the Linux kernel and Android. | 
 | 313 | When changes are known to have occurred in the Android default key maps, | 
 | 314 | they are indicated in the version column. | 
 | 315 |  | 
 | 316 | Device-specific HID drivers and key maps may apply different mappings | 
 | 317 | than are indicated here. | 
 | 318 |  | 
 | 319 | ### HID Keyboard and Keypad Page (0x07) ### | 
 | 320 |  | 
 | 321 | | HID Usage   | HID Usage Name                   | LKC    | Linux Key Code Name              | Version | AKC    | Android Key Code Name            | Notes | | 
 | 322 | | ----------- | -------------------------------- | ------ | -------------------------------- | ------- | ------ | -------------------------------- | ----- | | 
 | 323 | | 0x07 0x0001 | Keyboard Error Roll Over         |        |                                  |         |        |                                  |       | | 
 | 324 | | 0x07 0x0002 | Keyboard POST Fail               |        |                                  |         |        |                                  |       | | 
 | 325 | | 0x07 0x0003 | Keyboard Error Undefined         |        |                                  |         |        |                                  |       | | 
 | 326 | | 0x07 0x0004 | Keyboard a and A                 | 0x001e | KEY_A                            | 1.6     | 0x001d | KEYCODE_A                        | 1     | | 
 | 327 | | 0x07 0x0005 | Keyboard b and B                 | 0x0030 | KEY_B                            | 1.6     | 0x001e | KEYCODE_B                        | 1     | | 
 | 328 | | 0x07 0x0006 | Keyboard c and C                 | 0x002e | KEY_C                            | 1.6     | 0x001f | KEYCODE_C                        | 1     | | 
 | 329 | | 0x07 0x0007 | Keyboard d and D                 | 0x0020 | KEY_D                            | 1.6     | 0x0020 | KEYCODE_D                        | 1     | | 
 | 330 | | 0x07 0x0008 | Keyboard e and E                 | 0x0012 | KEY_E                            | 1.6     | 0x0021 | KEYCODE_E                        | 1     | | 
 | 331 | | 0x07 0x0009 | Keyboard f and F                 | 0x0021 | KEY_F                            | 1.6     | 0x0022 | KEYCODE_F                        | 1     | | 
 | 332 | | 0x07 0x000a | Keyboard g and G                 | 0x0022 | KEY_G                            | 1.6     | 0x0023 | KEYCODE_G                        | 1     | | 
 | 333 | | 0x07 0x000b | Keyboard h and H                 | 0x0023 | KEY_H                            | 1.6     | 0x0024 | KEYCODE_H                        | 1     | | 
 | 334 | | 0x07 0x000c | Keyboard i and I                 | 0x0017 | KEY_I                            | 1.6     | 0x0025 | KEYCODE_I                        | 1     | | 
 | 335 | | 0x07 0x000d | Keyboard j and J                 | 0x0024 | KEY_J                            | 1.6     | 0x0026 | KEYCODE_J                        | 1     | | 
 | 336 | | 0x07 0x000e | Keyboard k and K                 | 0x0025 | KEY_K                            | 1.6     | 0x0027 | KEYCODE_K                        | 1     | | 
 | 337 | | 0x07 0x000f | Keyboard l and L                 | 0x0026 | KEY_L                            | 1.6     | 0x0028 | KEYCODE_L                        | 1     | | 
 | 338 | | 0x07 0x0010 | Keyboard m and M                 | 0x0032 | KEY_M                            | 1.6     | 0x0029 | KEYCODE_M                        | 1     | | 
 | 339 | | 0x07 0x0011 | Keyboard n and N                 | 0x0031 | KEY_N                            | 1.6     | 0x002a | KEYCODE_N                        | 1     | | 
 | 340 | | 0x07 0x0012 | Keyboard o and O                 | 0x0018 | KEY_O                            | 1.6     | 0x002b | KEYCODE_O                        | 1     | | 
 | 341 | | 0x07 0x0013 | Keyboard p and P                 | 0x0019 | KEY_P                            | 1.6     | 0x002c | KEYCODE_P                        | 1     | | 
 | 342 | | 0x07 0x0014 | Keyboard q and Q                 | 0x0010 | KEY_Q                            | 1.6     | 0x002d | KEYCODE_Q                        | 1     | | 
 | 343 | | 0x07 0x0015 | Keyboard r and R                 | 0x0013 | KEY_R                            | 1.6     | 0x002e | KEYCODE_R                        | 1     | | 
 | 344 | | 0x07 0x0016 | Keyboard s and S                 | 0x001f | KEY_S                            | 1.6     | 0x002f | KEYCODE_S                        | 1     | | 
 | 345 | | 0x07 0x0017 | Keyboard t and T                 | 0x0014 | KEY_T                            | 1.6     | 0x0030 | KEYCODE_T                        | 1     | | 
 | 346 | | 0x07 0x0018 | Keyboard u and U                 | 0x0016 | KEY_U                            | 1.6     | 0x0031 | KEYCODE_U                        | 1     | | 
 | 347 | | 0x07 0x0019 | Keyboard v and V                 | 0x002f | KEY_V                            | 1.6     | 0x0032 | KEYCODE_V                        | 1     | | 
 | 348 | | 0x07 0x001a | Keyboard w and W                 | 0x0011 | KEY_W                            | 1.6     | 0x0033 | KEYCODE_W                        | 1     | | 
 | 349 | | 0x07 0x001b | Keyboard x and X                 | 0x002d | KEY_X                            | 1.6     | 0x0034 | KEYCODE_X                        | 1     | | 
 | 350 | | 0x07 0x001c | Keyboard y and Y                 | 0x0015 | KEY_Y                            | 1.6     | 0x0035 | KEYCODE_Y                        | 1     | | 
 | 351 | | 0x07 0x001d | Keyboard z and Z                 | 0x002c | KEY_Z                            | 1.6     | 0x0036 | KEYCODE_Z                        | 1     | | 
 | 352 | | 0x07 0x001e | Keyboard 1 and !                 | 0x0002 | KEY_1                            | 1.6     | 0x0008 | KEYCODE_1                        | 1     | | 
 | 353 | | 0x07 0x001f | Keyboard 2 and @                 | 0x0003 | KEY_2                            | 1.6     | 0x0009 | KEYCODE_2                        | 1     | | 
 | 354 | | 0x07 0x0020 | Keyboard 3 and #                 | 0x0004 | KEY_3                            | 1.6     | 0x000a | KEYCODE_3                        | 1     | | 
 | 355 | | 0x07 0x0021 | Keyboard 4 and $                 | 0x0005 | KEY_4                            | 1.6     | 0x000b | KEYCODE_4                        | 1     | | 
 | 356 | | 0x07 0x0022 | Keyboard 5 and %                 | 0x0006 | KEY_5                            | 1.6     | 0x000c | KEYCODE_5                        | 1     | | 
 | 357 | | 0x07 0x0023 | Keyboard 6 and ^                 | 0x0007 | KEY_6                            | 1.6     | 0x000d | KEYCODE_6                        | 1     | | 
 | 358 | | 0x07 0x0024 | Keyboard 7 and &                 | 0x0008 | KEY_7                            | 1.6     | 0x000e | KEYCODE_7                        | 1     | | 
 | 359 | | 0x07 0x0025 | Keyboard 8 and *                 | 0x0009 | KEY_8                            | 1.6     | 0x000f | KEYCODE_8                        | 1     | | 
 | 360 | | 0x07 0x0026 | Keyboard 9 and (                 | 0x000a | KEY_9                            | 1.6     | 0x0010 | KEYCODE_9                        | 1     | | 
 | 361 | | 0x07 0x0027 | Keyboard 0 and )                 | 0x000b | KEY_0                            | 1.6     | 0x0007 | KEYCODE_0                        | 1     | | 
 | 362 | | 0x07 0x0028 | Keyboard Return (ENTER)          | 0x001c | KEY_ENTER                        | 1.6     | 0x0042 | KEYCODE_ENTER                    | 1     | | 
 | 363 | | 0x07 0x0029 | Keyboard ESCAPE                  | 0x0001 | KEY_ESC                          | 3.0     | 0x006f | KEYCODE_ESCAPE                   |       | | 
 | 364 | | ""          | ""                               | ""     | ""                               | 2.3     | 0x0004 | KEYCODE_BACK                     |       | | 
 | 365 | | 0x07 0x002a | Keyboard DELETE (Backspace)      | 0x000e | KEY_BACKSPACE                    | 1.6     | 0x0043 | KEYCODE_DEL                      |       | | 
 | 366 | | 0x07 0x002b | Keyboard Tab                     | 0x000f | KEY_TAB                          | 1.6     | 0x003d | KEYCODE_TAB                      |       | | 
 | 367 | | 0x07 0x002c | Keyboard Spacebar                | 0x0039 | KEY_SPACE                        | 1.6     | 0x003e | KEYCODE_SPACE                    |       | | 
 | 368 | | 0x07 0x002d | Keyboard - and _                 | 0x000c | KEY_MINUS                        | 1.6     | 0x0045 | KEYCODE_MINUS                    | 1     | | 
 | 369 | | 0x07 0x002e | Keyboard = and +                 | 0x000d | KEY_EQUAL                        | 1.6     | 0x0046 | KEYCODE_EQUALS                   | 1     | | 
 | 370 | | 0x07 0x002f | Keyboard \[ and \{               | 0x001a | KEY_LEFTBRACE                    | 1.6     | 0x0047 | KEYCODE_LEFT_BRACKET             | 1     | | 
 | 371 | | 0x07 0x0030 | Keyboard \] and \}               | 0x001b | KEY_RIGHTBRACE                   | 1.6     | 0x0048 | KEYCODE_RIGHT_BRACKET            | 1     | | 
 | 372 | | 0x07 0x0031 | Keyboard \\ and |           | 0x002b | KEY_BACKSLASH                    | 1.6     | 0x0049 | KEYCODE_BACKSLASH                | 1     | | 
 | 373 | | 0x07 0x0032 | Keyboard Non-US # and ~          | 0x002b | KEY_BACKSLASH                    | 1.6     | 0x0049 | KEYCODE_BACKSLASH                | 1     | | 
 | 374 | | 0x07 0x0033 | Keyboard ; and :                 | 0x0027 | KEY_SEMICOLON                    | 1.6     | 0x004a | KEYCODE_SEMICOLON                | 1     | | 
 | 375 | | 0x07 0x0034 | Keyboard ' and "                 | 0x0028 | KEY_APOSTROPHE                   | 1.6     | 0x004b | KEYCODE_APOSTROPHE               | 1     | | 
 | 376 | | 0x07 0x0035 | Keyboard \` and ~                | 0x0029 | KEY_GRAVE                        | 3.0     | 0x0044 | KEYCODE_GRAVE                    | 1     | | 
 | 377 | | 0x07 0x0036 | Keyboard , and <                 | 0x0033 | KEY_COMMA                        | 1.6     | 0x0037 | KEYCODE_COMMA                    | 1     | | 
 | 378 | | 0x07 0x0037 | Keyboard . and >                 | 0x0034 | KEY_DOT                          | 1.6     | 0x0038 | KEYCODE_PERIOD                   | 1     | | 
 | 379 | | 0x07 0x0038 | Keyboard / and ?                 | 0x0035 | KEY_SLASH                        | 1.6     | 0x004c | KEYCODE_SLASH                    | 1     | | 
 | 380 | | 0x07 0x0039 | Keyboard Caps Lock               | 0x003a | KEY_CAPSLOCK                     | 3.0     | 0x0073 | KEYCODE_CAPS_LOCK                |       | | 
 | 381 | | 0x07 0x003a | Keyboard F1                      | 0x003b | KEY_F1                           | 3.0     | 0x0083 | KEYCODE_F1                       |       | | 
 | 382 | | ""          | ""                               | ""     | ""                               | 1.6     | 0x0052 | KEYCODE_MENU                     |       | | 
 | 383 | | 0x07 0x003b | Keyboard F2                      | 0x003c | KEY_F2                           | 3.0     | 0x0084 | KEYCODE_F2                       |       | | 
 | 384 | | ""          | ""                               | ""     | ""                               | 1.6     | 0x0002 | KEYCODE_SOFT_RIGHT               |       | | 
 | 385 | | 0x07 0x003c | Keyboard F3                      | 0x003d | KEY_F3                           | 3.0     | 0x0085 | KEYCODE_F3                       |       | | 
 | 386 | | ""          | ""                               | ""     | ""                               | 1.6     | 0x0005 | KEYCODE_CALL                     |       | | 
 | 387 | | 0x07 0x003d | Keyboard F4                      | 0x003e | KEY_F4                           | 3.0     | 0x0086 | KEYCODE_F4                       |       | | 
 | 388 | | ""          | ""                               | ""     | ""                               | 1.6     | 0x0006 | KEYCODE_ENDCALL                  |       | | 
 | 389 | | 0x07 0x003e | Keyboard F5                      | 0x003f | KEY_F5                           | 3.0     | 0x0087 | KEYCODE_F5                       |       | | 
 | 390 | | 0x07 0x003f | Keyboard F6                      | 0x0040 | KEY_F6                           | 3.0     | 0x0088 | KEYCODE_F6                       |       | | 
 | 391 | | 0x07 0x0040 | Keyboard F7                      | 0x0041 | KEY_F7                           | 3.0     | 0x0089 | KEYCODE_F7                       |       | | 
 | 392 | | 0x07 0x0041 | Keyboard F8                      | 0x0042 | KEY_F8                           | 3.0     | 0x008a | KEYCODE_F8                       |       | | 
 | 393 | | 0x07 0x0042 | Keyboard F9                      | 0x0043 | KEY_F9                           | 3.0     | 0x008b | KEYCODE_F9                       |       | | 
 | 394 | | 0x07 0x0043 | Keyboard F10                     | 0x0044 | KEY_F10                          | 3.0     | 0x008c | KEYCODE_F10                      |       | | 
 | 395 | | ""          | ""                               | ""     | ""                               | 2.3     | 0x0052 | KEYCODE_MENU                     |       | | 
 | 396 | | 0x07 0x0044 | Keyboard F11                     | 0x0057 | KEY_F11                          | 3.0     | 0x008d | KEYCODE_F11                      |       | | 
 | 397 | | 0x07 0x0045 | Keyboard F12                     | 0x0058 | KEY_F12                          | 3.0     | 0x008e | KEYCODE_F12                      |       | | 
 | 398 | | 0x07 0x0046 | Keyboard Print Screen            | 0x0063 | KEY_SYSRQ                        | 3.0     | 0x0078 | KEYCODE_SYSRQ                    |       | | 
 | 399 | | 0x07 0x0047 | Keyboard Scroll Lock             | 0x0046 | KEY_SCROLLLOCK                   | 3.0     | 0x0074 | KEYCODE_SCROLL_LOCK              |       | | 
 | 400 | | 0x07 0x0048 | Keyboard Pause                   | 0x0077 | KEY_PAUSE                        | 3.0     | 0x0079 | KEYCODE_BREAK                    |       | | 
 | 401 | | 0x07 0x0049 | Keyboard Insert                  | 0x006e | KEY_INSERT                       | 3.0     | 0x007c | KEYCODE_INSERT                   |       | | 
 | 402 | | 0x07 0x004a | Keyboard Home                    | 0x0066 | KEY_HOME                         | 3.0     | 0x007a | KEYCODE_MOVE_HOME                |       | | 
 | 403 | | ""          | ""                               | ""     | ""                               | 1.6     | 0x0003 | KEYCODE_HOME                     |       | | 
 | 404 | | 0x07 0x004b | Keyboard Page Up                 | 0x0068 | KEY_PAGEUP                       | 3.0     | 0x005c | KEYCODE_PAGE_UP                  |       | | 
 | 405 | | 0x07 0x004c | Keyboard Delete Forward          | 0x006f | KEY_DELETE                       | 3.0     | 0x0070 | KEYCODE_FORWARD_DEL              |       | | 
 | 406 | | 0x07 0x004d | Keyboard End                     | 0x006b | KEY_END                          | 3.0     | 0x007b | KEYCODE_MOVE_END                 |       | | 
 | 407 | | ""          | ""                               | ""     | ""                               | 1.6     | 0x0006 | KEYCODE_ENDCALL                  |       | | 
 | 408 | | 0x07 0x004e | Keyboard Page Down               | 0x006d | KEY_PAGEDOWN                     | 3.0     | 0x005d | KEYCODE_PAGE_DOWN                |       | | 
 | 409 | | 0x07 0x004f | Keyboard Right Arrow             | 0x006a | KEY_RIGHT                        | 1.6     | 0x0016 | KEYCODE_DPAD_RIGHT               |       | | 
 | 410 | | 0x07 0x0050 | Keyboard Left Arrow              | 0x0069 | KEY_LEFT                         | 1.6     | 0x0015 | KEYCODE_DPAD_LEFT                |       | | 
 | 411 | | 0x07 0x0051 | Keyboard Down Arrow              | 0x006c | KEY_DOWN                         | 1.6     | 0x0014 | KEYCODE_DPAD_DOWN                |       | | 
 | 412 | | 0x07 0x0052 | Keyboard Up Arrow                | 0x0067 | KEY_UP                           | 1.6     | 0x0013 | KEYCODE_DPAD_UP                  |       | | 
 | 413 | | 0x07 0x0053 | Keyboard Num Lock and Clear      | 0x0045 | KEY_NUMLOCK                      | 3.0     | 0x008f | KEYCODE_NUM_LOCK                 |       | | 
 | 414 | | 0x07 0x0054 | Keypad /                         | 0x0062 | KEY_KPSLASH                      | 3.0     | 0x009a | KEYCODE_NUMPAD_DIVIDE            |       | | 
 | 415 | | 0x07 0x0055 | Keypad *                         | 0x0037 | KEY_KPASTERISK                   | 3.0     | 0x009b | KEYCODE_NUMPAD_MULTIPLY          |       | | 
 | 416 | | 0x07 0x0056 | Keypad -                         | 0x004a | KEY_KPMINUS                      | 3.0     | 0x009c | KEYCODE_NUMPAD_SUBTRACT          |       | | 
 | 417 | | 0x07 0x0057 | Keypad +                         | 0x004e | KEY_KPPLUS                       | 3.0     | 0x009d | KEYCODE_NUMPAD_ADD               |       | | 
 | 418 | | 0x07 0x0058 | Keypad ENTER                     | 0x0060 | KEY_KPENTER                      | 3.0     | 0x00a0 | KEYCODE_NUMPAD_ENTER             |       | | 
 | 419 | | 0x07 0x0059 | Keypad 1 and End                 | 0x004f | KEY_KP1                          | 3.0     | 0x0091 | KEYCODE_NUMPAD_1                 |       | | 
 | 420 | | 0x07 0x005a | Keypad 2 and Down Arrow          | 0x0050 | KEY_KP2                          | 3.0     | 0x0092 | KEYCODE_NUMPAD_2                 |       | | 
 | 421 | | 0x07 0x005b | Keypad 3 and PageDn              | 0x0051 | KEY_KP3                          | 3.0     | 0x0093 | KEYCODE_NUMPAD_3                 |       | | 
 | 422 | | 0x07 0x005c | Keypad 4 and Left Arrow          | 0x004b | KEY_KP4                          | 3.0     | 0x0094 | KEYCODE_NUMPAD_4                 |       | | 
 | 423 | | 0x07 0x005d | Keypad 5                         | 0x004c | KEY_KP5                          | 3.0     | 0x0095 | KEYCODE_NUMPAD_5                 |       | | 
 | 424 | | 0x07 0x005e | Keypad 6 and Right Arrow         | 0x004d | KEY_KP6                          | 3.0     | 0x0096 | KEYCODE_NUMPAD_6                 |       | | 
 | 425 | | 0x07 0x005f | Keypad 7 and Home                | 0x0047 | KEY_KP7                          | 3.0     | 0x0097 | KEYCODE_NUMPAD_7                 |       | | 
 | 426 | | 0x07 0x0060 | Keypad 8 and Up Arrow            | 0x0048 | KEY_KP8                          | 3.0     | 0x0098 | KEYCODE_NUMPAD_8                 |       | | 
 | 427 | | 0x07 0x0061 | Keypad 9 and Page Up             | 0x0049 | KEY_KP9                          | 3.0     | 0x0099 | KEYCODE_NUMPAD_9                 |       | | 
 | 428 | | 0x07 0x0062 | Keypad 0 and Insert              | 0x0052 | KEY_KP0                          | 3.0     | 0x0090 | KEYCODE_NUMPAD_0                 |       | | 
 | 429 | | 0x07 0x0063 | Keypad . and Delete              | 0x0053 | KEY_KPDOT                        | 3.0     | 0x009e | KEYCODE_NUMPAD_DOT               |       | | 
 | 430 | | 0x07 0x0064 | Keyboard Non-US \\ and |    | 0x0056 | KEY_102ND                        | 4.0     | 0x0049 | KEYCODE_BACKSLASH                | 1     | | 
 | 431 | | 0x07 0x0065 | Keyboard Application             | 0x007f | KEY_COMPOSE                      | 3.0     | 0x0052 | KEYCODE_MENU                     |       | | 
 | 432 | | ""          | ""                               | ""     | ""                               | 1.6     | 0x0054 | KEYCODE_SEARCH                   |       | | 
 | 433 | | 0x07 0x0066 | Keyboard Power                   | 0x0074 | KEY_POWER                        | 1.6     | 0x001a | KEYCODE_POWER                    |       | | 
 | 434 | | 0x07 0x0067 | Keypad =                         | 0x0075 | KEY_KPEQUAL                      | 3.0     | 0x00a1 | KEYCODE_NUMPAD_EQUALS            |       | | 
 | 435 | | 0x07 0x0068 | Keyboard F13                     | 0x00b7 | KEY_F13                          |         |        |                                  |       | | 
 | 436 | | 0x07 0x0069 | Keyboard F14                     | 0x00b8 | KEY_F14                          |         |        |                                  |       | | 
 | 437 | | 0x07 0x006a | Keyboard F15                     | 0x00b9 | KEY_F15                          |         |        |                                  |       | | 
 | 438 | | 0x07 0x006b | Keyboard F16                     | 0x00ba | KEY_F16                          |         |        |                                  |       | | 
 | 439 | | 0x07 0x006c | Keyboard F17                     | 0x00bb | KEY_F17                          |         |        |                                  |       | | 
 | 440 | | 0x07 0x006d | Keyboard F18                     | 0x00bc | KEY_F18                          |         |        |                                  |       | | 
 | 441 | | 0x07 0x006e | Keyboard F19                     | 0x00bd | KEY_F19                          |         |        |                                  |       | | 
 | 442 | | 0x07 0x006f | Keyboard F20                     | 0x00be | KEY_F20                          |         |        |                                  |       | | 
 | 443 | | 0x07 0x0070 | Keyboard F21                     | 0x00bf | KEY_F21                          |         |        |                                  |       | | 
 | 444 | | 0x07 0x0071 | Keyboard F22                     | 0x00c0 | KEY_F22                          |         |        |                                  |       | | 
 | 445 | | 0x07 0x0072 | Keyboard F23                     | 0x00c1 | KEY_F23                          |         |        |                                  |       | | 
 | 446 | | 0x07 0x0073 | Keyboard F24                     | 0x00c2 | KEY_F24                          |         |        |                                  |       | | 
 | 447 | | 0x07 0x0074 | Keyboard Execute                 | 0x0086 | KEY_OPEN                         |         |        |                                  |       | | 
 | 448 | | 0x07 0x0075 | Keyboard Help                    | 0x008a | KEY_HELP                         |         |        |                                  |       | | 
 | 449 | | 0x07 0x0076 | Keyboard Menu                    | 0x0082 | KEY_PROPS                        |         |        |                                  |       | | 
 | 450 | | 0x07 0x0077 | Keyboard Select                  | 0x0084 | KEY_FRONT                        |         |        |                                  |       | | 
 | 451 | | 0x07 0x0078 | Keyboard Stop                    | 0x0080 | KEY_STOP                         | 3.0     | 0x0056 | KEYCODE_MEDIA_STOP               |       | | 
 | 452 | | 0x07 0x0079 | Keyboard Again                   | 0x0081 | KEY_AGAIN                        |         |        |                                  |       | | 
 | 453 | | 0x07 0x007a | Keyboard Undo                    | 0x0083 | KEY_UNDO                         |         |        |                                  |       | | 
 | 454 | | 0x07 0x007b | Keyboard Cut                     | 0x0089 | KEY_CUT                          |         |        |                                  |       | | 
 | 455 | | 0x07 0x007c | Keyboard Copy                    | 0x0085 | KEY_COPY                         |         |        |                                  |       | | 
 | 456 | | 0x07 0x007d | Keyboard Paste                   | 0x0087 | KEY_PASTE                        |         |        |                                  |       | | 
 | 457 | | 0x07 0x007e | Keyboard Find                    | 0x0088 | KEY_FIND                         |         |        |                                  |       | | 
 | 458 | | 0x07 0x007f | Keyboard Mute                    | 0x0071 | KEY_MUTE                         | 3.0     | 0x00a4 | KEYCODE_VOLUME_MUTE              |       | | 
 | 459 | | 0x07 0x0080 | Keyboard Volume Up               | 0x0073 | KEY_VOLUMEUP                     | 1.6     | 0x0018 | KEYCODE_VOLUME_UP                |       | | 
 | 460 | | 0x07 0x0081 | Keyboard Volume Down             | 0x0072 | KEY_VOLUMEDOWN                   | 1.6     | 0x0019 | KEYCODE_VOLUME_DOWN              |       | | 
 | 461 | | 0x07 0x0082 | Keyboard Locking Caps Lock       |        |                                  |         |        |                                  |       | | 
 | 462 | | 0x07 0x0083 | Keyboard Locking Num Lock        |        |                                  |         |        |                                  |       | | 
 | 463 | | 0x07 0x0084 | Keyboard Locking Scroll Lock     |        |                                  |         |        |                                  |       | | 
 | 464 | | 0x07 0x0085 | Keypad Comma                     | 0x0079 | KEY_KPCOMMA                      | 3.0     | 0x009f | KEYCODE_NUMPAD_COMMA             |       | | 
 | 465 | | 0x07 0x0086 | Keypad Equal Sign                |        |                                  |         |        |                                  |       | | 
 | 466 | | 0x07 0x0087 | Keyboard International1          | 0x0059 | KEY_RO                           |         |        |                                  |       | | 
 | 467 | | 0x07 0x0088 | Keyboard International2          | 0x005d | KEY_KATAKANAHIRAGANA             |         |        |                                  |       | | 
 | 468 | | 0x07 0x0089 | Keyboard International3          | 0x007c | KEY_YEN                          |         |        |                                  |       | | 
 | 469 | | 0x07 0x008a | Keyboard International4          | 0x005c | KEY_HENKAN                       |         |        |                                  |       | | 
 | 470 | | 0x07 0x008b | Keyboard International5          | 0x005e | KEY_MUHENKAN                     |         |        |                                  |       | | 
 | 471 | | 0x07 0x008c | Keyboard International6          | 0x005f | KEY_KPJPCOMMA                    |         |        |                                  |       | | 
 | 472 | | 0x07 0x008d | Keyboard International7          |        |                                  |         |        |                                  |       | | 
 | 473 | | 0x07 0x008e | Keyboard International8          |        |                                  |         |        |                                  |       | | 
 | 474 | | 0x07 0x008f | Keyboard International9          |        |                                  |         |        |                                  |       | | 
 | 475 | | 0x07 0x0090 | Keyboard LANG1                   | 0x007a | KEY_HANGEUL                      |         |        |                                  |       | | 
 | 476 | | 0x07 0x0091 | Keyboard LANG2                   | 0x007b | KEY_HANJA                        |         |        |                                  |       | | 
 | 477 | | 0x07 0x0092 | Keyboard LANG3                   | 0x005a | KEY_KATAKANA                     |         |        |                                  |       | | 
 | 478 | | 0x07 0x0093 | Keyboard LANG4                   | 0x005b | KEY_HIRAGANA                     |         |        |                                  |       | | 
 | 479 | | 0x07 0x0094 | Keyboard LANG5                   | 0x0055 | KEY_ZENKAKUHANKAKU               |         |        |                                  |       | | 
 | 480 | | 0x07 0x0095 | Keyboard LANG6                   |        |                                  |         |        |                                  |       | | 
 | 481 | | 0x07 0x0096 | Keyboard LANG7                   |        |                                  |         |        |                                  |       | | 
 | 482 | | 0x07 0x0097 | Keyboard LANG8                   |        |                                  |         |        |                                  |       | | 
 | 483 | | 0x07 0x0098 | Keyboard LANG9                   |        |                                  |         |        |                                  |       | | 
 | 484 | | 0x07 0x0099 | Keyboard Alternate Erase         |        |                                  |         |        |                                  |       | | 
 | 485 | | 0x07 0x009a | Keyboard SysReq/Attention        |        |                                  |         |        |                                  |       | | 
 | 486 | | 0x07 0x009b | Keyboard Cancel                  |        |                                  |         |        |                                  |       | | 
 | 487 | | 0x07 0x009c | Keyboard Clear                   |        |                                  |         |        |                                  |       | | 
 | 488 | | 0x07 0x009d | Keyboard Prior                   |        |                                  |         |        |                                  |       | | 
 | 489 | | 0x07 0x009e | Keyboard Return                  |        |                                  |         |        |                                  |       | | 
 | 490 | | 0x07 0x009f | Keyboard Separator               |        |                                  |         |        |                                  |       | | 
 | 491 | | 0x07 0x00a0 | Keyboard Out                     |        |                                  |         |        |                                  |       | | 
 | 492 | | 0x07 0x00a1 | Keyboard Oper                    |        |                                  |         |        |                                  |       | | 
 | 493 | | 0x07 0x00a2 | Keyboard Clear/Again             |        |                                  |         |        |                                  |       | | 
 | 494 | | 0x07 0x00a3 | Keyboard CrSel/Props             |        |                                  |         |        |                                  |       | | 
 | 495 | | 0x07 0x00a4 | Keyboard ExSel                   |        |                                  |         |        |                                  |       | | 
 | 496 | | 0x07 0x00b0 | Keypad 00                        |        |                                  |         |        |                                  |       | | 
 | 497 | | 0x07 0x00b1 | Keypad 000                       |        |                                  |         |        |                                  |       | | 
 | 498 | | 0x07 0x00b2 | Thousands Separator              |        |                                  |         |        |                                  |       | | 
 | 499 | | 0x07 0x00b3 | Decimal Separator                |        |                                  |         |        |                                  |       | | 
 | 500 | | 0x07 0x00b4 | Currency Unit                    |        |                                  |         |        |                                  |       | | 
 | 501 | | 0x07 0x00b5 | Currency Sub-unit                |        |                                  |         |        |                                  |       | | 
 | 502 | | 0x07 0x00b6 | Keypad (                         | 0x00b3 | KEY_KPLEFTPAREN                  | 3.0     | 0x00a2 | KEYCODE_NUMPAD_LEFT_PAREN        |       | | 
 | 503 | | 0x07 0x00b7 | Keypad )                         | 0x00b4 | KEY_KPRIGHTPAREN                 | 3.0     | 0x00a3 | KEYCODE_NUMPAD_RIGHT_PAREN       |       | | 
 | 504 | | 0x07 0x00b8 | Keypad \{                        |        |                                  |         |        |                                  |       | | 
 | 505 | | 0x07 0x00b9 | Keypad \}                        |        |                                  |         |        |                                  |       | | 
 | 506 | | 0x07 0x00ba | Keypad Tab                       |        |                                  |         |        |                                  |       | | 
 | 507 | | 0x07 0x00bb | Keypad Backspace                 |        |                                  |         |        |                                  |       | | 
 | 508 | | 0x07 0x00bc | Keypad A                         |        |                                  |         |        |                                  |       | | 
 | 509 | | 0x07 0x00bd | Keypad B                         |        |                                  |         |        |                                  |       | | 
 | 510 | | 0x07 0x00be | Keypad C                         |        |                                  |         |        |                                  |       | | 
 | 511 | | 0x07 0x00bf | Keypad D                         |        |                                  |         |        |                                  |       | | 
 | 512 | | 0x07 0x00c0 | Keypad E                         |        |                                  |         |        |                                  |       | | 
 | 513 | | 0x07 0x00c1 | Keypad F                         |        |                                  |         |        |                                  |       | | 
 | 514 | | 0x07 0x00c2 | Keypad XOR                       |        |                                  |         |        |                                  |       | | 
 | 515 | | 0x07 0x00c3 | Keypad ^                         |        |                                  |         |        |                                  |       | | 
 | 516 | | 0x07 0x00c4 | Keypad %                         |        |                                  |         |        |                                  |       | | 
 | 517 | | 0x07 0x00c5 | Keypad <                         |        |                                  |         |        |                                  |       | | 
 | 518 | | 0x07 0x00c6 | Keypad >                         |        |                                  |         |        |                                  |       | | 
 | 519 | | 0x07 0x00c7 | Keypad &                         |        |                                  |         |        |                                  |       | | 
 | 520 | | 0x07 0x00c8 | Keypad &&                        |        |                                  |         |        |                                  |       | | 
 | 521 | | 0x07 0x00c9 | Keypad |                    |        |                                  |         |        |                                  |       | | 
 | 522 | | 0x07 0x00ca | Keypad ||              |        |                                  |         |        |                                  |       | | 
 | 523 | | 0x07 0x00cb | Keypad :                         |        |                                  |         |        |                                  |       | | 
 | 524 | | 0x07 0x00cc | Keypad #                         |        |                                  |         |        |                                  |       | | 
 | 525 | | 0x07 0x00cd | Keypad Space                     |        |                                  |         |        |                                  |       | | 
 | 526 | | 0x07 0x00ce | Keypad @                         |        |                                  |         |        |                                  |       | | 
 | 527 | | 0x07 0x00cf | Keypad !                         |        |                                  |         |        |                                  |       | | 
 | 528 | | 0x07 0x00d0 | Keypad Memory Store              |        |                                  |         |        |                                  |       | | 
 | 529 | | 0x07 0x00d1 | Keypad Memory Recall             |        |                                  |         |        |                                  |       | | 
 | 530 | | 0x07 0x00d2 | Keypad Memory Clear              |        |                                  |         |        |                                  |       | | 
 | 531 | | 0x07 0x00d3 | Keypad Memory Add                |        |                                  |         |        |                                  |       | | 
 | 532 | | 0x07 0x00d4 | Keypad Memory Subtract           |        |                                  |         |        |                                  |       | | 
 | 533 | | 0x07 0x00d5 | Keypad Memory Multiply           |        |                                  |         |        |                                  |       | | 
 | 534 | | 0x07 0x00d6 | Keypad Memory Divide             |        |                                  |         |        |                                  |       | | 
 | 535 | | 0x07 0x00d7 | Keypad +/-                       |        |                                  |         |        |                                  |       | | 
 | 536 | | 0x07 0x00d8 | Keypad Clear                     |        |                                  |         |        |                                  |       | | 
 | 537 | | 0x07 0x00d9 | Keypad Clear Entry               |        |                                  |         |        |                                  |       | | 
 | 538 | | 0x07 0x00da | Keypad Binary                    |        |                                  |         |        |                                  |       | | 
 | 539 | | 0x07 0x00db | Keypad Octal                     |        |                                  |         |        |                                  |       | | 
 | 540 | | 0x07 0x00dc | Keypad Decimal                   |        |                                  |         |        |                                  |       | | 
 | 541 | | 0x07 0x00dd | Keypad Hexadecimal               |        |                                  |         |        |                                  |       | | 
 | 542 | | 0x07 0x00e0 | Keyboard Left Control            | 0x001d | KEY_LEFTCTRL                     | 3.0     | 0x0071 | KEYCODE_CTRL_LEFT                |       | | 
 | 543 | | 0x07 0x00e1 | Keyboard Left Shift              | 0x002a | KEY_LEFTSHIFT                    | 1.6     | 0x003b | KEYCODE_SHIFT_LEFT               |       | | 
 | 544 | | 0x07 0x00e2 | Keyboard Left Alt                | 0x0038 | KEY_LEFTALT                      | 1.6     | 0x0039 | KEYCODE_ALT_LEFT                 |       | | 
 | 545 | | 0x07 0x00e3 | Keyboard Left GUI                | 0x007d | KEY_LEFTMETA                     | 3.0     | 0x0075 | KEYCODE_META_LEFT                |       | | 
 | 546 | | 0x07 0x00e4 | Keyboard Right Control           | 0x0061 | KEY_RIGHTCTRL                    | 3.0     | 0x0072 | KEYCODE_CTRL_RIGHT               |       | | 
 | 547 | | 0x07 0x00e5 | Keyboard Right Shift             | 0x0036 | KEY_RIGHTSHIFT                   | 1.6     | 0x003c | KEYCODE_SHIFT_RIGHT              |       | | 
 | 548 | | 0x07 0x00e6 | Keyboard Right Alt               | 0x0064 | KEY_RIGHTALT                     | 1.6     | 0x003a | KEYCODE_ALT_RIGHT                |       | | 
 | 549 | | 0x07 0x00e7 | Keyboard Right GUI               | 0x007e | KEY_RIGHTMETA                    | 3.0     | 0x0076 | KEYCODE_META_RIGHT               |       | | 
 | 550 | | 0x07 0x00e8 |                                  | 0x00a4 | KEY_PLAYPAUSE                    | 3.0     | 0x0055 | KEYCODE_MEDIA_PLAY_PAUSE         |       | | 
 | 551 | | 0x07 0x00e9 |                                  | 0x00a6 | KEY_STOPCD                       | 3.0     | 0x0056 | KEYCODE_MEDIA_STOP               |       | | 
 | 552 | | 0x07 0x00ea |                                  | 0x00a5 | KEY_PREVIOUSSONG                 | 3.0     | 0x0058 | KEYCODE_MEDIA_PREVIOUS           |       | | 
 | 553 | | 0x07 0x00eb |                                  | 0x00a3 | KEY_NEXTSONG                     | 3.0     | 0x0057 | KEYCODE_MEDIA_NEXT               |       | | 
 | 554 | | 0x07 0x00ec |                                  | 0x00a1 | KEY_EJECTCD                      | 3.0     | 0x0081 | KEYCODE_MEDIA_EJECT              |       | | 
 | 555 | | 0x07 0x00ed |                                  | 0x0073 | KEY_VOLUMEUP                     | 1.6     | 0x0018 | KEYCODE_VOLUME_UP                |       | | 
 | 556 | | 0x07 0x00ee |                                  | 0x0072 | KEY_VOLUMEDOWN                   | 1.6     | 0x0019 | KEYCODE_VOLUME_DOWN              |       | | 
 | 557 | | 0x07 0x00ef |                                  | 0x0071 | KEY_MUTE                         | 3.0     | 0x00a4 | KEYCODE_VOLUME_MUTE              |       | | 
 | 558 | | 0x07 0x00f0 |                                  | 0x0096 | KEY_WWW                          | 1.6     | 0x0040 | KEYCODE_EXPLORER                 |       | | 
 | 559 | | 0x07 0x00f1 |                                  | 0x009e | KEY_BACK                         | 1.6     | 0x0004 | KEYCODE_BACK                     |       | | 
 | 560 | | 0x07 0x00f2 |                                  | 0x009f | KEY_FORWARD                      | 3.0     | 0x007d | KEYCODE_FORWARD                  |       | | 
 | 561 | | 0x07 0x00f3 |                                  | 0x0080 | KEY_STOP                         | 3.0     | 0x0056 | KEYCODE_MEDIA_STOP               |       | | 
 | 562 | | 0x07 0x00f4 |                                  | 0x0088 | KEY_FIND                         |         |        |                                  |       | | 
 | 563 | | 0x07 0x00f5 |                                  | 0x00b1 | KEY_SCROLLUP                     | 3.0     | 0x005c | KEYCODE_PAGE_UP                  |       | | 
 | 564 | | 0x07 0x00f6 |                                  | 0x00b2 | KEY_SCROLLDOWN                   | 3.0     | 0x005d | KEYCODE_PAGE_DOWN                |       | | 
 | 565 | | 0x07 0x00f7 |                                  | 0x00b0 | KEY_EDIT                         |         |        |                                  |       | | 
 | 566 | | 0x07 0x00f8 |                                  | 0x008e | KEY_SLEEP                        |         |        |                                  |       | | 
 | 567 | | 0x07 0x00f9 |                                  | 0x0098 | KEY_COFFEE                       | 4.0     | 0x001a | KEYCODE_POWER                    |       | | 
 | 568 | | 0x07 0x00fa |                                  | 0x00ad | KEY_REFRESH                      |         |        |                                  |       | | 
| Jeff Brown | 543b03f | 2011-11-28 18:23:46 -0800 | [diff] [blame] | 569 | | 0x07 0x00fb |                                  | 0x008c | KEY_CALC                         | 4.0.3   | 0x00d2 | KEYCODE_CALCULATOR               |       | | 
| Jeff Brown | 590a9d6 | 2011-06-30 12:55:34 -0700 | [diff] [blame] | 570 |  | 
 | 571 | ### HID Generic Desktop Page (0x01) ### | 
 | 572 |  | 
 | 573 | | HID Usage   | HID Usage Name                   | LKC    | Linux Key Code Name              | Version | AKC    | Android Key Code Name            | Notes | | 
 | 574 | | ----------- | -------------------------------- | ------ | -------------------------------- | ------- | ------ | -------------------------------- | ----- | | 
 | 575 | | 0x01 0x0081 | System Power Down                | 0x0074 | KEY_POWER                        | 1.6     | 0x001a | KEYCODE_POWER                    |       | | 
 | 576 | | 0x01 0x0082 | System Sleep                     | 0x008e | KEY_SLEEP                        | 4.0     | 0x001a | KEYCODE_POWER                    |       | | 
 | 577 | | 0x01 0x0083 | System Wake Up                   | 0x008f | KEY_WAKEUP                       | 4.0     | 0x001a | KEYCODE_POWER                    |       | | 
 | 578 | | 0x01 0x0084 | System Context Menu              |        |                                  |         |        |                                  |       | | 
 | 579 | | 0x01 0x0085 | System Main Menu                 |        |                                  |         |        |                                  |       | | 
 | 580 | | 0x01 0x0086 | System App Menu                  |        |                                  |         |        |                                  |       | | 
 | 581 | | 0x01 0x0087 | System Menu Help                 |        |                                  |         |        |                                  |       | | 
 | 582 | | 0x01 0x0088 | System Menu Exit                 |        |                                  |         |        |                                  |       | | 
 | 583 | | 0x01 0x0089 | System Menu Select               |        |                                  |         |        |                                  |       | | 
 | 584 | | 0x01 0x008a | System Menu Right                |        |                                  |         |        |                                  |       | | 
 | 585 | | 0x01 0x008b | System Menu Left                 |        |                                  |         |        |                                  |       | | 
 | 586 | | 0x01 0x008c | System Menu Up                   |        |                                  |         |        |                                  |       | | 
 | 587 | | 0x01 0x008d | System Menu Down                 |        |                                  |         |        |                                  |       | | 
 | 588 | | 0x01 0x008e | System Cold Restart              |        |                                  |         |        |                                  |       | | 
 | 589 | | 0x01 0x008f | System Warm Restart              |        |                                  |         |        |                                  |       | | 
 | 590 | | 0x01 0x00a0 | System Dock                      |        |                                  |         |        |                                  |       | | 
 | 591 | | 0x01 0x00a1 | System Undock                    |        |                                  |         |        |                                  |       | | 
 | 592 | | 0x01 0x00a2 | System Setup                     |        |                                  |         |        |                                  |       | | 
 | 593 | | 0x01 0x00a3 | System Break                     |        |                                  |         |        |                                  |       | | 
 | 594 | | 0x01 0x00a4 | System Debugger Break            |        |                                  |         |        |                                  |       | | 
 | 595 | | 0x01 0x00a5 | Application Break                |        |                                  |         |        |                                  |       | | 
 | 596 | | 0x01 0x00a6 | Application Debugger Break       |        |                                  |         |        |                                  |       | | 
 | 597 | | 0x01 0x00a7 | System Speaker Mute              |        |                                  |         |        |                                  |       | | 
 | 598 | | 0x01 0x00a8 | System Hibernate                 |        |                                  |         |        |                                  |       | | 
 | 599 | | 0x01 0x00b0 | System Display Invert            |        |                                  |         |        |                                  |       | | 
 | 600 | | 0x01 0x00b1 | System Display Internal          |        |                                  |         |        |                                  |       | | 
 | 601 | | 0x01 0x00b2 | System Display External          |        |                                  |         |        |                                  |       | | 
 | 602 | | 0x01 0x00b3 | System Display Both              |        |                                  |         |        |                                  |       | | 
 | 603 | | 0x01 0x00b4 | System Display Dual              |        |                                  |         |        |                                  |       | | 
 | 604 | | 0x01 0x00b5 | System Display Toggle Int/Ext    |        |                                  |         |        |                                  |       | | 
 | 605 | | 0x01 0x00b6 | System Display Swap Prim./Sec.   |        |                                  |         |        |                                  |       | | 
 | 606 | | 0x01 0x00b7 | System Display LCD Autoscale     |        |                                  |         |        |                                  |       | | 
 | 607 |  | 
 | 608 | ### HID Consumer Page (0x0c) ### | 
 | 609 |  | 
 | 610 | | HID Usage   | HID Usage Name                   | LKC    | Linux Key Code Name              | Version | AKC    | Android Key Code Name            | Notes | | 
 | 611 | | ----------- | -------------------------------- | ------ | -------------------------------- | ------- | ------ | -------------------------------- | ----- | | 
 | 612 | | 0x0c 0x0030 | Power                            |        |                                  |         |        |                                  |       | | 
 | 613 | | 0x0c 0x0031 | Reset                            |        |                                  |         |        |                                  |       | | 
 | 614 | | 0x0c 0x0032 | Sleep                            |        |                                  |         |        |                                  |       | | 
 | 615 | | 0x0c 0x0033 | Sleep After                      |        |                                  |         |        |                                  |       | | 
 | 616 | | 0x0c 0x0034 | Sleep Mode                       | 0x008e | KEY_SLEEP                        | 4.0     | 0x001a | KEYCODE_POWER                    |       | | 
 | 617 | | 0x0c 0x0040 | Menu                             | 0x008b | KEY_MENU                         | 1.6     | 0x0052 | KEYCODE_MENU                     |       | | 
 | 618 | | 0x0c 0x0041 | Menu Pick                        |        |                                  |         |        |                                  |       | | 
 | 619 | | 0x0c 0x0042 | Menu Up                          |        |                                  |         |        |                                  |       | | 
 | 620 | | 0x0c 0x0043 | Menu Down                        |        |                                  |         |        |                                  |       | | 
 | 621 | | 0x0c 0x0044 | Menu Left                        |        |                                  |         |        |                                  |       | | 
 | 622 | | 0x0c 0x0045 | Menu Right                       | 0x0181 | KEY_RADIO                        |         |        |                                  |       | | 
 | 623 | | 0x0c 0x0046 | Menu Escape                      |        |                                  |         |        |                                  |       | | 
 | 624 | | 0x0c 0x0047 | Menu Value Increase              |        |                                  |         |        |                                  |       | | 
 | 625 | | 0x0c 0x0048 | Menu Value Decrease              |        |                                  |         |        |                                  |       | | 
 | 626 | | 0x0c 0x0081 | Assign Selection                 |        |                                  |         |        |                                  |       | | 
 | 627 | | 0x0c 0x0082 | Mode Step                        |        |                                  |         |        |                                  |       | | 
 | 628 | | 0x0c 0x0083 | Recall Last                      | 0x0195 | KEY_LAST                         |         |        |                                  |       | | 
 | 629 | | 0x0c 0x0084 | Enter Channel                    |        |                                  |         |        |                                  |       | | 
 | 630 | | 0x0c 0x0085 | Order Movie                      |        |                                  |         |        |                                  |       | | 
 | 631 | | 0x0c 0x0088 | Media Select Computer            | 0x0178 | KEY_PC                           |         |        |                                  |       | | 
 | 632 | | 0x0c 0x0089 | Media Select TV                  | 0x0179 | KEY_TV                           | 3.0     | 0x00aa | KEYCODE_TV                       |       | | 
 | 633 | | 0x0c 0x008a | Media Select WWW                 | 0x0096 | KEY_WWW                          | 1.6     | 0x0040 | KEYCODE_EXPLORER                 |       | | 
 | 634 | | 0x0c 0x008b | Media Select DVD                 | 0x0185 | KEY_DVD                          |         |        |                                  |       | | 
 | 635 | | 0x0c 0x008c | Media Select Telephone           | 0x00a9 | KEY_PHONE                        | 3.0     | 0x0005 | KEYCODE_CALL                     |       | | 
 | 636 | | 0x0c 0x008d | Media Select Program Guide       | 0x016a | KEY_PROGRAM                      | 3.0     | 0x00ac | KEYCODE_GUIDE                    |       | | 
 | 637 | | 0x0c 0x008e | Media Select Video Phone         | 0x01a0 | KEY_VIDEOPHONE                   |         |        |                                  |       | | 
 | 638 | | 0x0c 0x008f | Media Select Games               | 0x01a1 | KEY_GAMES                        |         |        |                                  |       | | 
 | 639 | | 0x0c 0x0090 | Media Select Messages            | 0x018c | KEY_MEMO                         |         |        |                                  |       | | 
 | 640 | | 0x0c 0x0091 | Media Select CD                  | 0x017f | KEY_CD                           |         |        |                                  |       | | 
 | 641 | | 0x0c 0x0092 | Media Select VCR                 | 0x017b | KEY_VCR                          |         |        |                                  |       | | 
 | 642 | | 0x0c 0x0093 | Media Select Tuner               | 0x0182 | KEY_TUNER                        |         |        |                                  |       | | 
 | 643 | | 0x0c 0x0094 | Quit                             | 0x00ae | KEY_EXIT                         |         |        |                                  |       | | 
 | 644 | | 0x0c 0x0095 | Help                             | 0x008a | KEY_HELP                         |         |        |                                  |       | | 
 | 645 | | 0x0c 0x0096 | Media Select Tape                | 0x0180 | KEY_TAPE                         |         |        |                                  |       | | 
 | 646 | | 0x0c 0x0097 | Media Select Cable               | 0x017a | KEY_TV2                          |         |        |                                  |       | | 
 | 647 | | 0x0c 0x0098 | Media Select Satellite           | 0x017d | KEY_SAT                          |         |        |                                  |       | | 
 | 648 | | 0x0c 0x0099 | Media Select Security            |        |                                  |         |        |                                  |       | | 
 | 649 | | 0x0c 0x009a | Media Select Home                | 0x016e | KEY_PVR                          | 3.0     | 0x00ad | KEYCODE_DVR                      |       | | 
 | 650 | | 0x0c 0x009c | Channel Increment                | 0x0192 | KEY_CHANNELUP                    | 3.0     | 0x00a6 | KEYCODE_CHANNEL_UP               |       | | 
 | 651 | | 0x0c 0x009d | Channel Decrement                | 0x0193 | KEY_CHANNELDOWN                  | 3.0     | 0x00a7 | KEYCODE_CHANNEL_DOWN             |       | | 
 | 652 | | 0x0c 0x009e | Media Select SAP                 |        |                                  |         |        |                                  |       | | 
 | 653 | | 0x0c 0x00a0 | VCR Plus                         | 0x017c | KEY_VCR2                         |         |        |                                  |       | | 
 | 654 | | 0x0c 0x00a1 | Once                             |        |                                  |         |        |                                  |       | | 
 | 655 | | 0x0c 0x00a2 | Daily                            |        |                                  |         |        |                                  |       | | 
 | 656 | | 0x0c 0x00a3 | Weekly                           |        |                                  |         |        |                                  |       | | 
 | 657 | | 0x0c 0x00a4 | Monthly                          |        |                                  |         |        |                                  |       | | 
 | 658 | | 0x0c 0x00b0 | Play                             | 0x00cf | KEY_PLAY                         | 3.0     | 0x007e | KEYCODE_MEDIA_PLAY               |       | | 
 | 659 | | 0x0c 0x00b1 | Pause                            | 0x0077 | KEY_PAUSE                        | 3.0     | 0x0079 | KEYCODE_BREAK                    |       | | 
 | 660 | | 0x0c 0x00b2 | Record                           | 0x00a7 | KEY_RECORD                       | 3.0     | 0x0082 | KEYCODE_MEDIA_RECORD             |       | | 
 | 661 | | 0x0c 0x00b3 | Fast Forward                     | 0x00d0 | KEY_FASTFORWARD                  | 3.0     | 0x005a | KEYCODE_MEDIA_FAST_FORWARD       |       | | 
 | 662 | | 0x0c 0x00b4 | Rewind                           | 0x00a8 | KEY_REWIND                       | 3.0     | 0x0059 | KEYCODE_MEDIA_REWIND             |       | | 
 | 663 | | 0x0c 0x00b5 | Scan Next Track                  | 0x00a3 | KEY_NEXTSONG                     | 3.0     | 0x0057 | KEYCODE_MEDIA_NEXT               |       | | 
 | 664 | | 0x0c 0x00b6 | Scan Previous Track              | 0x00a5 | KEY_PREVIOUSSONG                 | 3.0     | 0x0058 | KEYCODE_MEDIA_PREVIOUS           |       | | 
 | 665 | | 0x0c 0x00b7 | Stop                             | 0x00a6 | KEY_STOPCD                       | 3.0     | 0x0056 | KEYCODE_MEDIA_STOP               |       | | 
 | 666 | | 0x0c 0x00b8 | Eject                            | 0x00a1 | KEY_EJECTCD                      | 3.0     | 0x0081 | KEYCODE_MEDIA_EJECT              |       | | 
 | 667 | | 0x0c 0x00b9 | Random Play                      |        |                                  |         |        |                                  |       | | 
 | 668 | | 0x0c 0x00ba | Select Disc                      |        |                                  |         |        |                                  |       | | 
 | 669 | | 0x0c 0x00bb | Enter Disc                       |        |                                  |         |        |                                  |       | | 
 | 670 | | 0x0c 0x00bc | Repeat                           | 0x01b7 | KEY_MEDIA_REPEAT                 |         |        |                                  |       | | 
 | 671 | | 0x0c 0x00be | Track Normal                     |        |                                  |         |        |                                  |       | | 
 | 672 | | 0x0c 0x00c0 | Frame Forward                    |        |                                  |         |        |                                  |       | | 
 | 673 | | 0x0c 0x00c1 | Frame Back                       |        |                                  |         |        |                                  |       | | 
 | 674 | | 0x0c 0x00c2 | Mark                             |        |                                  |         |        |                                  |       | | 
 | 675 | | 0x0c 0x00c3 | Clear Mark                       |        |                                  |         |        |                                  |       | | 
 | 676 | | 0x0c 0x00c4 | Repeat From Mark                 |        |                                  |         |        |                                  |       | | 
 | 677 | | 0x0c 0x00c5 | Return To Mark                   |        |                                  |         |        |                                  |       | | 
 | 678 | | 0x0c 0x00c6 | Search Mark Forward              |        |                                  |         |        |                                  |       | | 
 | 679 | | 0x0c 0x00c7 | Search Mark Backwards            |        |                                  |         |        |                                  |       | | 
 | 680 | | 0x0c 0x00c8 | Counter Reset                    |        |                                  |         |        |                                  |       | | 
 | 681 | | 0x0c 0x00c9 | Show Counter                     |        |                                  |         |        |                                  |       | | 
 | 682 | | 0x0c 0x00ca | Tracking Increment               |        |                                  |         |        |                                  |       | | 
 | 683 | | 0x0c 0x00cb | Tracking Decrement               |        |                                  |         |        |                                  |       | | 
 | 684 | | 0x0c 0x00cc | Stop / Eject                     |        |                                  |         |        |                                  |       | | 
 | 685 | | 0x0c 0x00cd | Play / Pause                     | 0x00a4 | KEY_PLAYPAUSE                    | 3.0     | 0x0055 | KEYCODE_MEDIA_PLAY_PAUSE         |       | | 
 | 686 | | 0x0c 0x00ce | Play / Skip                      |        |                                  |         |        |                                  |       | | 
 | 687 | | 0x0c 0x00e2 | Mute                             | 0x0071 | KEY_MUTE                         | 3.0     | 0x00a4 | KEYCODE_VOLUME_MUTE              |       | | 
 | 688 | | 0x0c 0x00e5 | Bass Boost                       | 0x00d1 | KEY_BASSBOOST                    |         |        |                                  |       | | 
 | 689 | | 0x0c 0x00e6 | Surround Mode                    |        |                                  |         |        |                                  |       | | 
 | 690 | | 0x0c 0x00e7 | Loudness                         |        |                                  |         |        |                                  |       | | 
 | 691 | | 0x0c 0x00e8 | MPX                              |        |                                  |         |        |                                  |       | | 
 | 692 | | 0x0c 0x00e9 | Volume Increment                 | 0x0073 | KEY_VOLUMEUP                     | 1.6     | 0x0018 | KEYCODE_VOLUME_UP                |       | | 
 | 693 | | 0x0c 0x00ea | Volume Decrement                 | 0x0072 | KEY_VOLUMEDOWN                   | 1.6     | 0x0019 | KEYCODE_VOLUME_DOWN              |       | | 
 | 694 | | 0x0c 0x0181 | AL Launch Button Config. Tool    |        |                                  |         |        |                                  |       | | 
 | 695 | | 0x0c 0x0182 | AL Programmable Button Config.   | 0x009c | KEY_BOOKMARKS                    | 3.0     | 0x00ae | KEYCODE_BOOKMARK                 |       | | 
| Jeff Brown | 543b03f | 2011-11-28 18:23:46 -0800 | [diff] [blame] | 696 | | 0x0c 0x0183 | AL Consumer Control Config.      | 0x00ab | KEY_CONFIG                       | 4.0.3   | 0x00d1 | KEYCODE_MUSIC                    |       | | 
| Jeff Brown | 590a9d6 | 2011-06-30 12:55:34 -0700 | [diff] [blame] | 697 | | 0x0c 0x0184 | AL Word Processor                | 0x01a5 | KEY_WORDPROCESSOR                |         |        |                                  |       | | 
 | 698 | | 0x0c 0x0185 | AL Text Editor                   | 0x01a6 | KEY_EDITOR                       |         |        |                                  |       | | 
 | 699 | | 0x0c 0x0186 | AL Spreadsheet                   | 0x01a7 | KEY_SPREADSHEET                  |         |        |                                  |       | | 
 | 700 | | 0x0c 0x0187 | AL Graphics Editor               | 0x01a8 | KEY_GRAPHICSEDITOR               |         |        |                                  |       | | 
 | 701 | | 0x0c 0x0188 | AL Presentation App              | 0x01a9 | KEY_PRESENTATION                 |         |        |                                  |       | | 
 | 702 | | 0x0c 0x0189 | AL Database App                  | 0x01aa | KEY_DATABASE                     |         |        |                                  |       | | 
 | 703 | | 0x0c 0x018a | AL Email Reader                  | 0x009b | KEY_MAIL                         | 1.6     | 0x0041 | KEYCODE_ENVELOPE                 |       | | 
 | 704 | | 0x0c 0x018b | AL Newsreader                    | 0x01ab | KEY_NEWS                         |         |        |                                  |       | | 
 | 705 | | 0x0c 0x018c | AL Voicemail                     | 0x01ac | KEY_VOICEMAIL                    |         |        |                                  |       | | 
| Jeff Brown | 543b03f | 2011-11-28 18:23:46 -0800 | [diff] [blame] | 706 | | 0x0c 0x018d | AL Contacts / Address Book       | 0x01ad | KEY_ADDRESSBOOK                  | 4.0.3   | 0x00cf | KEYCODE_CONTACTS                 |       | | 
 | 707 | | 0x0c 0x018e | AL Calendar / Schedule           | 0x018d | KEY_CALENDAR                     | 4.0.3   | 0x00d0 | KEYCODE_CALENDAR                 |       | | 
| Jeff Brown | 590a9d6 | 2011-06-30 12:55:34 -0700 | [diff] [blame] | 708 | | 0x0c 0x018f | AL Task / Project Manager        |        |                                  |         |        |                                  |       | | 
 | 709 | | 0x0c 0x0190 | AL Log / Journal / Timecard      |        |                                  |         |        |                                  |       | | 
 | 710 | | 0x0c 0x0191 | AL Checkbook / Finance           | 0x00db | KEY_FINANCE                      |         |        |                                  |       | | 
| Jeff Brown | 543b03f | 2011-11-28 18:23:46 -0800 | [diff] [blame] | 711 | | 0x0c 0x0192 | AL Calculator                    | 0x008c | KEY_CALC                         | 4.0.3   | 0x00d2 | KEYCODE_CALCULATOR               |       | | 
| Jeff Brown | 590a9d6 | 2011-06-30 12:55:34 -0700 | [diff] [blame] | 712 | | 0x0c 0x0193 | AL A/V Capture / Playback        |        |                                  |         |        |                                  |       | | 
 | 713 | | 0x0c 0x0194 | AL Local Machine Browser         | 0x0090 | KEY_FILE                         |         |        |                                  |       | | 
 | 714 | | 0x0c 0x0195 | AL LAN/WAN Browser               |        |                                  |         |        |                                  |       | | 
 | 715 | | 0x0c 0x0196 | AL Internet Browser              | 0x0096 | KEY_WWW                          | 1.6     | 0x0040 | KEYCODE_EXPLORER                 |       | | 
 | 716 | | 0x0c 0x0197 | AL Remote Networking/ISP Connect |        |                                  |         |        |                                  |       | | 
 | 717 | | 0x0c 0x0198 | AL Network Conference            |        |                                  |         |        |                                  |       | | 
 | 718 | | 0x0c 0x0199 | AL Network Chat                  | 0x00d8 | KEY_CHAT                         |         |        |                                  |       | | 
 | 719 | | 0x0c 0x019a | AL Telephony / Dialer            |        |                                  |         |        |                                  |       | | 
 | 720 | | 0x0c 0x019b | AL Logon                         |        |                                  |         |        |                                  |       | | 
 | 721 | | 0x0c 0x019c | AL Logoff                        | 0x01b1 | KEY_LOGOFF                       |         |        |                                  |       | | 
 | 722 | | 0x0c 0x019d | AL Logon / Logoff                |        |                                  |         |        |                                  |       | | 
 | 723 | | 0x0c 0x019e | AL Terminal Lock / Screensaver   | 0x0098 | KEY_COFFEE                       | 4.0     | 0x001a | KEYCODE_POWER                    |       | | 
 | 724 | | 0x0c 0x019f | AL Control Panel                 |        |                                  |         |        |                                  |       | | 
 | 725 | | 0x0c 0x01a0 | AL Command Line Processor / Run  |        |                                  |         |        |                                  |       | | 
 | 726 | | 0x0c 0x01a1 | AL Process / Task Manager        |        |                                  |         |        |                                  |       | | 
 | 727 | | 0x0c 0x01a2 | AL Select Task / Application     |        |                                  |         |        |                                  |       | | 
 | 728 | | 0x0c 0x01a3 | AL Next Task / Application       |        |                                  |         |        |                                  |       | | 
 | 729 | | 0x0c 0x01a4 | AL Previous Task / Application   |        |                                  |         |        |                                  |       | | 
 | 730 | | 0x0c 0x01a5 | AL Preemptive Halt Task / App.   |        |                                  |         |        |                                  |       | | 
 | 731 | | 0x0c 0x01a6 | AL Integrated Help Center        | 0x008a | KEY_HELP                         |         |        |                                  |       | | 
 | 732 | | 0x0c 0x01a7 | AL Documents                     | 0x00eb | KEY_DOCUMENTS                    |         |        |                                  |       | | 
 | 733 | | 0x0c 0x01a8 | AL Thesaurus                     |        |                                  |         |        |                                  |       | | 
 | 734 | | 0x0c 0x01a9 | AL Dictionary                    |        |                                  |         |        |                                  |       | | 
 | 735 | | 0x0c 0x01aa | AL Desktop                       |        |                                  |         |        |                                  |       | | 
 | 736 | | 0x0c 0x01ab | AL Spell Check                   | 0x01b0 | KEY_SPELLCHECK                   |         |        |                                  |       | | 
 | 737 | | 0x0c 0x01ac | AL Grammar Check                 |        |                                  |         |        |                                  |       | | 
 | 738 | | 0x0c 0x01ad | AL Wireless Status               |        |                                  |         |        |                                  |       | | 
 | 739 | | 0x0c 0x01ae | AL Keyboard Layout               |        |                                  |         |        |                                  |       | | 
 | 740 | | 0x0c 0x01af | AL Virus Protection              |        |                                  |         |        |                                  |       | | 
 | 741 | | 0x0c 0x01b0 | AL Encryption                    |        |                                  |         |        |                                  |       | | 
 | 742 | | 0x0c 0x01b1 | AL Screen Saver                  |        |                                  |         |        |                                  |       | | 
 | 743 | | 0x0c 0x01b2 | AL Alarms                        |        |                                  |         |        |                                  |       | | 
 | 744 | | 0x0c 0x01b3 | AL Clock                         |        |                                  |         |        |                                  |       | | 
 | 745 | | 0x0c 0x01b4 | AL File Browser                  |        |                                  |         |        |                                  |       | | 
 | 746 | | 0x0c 0x01b5 | AL Power Status                  |        |                                  |         |        |                                  |       | | 
| Jeff Brown | 543b03f | 2011-11-28 18:23:46 -0800 | [diff] [blame] | 747 | | 0x0c 0x01b6 | AL Image Browser                 | 0x00e2 | KEY_MEDIA                        | 3.0     | 0x004f | KEYCODE_HEADSETHOOK              |       | | 
 | 748 | | 0x0c 0x01b7 | AL Audio Browser                 | 0x00d5 | KEY_SOUND                        | 4.0.3   | 0x00d1 | KEYCODE_MUSIC                    |       | | 
| Jeff Brown | 590a9d6 | 2011-06-30 12:55:34 -0700 | [diff] [blame] | 749 | | 0x0c 0x01b8 | AL Movie Browser                 |        |                                  |         |        |                                  |       | | 
 | 750 | | 0x0c 0x01b9 | AL Digital Rights Manager        |        |                                  |         |        |                                  |       | | 
 | 751 | | 0x0c 0x01ba | AL Digital Wallet                |        |                                  |         |        |                                  |       | | 
 | 752 | | 0x0c 0x01bc | AL Instant Messaging             | 0x01ae | KEY_MESSENGER                    |         |        |                                  |       | | 
 | 753 | | 0x0c 0x01bd | AL OEM Features / Tips Browser   | 0x0166 | KEY_INFO                         |         |        |                                  |       | | 
 | 754 | | 0x0c 0x01be | AL OEM Help                      |        |                                  |         |        |                                  |       | | 
 | 755 | | 0x0c 0x01bf | AL Online Community              |        |                                  |         |        |                                  |       | | 
 | 756 | | 0x0c 0x01c0 | AL Entertainment Content Browser |        |                                  |         |        |                                  |       | | 
 | 757 | | 0x0c 0x01c1 | AL Online Shopping Browser       |        |                                  |         |        |                                  |       | | 
 | 758 | | 0x0c 0x01c2 | AL SmartCard Information / Help  |        |                                  |         |        |                                  |       | | 
 | 759 | | 0x0c 0x01c3 | AL Market / Finance Browser      |        |                                  |         |        |                                  |       | | 
 | 760 | | 0x0c 0x01c4 | AL Customized Corp. News Browser |        |                                  |         |        |                                  |       | | 
 | 761 | | 0x0c 0x01c5 | AL Online Activity Browser       |        |                                  |         |        |                                  |       | | 
 | 762 | | 0x0c 0x01c6 | AL Research / Search Browser     |        |                                  |         |        |                                  |       | | 
 | 763 | | 0x0c 0x01c7 | AL Audio Player                  |        |                                  |         |        |                                  |       | | 
 | 764 | | 0x0c 0x0201 | AC New                           | 0x00b5 | KEY_NEW                          |         |        |                                  |       | | 
 | 765 | | 0x0c 0x0202 | AC Open                          | 0x0086 | KEY_OPEN                         |         |        |                                  |       | | 
 | 766 | | 0x0c 0x0203 | AC Close                         | 0x00ce | KEY_CLOSE                        |         |        |                                  |       | | 
 | 767 | | 0x0c 0x0204 | AC Exit                          | 0x00ae | KEY_EXIT                         |         |        |                                  |       | | 
 | 768 | | 0x0c 0x0205 | AC Maximize                      |        |                                  |         |        |                                  |       | | 
 | 769 | | 0x0c 0x0206 | AC Minimize                      |        |                                  |         |        |                                  |       | | 
 | 770 | | 0x0c 0x0207 | AC Save                          | 0x00ea | KEY_SAVE                         |         |        |                                  |       | | 
 | 771 | | 0x0c 0x0208 | AC Print                         | 0x00d2 | KEY_PRINT                        |         |        |                                  |       | | 
 | 772 | | 0x0c 0x0209 | AC Properties                    | 0x0082 | KEY_PROPS                        |         |        |                                  |       | | 
 | 773 | | 0x0c 0x021a | AC Undo                          | 0x0083 | KEY_UNDO                         |         |        |                                  |       | | 
 | 774 | | 0x0c 0x021b | AC Copy                          | 0x0085 | KEY_COPY                         |         |        |                                  |       | | 
 | 775 | | 0x0c 0x021c | AC Cut                           | 0x0089 | KEY_CUT                          |         |        |                                  |       | | 
 | 776 | | 0x0c 0x021d | AC Paste                         | 0x0087 | KEY_PASTE                        |         |        |                                  |       | | 
 | 777 | | 0x0c 0x021e | AC Select All                    |        |                                  |         |        |                                  |       | | 
 | 778 | | 0x0c 0x021f | AC Find                          | 0x0088 | KEY_FIND                         |         |        |                                  |       | | 
 | 779 | | 0x0c 0x0220 | AC Find and Replace              |        |                                  |         |        |                                  |       | | 
 | 780 | | 0x0c 0x0221 | AC Search                        | 0x00d9 | KEY_SEARCH                       | 1.6     | 0x0054 | KEYCODE_SEARCH                   |       | | 
 | 781 | | 0x0c 0x0222 | AC Go To                         | 0x0162 | KEY_GOTO                         |         |        |                                  |       | | 
 | 782 | | 0x0c 0x0223 | AC Home                          | 0x00ac | KEY_HOMEPAGE                     | 3.0     | 0x0003 | KEYCODE_HOME                     |       | | 
 | 783 | | 0x0c 0x0224 | AC Back                          | 0x009e | KEY_BACK                         | 1.6     | 0x0004 | KEYCODE_BACK                     |       | | 
 | 784 | | 0x0c 0x0225 | AC Forward                       | 0x009f | KEY_FORWARD                      | 3.0     | 0x007d | KEYCODE_FORWARD                  |       | | 
 | 785 | | 0x0c 0x0226 | AC Stop                          | 0x0080 | KEY_STOP                         | 3.0     | 0x0056 | KEYCODE_MEDIA_STOP               |       | | 
 | 786 | | 0x0c 0x0227 | AC Refresh                       | 0x00ad | KEY_REFRESH                      |         |        |                                  |       | | 
 | 787 | | 0x0c 0x0228 | AC Previous Link                 |        |                                  |         |        |                                  |       | | 
 | 788 | | 0x0c 0x0229 | AC Next Link                     |        |                                  |         |        |                                  |       | | 
 | 789 | | 0x0c 0x022a | AC Bookmarks                     | 0x009c | KEY_BOOKMARKS                    | 3.0     | 0x00ae | KEYCODE_BOOKMARK                 |       | | 
 | 790 | | 0x0c 0x022b | AC History                       |        |                                  |         |        |                                  |       | | 
 | 791 | | 0x0c 0x022c | AC Subscriptions                 |        |                                  |         |        |                                  |       | | 
 | 792 | | 0x0c 0x022d | AC Zoom In                       | 0x01a2 | KEY_ZOOMIN                       |         |        |                                  |       | | 
 | 793 | | 0x0c 0x022e | AC Zoom Out                      | 0x01a3 | KEY_ZOOMOUT                      |         |        |                                  |       | | 
 | 794 | | 0x0c 0x022f | AC Zoom                          | 0x01a4 | KEY_ZOOMRESET                    |         |        |                                  | 2     | | 
 | 795 | | 0x0c 0x0230 | AC Full Screen View              |        |                                  |         |        |                                  |       | | 
 | 796 | | 0x0c 0x0231 | AC Normal View                   |        |                                  |         |        |                                  |       | | 
 | 797 | | 0x0c 0x0232 | AC View Toggle                   |        |                                  |         |        |                                  |       | | 
 | 798 | | 0x0c 0x0233 | AC Scroll Up                     | 0x00b1 | KEY_SCROLLUP                     | 3.0     | 0x005c | KEYCODE_PAGE_UP                  |       | | 
 | 799 | | 0x0c 0x0234 | AC Scroll Down                   | 0x00b2 | KEY_SCROLLDOWN                   | 3.0     | 0x005d | KEYCODE_PAGE_DOWN                |       | | 
 | 800 | | 0x0c 0x0236 | AC Pan Left                      |        |                                  |         |        |                                  |       | | 
 | 801 | | 0x0c 0x0237 | AC Pan Right                     |        |                                  |         |        |                                  |       | | 
 | 802 | | 0x0c 0x0239 | AC New Window                    |        |                                  |         |        |                                  |       | | 
 | 803 | | 0x0c 0x023a | AC Tile Horizontally             |        |                                  |         |        |                                  |       | | 
 | 804 | | 0x0c 0x023b | AC Tile Vertically               |        |                                  |         |        |                                  |       | | 
 | 805 | | 0x0c 0x023c | AC Format                        |        |                                  |         |        |                                  |       | | 
 | 806 | | 0x0c 0x023d | AC Edit                          |        |                                  |         |        |                                  |       | | 
 | 807 | | 0x0c 0x023e | AC Bold                          |        |                                  |         |        |                                  |       | | 
 | 808 | | 0x0c 0x023f | AC Italics                       |        |                                  |         |        |                                  |       | | 
 | 809 | | 0x0c 0x0240 | AC Underline                     |        |                                  |         |        |                                  |       | | 
 | 810 | | 0x0c 0x0241 | AC Strikethrough                 |        |                                  |         |        |                                  |       | | 
 | 811 | | 0x0c 0x0242 | AC Subscript                     |        |                                  |         |        |                                  |       | | 
 | 812 | | 0x0c 0x0243 | AC Superscript                   |        |                                  |         |        |                                  |       | | 
 | 813 | | 0x0c 0x0244 | AC All Caps                      |        |                                  |         |        |                                  |       | | 
 | 814 | | 0x0c 0x0245 | AC Rotate                        |        |                                  |         |        |                                  |       | | 
 | 815 | | 0x0c 0x0246 | AC Resize                        |        |                                  |         |        |                                  |       | | 
 | 816 | | 0x0c 0x0247 | AC Flip horizontal               |        |                                  |         |        |                                  |       | | 
 | 817 | | 0x0c 0x0248 | AC Flip Vertical                 |        |                                  |         |        |                                  |       | | 
 | 818 | | 0x0c 0x0249 | AC Mirror Horizontal             |        |                                  |         |        |                                  |       | | 
 | 819 | | 0x0c 0x024a | AC Mirror Vertical               |        |                                  |         |        |                                  |       | | 
 | 820 | | 0x0c 0x024b | AC Font Select                   |        |                                  |         |        |                                  |       | | 
 | 821 | | 0x0c 0x024c | AC Font Color                    |        |                                  |         |        |                                  |       | | 
 | 822 | | 0x0c 0x024d | AC Font Size                     |        |                                  |         |        |                                  |       | | 
 | 823 | | 0x0c 0x024e | AC Justify Left                  |        |                                  |         |        |                                  |       | | 
 | 824 | | 0x0c 0x024f | AC Justify Center H              |        |                                  |         |        |                                  |       | | 
 | 825 | | 0x0c 0x0250 | AC Justify Right                 |        |                                  |         |        |                                  |       | | 
 | 826 | | 0x0c 0x0251 | AC Justify Block H               |        |                                  |         |        |                                  |       | | 
 | 827 | | 0x0c 0x0252 | AC Justify Top                   |        |                                  |         |        |                                  |       | | 
 | 828 | | 0x0c 0x0253 | AC Justify Center V              |        |                                  |         |        |                                  |       | | 
 | 829 | | 0x0c 0x0254 | AC Justify Bottom                |        |                                  |         |        |                                  |       | | 
 | 830 | | 0x0c 0x0255 | AC Justify Block V               |        |                                  |         |        |                                  |       | | 
 | 831 | | 0x0c 0x0256 | AC Indent Decrease               |        |                                  |         |        |                                  |       | | 
 | 832 | | 0x0c 0x0257 | AC Indent Increase               |        |                                  |         |        |                                  |       | | 
 | 833 | | 0x0c 0x0258 | AC Numbered List                 |        |                                  |         |        |                                  |       | | 
 | 834 | | 0x0c 0x0259 | AC Restart Numbering             |        |                                  |         |        |                                  |       | | 
 | 835 | | 0x0c 0x025a | AC Bulleted List                 |        |                                  |         |        |                                  |       | | 
 | 836 | | 0x0c 0x025b | AC Promote                       |        |                                  |         |        |                                  |       | | 
 | 837 | | 0x0c 0x025c | AC Demote                        |        |                                  |         |        |                                  |       | | 
 | 838 | | 0x0c 0x025d | AC Yes                           |        |                                  |         |        |                                  |       | | 
 | 839 | | 0x0c 0x025e | AC No                            |        |                                  |         |        |                                  |       | | 
 | 840 | | 0x0c 0x025f | AC Cancel                        | 0x00df | KEY_CANCEL                       |         |        |                                  |       | | 
 | 841 | | 0x0c 0x0260 | AC Catalog                       |        |                                  |         |        |                                  |       | | 
 | 842 | | 0x0c 0x0261 | AC Buy / Checkout                |        |                                  |         |        |                                  |       | | 
 | 843 | | 0x0c 0x0262 | AC Add to Cart                   |        |                                  |         |        |                                  |       | | 
 | 844 | | 0x0c 0x0263 | AC Expand                        |        |                                  |         |        |                                  |       | | 
 | 845 | | 0x0c 0x0264 | AC Expand All                    |        |                                  |         |        |                                  |       | | 
 | 846 | | 0x0c 0x0265 | AC Collapse                      |        |                                  |         |        |                                  |       | | 
 | 847 | | 0x0c 0x0266 | AC Collapse All                  |        |                                  |         |        |                                  |       | | 
 | 848 | | 0x0c 0x0267 | AC Print Preview                 |        |                                  |         |        |                                  |       | | 
 | 849 | | 0x0c 0x0268 | AC Paste Special                 |        |                                  |         |        |                                  |       | | 
 | 850 | | 0x0c 0x0269 | AC Insert Mode                   |        |                                  |         |        |                                  |       | | 
 | 851 | | 0x0c 0x026a | AC Delete                        |        |                                  |         |        |                                  |       | | 
 | 852 | | 0x0c 0x026b | AC Lock                          |        |                                  |         |        |                                  |       | | 
 | 853 | | 0x0c 0x026c | AC Unlock                        |        |                                  |         |        |                                  |       | | 
 | 854 | | 0x0c 0x026d | AC Protect                       |        |                                  |         |        |                                  |       | | 
 | 855 | | 0x0c 0x026e | AC Unprotect                     |        |                                  |         |        |                                  |       | | 
 | 856 | | 0x0c 0x026f | AC Attach Comment                |        |                                  |         |        |                                  |       | | 
 | 857 | | 0x0c 0x0270 | AC Delete Comment                |        |                                  |         |        |                                  |       | | 
 | 858 | | 0x0c 0x0271 | AC View Comment                  |        |                                  |         |        |                                  |       | | 
 | 859 | | 0x0c 0x0272 | AC Select Word                   |        |                                  |         |        |                                  |       | | 
 | 860 | | 0x0c 0x0273 | AC Select Sentence               |        |                                  |         |        |                                  |       | | 
 | 861 | | 0x0c 0x0274 | AC Select Paragraph              |        |                                  |         |        |                                  |       | | 
 | 862 | | 0x0c 0x0275 | AC Select Column                 |        |                                  |         |        |                                  |       | | 
 | 863 | | 0x0c 0x0276 | AC Select Row                    |        |                                  |         |        |                                  |       | | 
 | 864 | | 0x0c 0x0277 | AC Select Table                  |        |                                  |         |        |                                  |       | | 
 | 865 | | 0x0c 0x0278 | AC Select Object                 |        |                                  |         |        |                                  |       | | 
 | 866 | | 0x0c 0x0279 | AC Redo / Repeat                 | 0x00b6 | KEY_REDO                         |         |        |                                  |       | | 
 | 867 | | 0x0c 0x027a | AC Sort                          |        |                                  |         |        |                                  |       | | 
 | 868 | | 0x0c 0x027b | AC Sort Ascending                |        |                                  |         |        |                                  |       | | 
 | 869 | | 0x0c 0x027c | AC Sort Descending               |        |                                  |         |        |                                  |       | | 
 | 870 | | 0x0c 0x027d | AC Filter                        |        |                                  |         |        |                                  |       | | 
 | 871 | | 0x0c 0x027e | AC Set Clock                     |        |                                  |         |        |                                  |       | | 
 | 872 | | 0x0c 0x027f | AC View Clock                    |        |                                  |         |        |                                  |       | | 
 | 873 | | 0x0c 0x0280 | AC Select Time Zone              |        |                                  |         |        |                                  |       | | 
 | 874 | | 0x0c 0x0281 | AC Edit Time Zones               |        |                                  |         |        |                                  |       | | 
 | 875 | | 0x0c 0x0282 | AC Set Alarm                     |        |                                  |         |        |                                  |       | | 
 | 876 | | 0x0c 0x0283 | AC Clear Alarm                   |        |                                  |         |        |                                  |       | | 
 | 877 | | 0x0c 0x0284 | AC Snooze Alarm                  |        |                                  |         |        |                                  |       | | 
 | 878 | | 0x0c 0x0285 | AC Reset Alarm                   |        |                                  |         |        |                                  |       | | 
 | 879 | | 0x0c 0x0286 | AC Synchronize                   |        |                                  |         |        |                                  |       | | 
 | 880 | | 0x0c 0x0287 | AC Send/Receive                  |        |                                  |         |        |                                  |       | | 
 | 881 | | 0x0c 0x0288 | AC Send To                       |        |                                  |         |        |                                  |       | | 
 | 882 | | 0x0c 0x0289 | AC Reply                         | 0x00e8 | KEY_REPLY                        |         |        |                                  |       | | 
 | 883 | | 0x0c 0x028a | AC Reply All                     |        |                                  |         |        |                                  |       | | 
 | 884 | | 0x0c 0x028b | AC Forward Msg                   | 0x00e9 | KEY_FORWARDMAIL                  |         |        |                                  |       | | 
 | 885 | | 0x0c 0x028c | AC Send                          | 0x00e7 | KEY_SEND                         |         |        |                                  |       | | 
 | 886 | | 0x0c 0x028d | AC Attach File                   |        |                                  |         |        |                                  |       | | 
 | 887 | | 0x0c 0x028e | AC Upload                        |        |                                  |         |        |                                  |       | | 
 | 888 | | 0x0c 0x028f | AC Download (Save Target As)     |        |                                  |         |        |                                  |       | | 
 | 889 | | 0x0c 0x0290 | AC Set Borders                   |        |                                  |         |        |                                  |       | | 
 | 890 | | 0x0c 0x0291 | AC Insert Row                    |        |                                  |         |        |                                  |       | | 
 | 891 | | 0x0c 0x0292 | AC Insert Column                 |        |                                  |         |        |                                  |       | | 
 | 892 | | 0x0c 0x0293 | AC Insert File                   |        |                                  |         |        |                                  |       | | 
 | 893 | | 0x0c 0x0294 | AC Insert Picture                |        |                                  |         |        |                                  |       | | 
 | 894 | | 0x0c 0x0295 | AC Insert Object                 |        |                                  |         |        |                                  |       | | 
 | 895 | | 0x0c 0x0296 | AC Insert Symbol                 |        |                                  |         |        |                                  |       | | 
 | 896 | | 0x0c 0x0297 | AC Save and Close                |        |                                  |         |        |                                  |       | | 
 | 897 | | 0x0c 0x0298 | AC Rename                        |        |                                  |         |        |                                  |       | | 
 | 898 | | 0x0c 0x0299 | AC Merge                         |        |                                  |         |        |                                  |       | | 
 | 899 | | 0x0c 0x029a | AC Split                         |        |                                  |         |        |                                  |       | | 
 | 900 | | 0x0c 0x029b | AC Distribute Horizontally       |        |                                  |         |        |                                  |       | | 
 | 901 | | 0x0c 0x029c | AC Distribute Vertically         |        |                                  |         |        |                                  |       | | 
 | 902 |  | 
 | 903 | ### Additional non-HID Mappings ### | 
 | 904 |  | 
 | 905 | These mappings describe functions that do not appear in HID but for which Linux | 
 | 906 | key codes exist. | 
 | 907 |  | 
 | 908 | | LKC    | Linux Key Code Name              | Version | AKC    | Android Key Code Name            | Notes | | 
 | 909 | | ------ | -------------------------------- | ------- | ------ | -------------------------------- | ----- | | 
 | 910 | | 0x01d0 | KEY_FN                           | 3.0     | 0x0077 | KEYCODE_FUNCTION                 |       | | 
 | 911 | | 0x01d1 | KEY_FN_ESC                       | 3.0     | 0x006f | KEYCODE_ESCAPE                   | 3     | | 
 | 912 | | 0x01d2 | KEY_FN_F1                        | 3.0     | 0x0083 | KEYCODE_F1                       | 3     | | 
 | 913 | | 0x01d3 | KEY_FN_F2                        | 3.0     | 0x0084 | KEYCODE_F2                       | 3     | | 
 | 914 | | 0x01d4 | KEY_FN_F3                        | 3.0     | 0x0085 | KEYCODE_F3                       | 3     | | 
 | 915 | | 0x01d5 | KEY_FN_F4                        | 3.0     | 0x0086 | KEYCODE_F4                       | 3     | | 
 | 916 | | 0x01d6 | KEY_FN_F5                        | 3.0     | 0x0087 | KEYCODE_F5                       | 3     | | 
 | 917 | | 0x01d7 | KEY_FN_F6                        | 3.0     | 0x0088 | KEYCODE_F6                       | 3     | | 
 | 918 | | 0x01d8 | KEY_FN_F7                        | 3.0     | 0x0089 | KEYCODE_F7                       | 3     | | 
 | 919 | | 0x01d9 | KEY_FN_F8                        | 3.0     | 0x008a | KEYCODE_F8                       | 3     | | 
 | 920 | | 0x01da | KEY_FN_F9                        | 3.0     | 0x008b | KEYCODE_F9                       | 3     | | 
 | 921 | | 0x01db | KEY_FN_F10                       | 3.0     | 0x008c | KEYCODE_F10                      | 3     | | 
 | 922 | | 0x01dc | KEY_FN_F11                       | 3.0     | 0x008d | KEYCODE_F11                      | 3     | | 
 | 923 | | 0x01dd | KEY_FN_F12                       | 3.0     | 0x008e | KEYCODE_F12                      | 3     | | 
 | 924 | | 0x01de | KEY_FN_1                         | 3.0     | 0x0008 | KEYCODE_1                        | 3     | | 
 | 925 | | 0x01df | KEY_FN_2                         | 3.0     | 0x0009 | KEYCODE_2                        | 3     | | 
 | 926 | | 0x01e0 | KEY_FN_D                         | 3.0     | 0x0020 | KEYCODE_D                        | 3     | | 
 | 927 | | 0x01e1 | KEY_FN_E                         | 3.0     | 0x0021 | KEYCODE_E                        | 3     | | 
 | 928 | | 0x01e2 | KEY_FN_F                         | 3.0     | 0x0022 | KEYCODE_F                        | 3     | | 
 | 929 | | 0x01e3 | KEY_FN_S                         | 3.0     | 0x002f | KEYCODE_S                        | 3     | | 
 | 930 | | 0x01e4 | KEY_FN_B                         | 3.0     | 0x001e | KEYCODE_B                        | 3     | | 
 | 931 |  | 
 | 932 | ### Legacy Unsupported Keys ### | 
 | 933 |  | 
 | 934 | These mappings appeared in previous versions of Android but were inconsistent with | 
 | 935 | HID or used non-standard Linux key codes.  They are no longer supported. | 
 | 936 |  | 
 | 937 | | LKC    | Linux Key Code Name              | Version | AKC    | Android Key Code Name            | Notes | | 
 | 938 | | ------ | -------------------------------- | ------- | ------ | -------------------------------- | ----- | | 
 | 939 | | 0x00db | KEY_EMAIL                        | 1.6     | 0x004d | KEYCODE_AT                       | 4     | | 
 | 940 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 941 | | 0x00e3 | KEY_STAR                         | 1.6     | 0x0011 | KEYCODE_STAR                     | 4     | | 
 | 942 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 943 | | 0x00e4 | KEY_SHARP                        | 1.6     | 0x0012 | KEYCODE_POUND                    | 4     | | 
 | 944 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 945 | | 0x00e5 | KEY_SOFT1                        | 1.6     | 0x0052 | KEYCODE_MENU                     | 4     | | 
 | 946 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 947 | | 0x00e6 | KEY_SOFT2                        | 1.6     | 0x0002 | KEYCODE_SOFT_RIGHT               | 4     | | 
 | 948 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 949 | | 0x00e7 | KEY_SEND                         | 1.6     | 0x0005 | KEYCODE_CALL                     | 4     | | 
 | 950 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 951 | | 0x00e8 | KEY_CENTER                       | 1.6     | 0x0017 | KEYCODE_DPAD_CENTER              | 4     | | 
 | 952 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 953 | | 0x00e9 | KEY_HEADSETHOOK                  | 1.6     | 0x004f | KEYCODE_HEADSETHOOK              | 4     | | 
 | 954 | | ""     | ""                               | 4.0     |        |                                  | 4     | | 
 | 955 | | 0x00ea | KEY_0_5                          | 1.6     |        |                                  | 4     | | 
 | 956 | | 0x00eb | KEY_2_5                          | 1.6     |        |                                  | 4     | | 
 | 957 |  | 
 | 958 | ### Notes ### | 
 | 959 |  | 
 | 960 | 1.  The Android key code associated with common alphanumeric and symbolic | 
 | 961 |     keys may vary based on the keyboard layout and language. | 
 | 962 |     For historical reasons, the physical scan codes and HID usages | 
 | 963 |     associated with keys on a keyboard are often defined positionally | 
 | 964 |     even though the labels printed on those keys may vary from one | 
 | 965 |     language to another. | 
 | 966 |  | 
 | 967 |     On a US English (QWERTY) keyboard, the top-left alphabetic key is | 
 | 968 |     labeled Q.  On a French (AZERTY) keyboard, the key in the same | 
 | 969 |     position is labeled A.  Despite the label, on both keyboards the | 
 | 970 |     top-left alphabetic key is referred to using the HID usage | 
 | 971 |     0x07 0x0014 which is mapped to the Linux key code KEY_Q. | 
 | 972 |  | 
 | 973 |     When Android is configured with a US English keyboard layout, then | 
 | 974 |     the Linux key code KEY_Q will be mapped to the Android key code | 
 | 975 |     KEYCODE_Q and will produce the characters 'Q' and 'q'. | 
 | 976 |     However, when Android is configured with a French keyboard layout, | 
 | 977 |     then the Linux key code KEY_Q will be mapped to the Android key code | 
 | 978 |     KEYCODE_A and will produce the characters 'A' and 'a'. | 
 | 979 |  | 
 | 980 |     The Android key code typically reflects the language-specific | 
 | 981 |     interpretation of the key, so a different Android key code may | 
 | 982 |     be used for different languages. | 
 | 983 |  | 
 | 984 | 2.  `0x0c 0x022f AC Zoom` is defined in the HID as a linear control but | 
 | 985 |     the kernel maps it as a key, which is probably incorrect. | 
 | 986 |  | 
 | 987 | 3.  The Linux function keys `KEY_FN_*` are mapped to simpler | 
 | 988 |     key codes but are dispatched with the `META_FUNCTION` meta state | 
 | 989 |     bit set to true. | 
 | 990 |  | 
 | 991 | 4.  Prior to Android Ice Cream Sandwich 4.0, the default key layout | 
 | 992 |     contained mappings for some extra key codes that were not defined | 
 | 993 |     in the mainline Linux kernel headers.  These mappings have since | 
 | 994 |     been removed because these previously undefined key codes have | 
 | 995 |     since been assigned different meanings in more recent versions | 
 | 996 |     of the Linux kernel. | 
 | 997 |  | 
 | 998 | ### Sources ### | 
 | 999 |  | 
 | 1000 | 1.  [USB HID Usage Tables v1.12](http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf) | 
 | 1001 | 2.  Linux 2.6.39 kernel: include/linux/input.h, drivers/hid/hid-input.c | 
 | 1002 | 3.  Android ICS: qwerty.kl, Generic.kl, KeyEvent.java |