键盘设备

Android 支持各种键盘设备,包括特殊功能键盘(音量和电源控件)、紧凑型嵌入式 QWERTY 键盘以及全功能 PC 式外接键盘。

本文档仅介绍物理键盘。有关软键盘(输入法编辑器)的信息,请参阅 Android SDK。

键盘分类

如果满足以下任一条件,则输入设备被归类为键盘:

  • 输入设备报告存在键盘上使用的任何 Linux 键代码,包括 00xffKEY_OKKEY_MAX

  • 输入设备报告存在操纵杆和游戏手柄上使用的任何 Linux 键代码,包括 BTN_0BTN_9BTN_TRIGGERBTN_DEADBTN_ABTN_THUMBR

操纵杆目前被归类为键盘,因为操纵杆和游戏手柄按钮通过 EV_KEY 事件报告,方式与键盘按键的报告方式相同。因此,操纵杆和游戏手柄也使用按键映射文件进行配置。

一旦输入设备被归类为键盘,系统就会为该键盘加载输入设备配置文件和键盘布局。

然后,系统会尝试确定设备的附加特性。

  • 如果输入设备有任何键映射到 KEYCODE_Q,则该设备被视为具有字母键盘(而不是数字键盘)。字母键盘功能在资源 Configuration 对象中报告为 KEYBOARD_QWERTY

  • 如果输入设备有任何键映射到 KEYCODE_DPAD_UPKEYCODE_DPAD_DOWNKEYCODE_DPAD_LEFTKEYCODE_DPAD_RIGHTKEYCODE_DPAD_CENTER(所有键都必须存在),则该设备被视为具有方向键键盘。方向键键盘功能在资源 Configuration 对象中报告为 NAVIGATION_DPAD

  • 如果输入设备有任何键映射到 KEYCODE_BUTTON_A 或其他游戏手柄相关按键,则该设备被视为具有游戏手柄。

键盘驱动程序要求

  1. 键盘驱动程序应仅注册它们实际支持的按键的键代码。注册过多的键代码可能会混淆设备分类算法,或导致系统错误地检测设备支持的键盘功能。

  2. 键盘驱动程序应使用 EV_KEY 报告按键按下事件,使用值 0 表示按键已释放,值 1 表示按键已按下,值大于或等于 2 表示按键正在自动重复。

  3. Android 执行自己的键盘重复操作。应在驱动程序中禁用自动重复功能。

  4. 键盘驱动程序可以选择通过在按下按键时发送带有 MSC_SCANCODEEV_MSC 和指示用法或扫描代码的值来指示 HID 用法或低级扫描代码。Android 目前不使用此信息。

  5. EV_LED 写入设备时,键盘驱动程序应支持设置 LED 状态。hid-input 驱动程序会自动处理此问题。在撰写本文时,Android 使用 LED_CAPSLOCKLED_SCROLLLOCKLED_NUMLOCK。仅当键盘实际具有关联的指示灯时,才需要支持这些 LED。

  6. 用于嵌入式键盘(例如,使用 GPIO 矩阵)的键盘驱动程序应确保为设备进入睡眠状态时仍按下的任何按键发送值为 0EV_KEY 事件。否则,按键可能会卡住,并会永远自动重复。

键盘操作

以下是 Android 上键盘操作的简要概述。

  1. EventHubevdev 驱动程序读取原始事件,并使用键盘的按键布局图将 Linux 键代码(有时称为扫描码)映射到 Android 键代码。

  2. InputReader 会使用原始事件并更新元键状态。例如,如果按下或释放了左 Shift 键,则读取器将相应地设置或重置 META_SHIFT_LEFT_ONMETA_SHIFT_ON 位。

  3. InputReader 会将按键事件通知给 InputDispatcher

  4. InputDispatcher 通过调用 WindowManagerPolicy.interceptKeyBeforeQueueing 询问 WindowManagerPolicy 如何处理按键事件。此方法是关键路径的一部分,该路径负责在按下某些按键时唤醒设备。EventHub 有效地在此关键路径上保持唤醒锁定,以确保它能够运行完成。

  5. 如果当前正在使用 InputFilter,则 InputDispatcher 会为其提供机会来使用或转换按键。InputFilter 可用于实现低级别的全系统辅助功能策略。

  6. InputDispatcher 将按键加入队列,以便在调度线程上进行处理。

  7. InputDispatcher 将按键从队列中移除时,它会通过调用 WindowManagerPolicy.interceptKeyBeforeDispatching,再次让 WindowManagerPolicy 有机会拦截按键事件。此方法处理系统快捷方式和其他功能。

  8. 然后,InputDispatcher 识别按键事件目标(焦点窗口)并等待它们准备就绪。然后,InputDispatcher 将按键事件传递给应用。

  9. 在应用内部,按键事件会沿着视图层级结构向下传播到焦点视图,以进行预输入法按键调度。

  10. 如果在预输入法调度中未处理按键事件并且正在使用输入法,则按键事件将传递到输入法。

  11. 如果输入法未消耗按键事件,则按键事件会沿着视图层级结构向下传播到焦点视图,以进行标准按键调度。

  12. 应用会向 InputDispatcher 报告按键事件是否已被消耗。如果事件未被消耗,则 InputDispatcher 调用 WindowManagerPolicy.dispatchUnhandledKey 以应用“回退”行为。根据回退操作,可以使用不同的键代码重新启动按键事件调度周期。例如,如果应用不处理 KEYCODE_ESCAPE,则系统可能会将按键事件重新调度为 KEYCODE_BACK

键盘配置

键盘行为由键盘的按键布局、按键字符图和输入设备配置决定。

有关参与键盘配置的文件的更多详细信息,请参阅以下部分

属性

以下输入设备配置属性用于键盘。

keyboard.layout

定义: keyboard.layout = <名称>

指定与输入设备关联的按键布局文件的名称,不包括 .kl 扩展名。如果找不到此文件,输入系统将使用默认按键布局。

名称中的空格在查找期间会转换为下划线。

有关更多详细信息,请参阅按键布局文件文档。

keyboard.characterMap

定义: keyboard.characterMap = <名称>

指定与输入设备关联的按键字符图文件的名称,不包括 .kcm 扩展名。如果找不到此文件,输入系统将使用默认按键字符图。

名称中的空格在查找期间会转换为下划线。

有关更多详细信息,请参阅按键字符图文件文档。

keyboard.orientationAware

定义: keyboard.orientationAware = 0 | 1

指定键盘是否应响应显示屏方向更改。

  • 如果值为 1,则当关联的显示屏方向更改时,方向键区按键会旋转。

  • 如果值为 0,则键盘不受显示屏方向更改的影响。

默认值为 0

方向感知用于支持方向键区按键的旋转,例如在 Motorola Droid 上。例如,当设备从其自然方向顺时针旋转 90 度时,KEYCODE_DPAD_UP 将被重新映射以产生 KEYCODE_DPAD_RIGHT,因为当设备以此方向握持时,“向上”键最终指向“向右”。

keyboard.builtIn

定义: keyboard.builtIn = 0 | 1

指定键盘是否为内置(物理连接)键盘。

如果设备名称以 -keypad 结尾,则默认值为 1,否则为 0

内置键盘始终分配设备 ID 0。其他非内置键盘分配唯一的非零设备 ID。

对于内置键盘,使用 ID 0 对于保持与 KeyCharacterMap.BUILT_IN_KEYBOARD 字段的兼容性非常重要,该字段指定内置键盘的 ID,其值为 0。此字段已在 API 中弃用,但较旧的应用可能仍在使用它。

特殊功能键盘(其按键字符图指定 SPECIAL_FUNCTION 类型)永远不会注册为内置键盘,无论此属性的设置如何。这是因为特殊功能键盘根据定义不打算用于通用打字。

示例配置

# This is an example input device configuration file for a built-in
# keyboard that has a DPad.

# The keyboard is internal because it is part of the device.
device.internal = 1

# The keyboard is the default built-in keyboard so it should be assigned
# an id of 0.
keyboard.builtIn = 1

# The keyboard includes a DPad which is mounted on the device.  As the device
# is rotated the orientation of the DPad rotates along with it, so the DPad must
# be aware of the display orientation.  This ensures that pressing 'up' on the
# DPad always means 'up' from the perspective of the user, even when the entire
# device has been rotated.
keyboard.orientationAware = 1

兼容性说明

在 Honeycomb 之前,键盘输入映射器不使用任何配置属性。所有键盘都假定为物理连接且方向感知。默认按键布局和按键字符图命名为 qwerty 而不是 Generic。按键字符图格式也非常不同,并且框架不支持 PC 风格的全键盘或外部键盘。

将设备升级到 Honeycomb 时,请确保创建或更新必要的配置和按键图文件。

HID 用法、Linux 键代码和 Android 键代码

系统使用几个不同的标识符来引用按键,具体取决于抽象层。

对于 HID 设备,每个按键都有关联的 HID 用法。Linux hid-input 驱动程序以及相关的供应商和设备特定 HID 驱动程序负责解析 HID 报告并将 HID 用法映射到 Linux 键代码。

当 Android 从 Linux 内核读取 EV_KEY 事件时,它会根据设备的按键布局文件将每个 Linux 键代码转换为其对应的 Android 键代码。

当按键事件调度到应用时,android.view.KeyEvent 实例会将 Linux 键代码报告为 getScanCode() 的值,并将 Android 键代码报告为 getKeyCode() 的值。对于框架而言,只有 getKeyCode() 的值才重要。

请注意,Android 本身不使用 HID 用法信息,也不会将其传递给应用。

代码表

下表显示了 HID 用法、Linux 键代码和 Android 键代码之间的相互关系。

LKC 列指定了十六进制的 Linux 键代码。

AKC 列指定了十六进制的 Android 键代码。

“注释”列指的是表格后发布的注释。

“版本”列指定了 Android 平台的第一个版本,该版本在其默认按键图中包含了此按键。在默认按键图在版本之间发生更改的情况下,会显示多行。指示的最旧版本为 1.6。

  • 在 Gingerbread (2.3) 及更早版本中,默认按键图为 qwerty.kl。此按键图仅供 Android 模拟器使用,并非旨在用于支持任意外部键盘。尽管如此,一些 OEM 在平台中添加了蓝牙键盘支持,并依赖 qwerty.kl 来提供必要的键盘映射。因此,对于正在为这些特定设备构建外围设备的 OEM 而言,这些较旧的映射可能很有意义。请注意,这些映射与当前的映射有很大不同,尤其是在 HOME 键的处理方面。建议所有新的外围设备都应根据 Honeycomb 或更新的按键图(即标准 HID)进行开发。

  • 从 Honeycomb (3.0) 开始,默认按键图为 Generic.kl。此按键图旨在支持完整的 PC 样式键盘。标准 HID 键盘的大多数功能都应该可以直接使用。

键代码映射可能因 Linux 内核和 Android 版本而异。当已知 Android 默认按键图发生更改时,会在版本列中指示出来。

特定于设备的 HID 驱动程序和按键图可能会应用与此处指示的不同的映射。

HID 键盘和小键盘页 (0x07)

HID 用法 HID 用法名称 LKC Linux 键代码名称 版本 AKC Android 键代码名称 注释
0x07 0x0001 键盘错误翻转
0x07 0x0002 键盘 POST 失败
0x07 0x0003 键盘错误未定义
0x07 0x0004 键盘 a 和 A 0x001e KEY_A 1.6 0x001d KEYCODE_A 1
0x07 0x0005 键盘 b 和 B 0x0030 KEY_B 1.6 0x001e KEYCODE_B 1
0x07 0x0006 键盘 c 和 C 0x002e KEY_C 1.6 0x001f KEYCODE_C 1
0x07 0x0007 键盘 d 和 D 0x0020 KEY_D 1.6 0x0020 KEYCODE_D 1
0x07 0x0008 键盘 e 和 E 0x0012 KEY_E 1.6 0x0021 KEYCODE_E 1
0x07 0x0009 键盘 f 和 F 0x0021 KEY_F 1.6 0x0022 KEYCODE_F 1
0x07 0x000a 键盘 g 和 G 0x0022 KEY_G 1.6 0x0023 KEYCODE_G 1
0x07 0x000b 键盘 h 和 H 0x0023 KEY_H 1.6 0x0024 KEYCODE_H 1
0x07 0x000c 键盘 i 和 I 0x0017 KEY_I 1.6 0x0025 KEYCODE_I 1
0x07 0x000d 键盘 j 和 J 0x0024 KEY_J 1.6 0x0026 KEYCODE_J 1
0x07 0x000e 键盘 k 和 K 0x0025 KEY_K 1.6 0x0027 KEYCODE_K 1
0x07 0x000f 键盘 l 和 L 0x0026 KEY_L 1.6 0x0028 KEYCODE_L 1
0x07 0x0010 键盘 m 和 M 0x0032 KEY_M 1.6 0x0029 KEYCODE_M 1
0x07 0x0011 键盘 n 和 N 0x0031 KEY_N 1.6 0x002a KEYCODE_N 1
0x07 0x0012 键盘 o 和 O 0x0018 KEY_O 1.6 0x002b KEYCODE_O 1
0x07 0x0013 键盘 p 和 P 0x0019 KEY_P 1.6 0x002c KEYCODE_P 1
0x07 0x0014 键盘 q 和 Q 0x0010 KEY_Q 1.6 0x002d KEYCODE_Q 1
0x07 0x0015 键盘 r 和 R 0x0013 KEY_R 1.6 0x002e KEYCODE_R 1
0x07 0x0016 键盘 s 和 S 0x001f KEY_S 1.6 0x002f KEYCODE_S 1
0x07 0x0017 键盘 t 和 T 0x0014 KEY_T 1.6 0x0030 KEYCODE_T 1
0x07 0x0018 键盘 u 和 U 0x0016 KEY_U 1.6 0x0031 KEYCODE_U 1
0x07 0x0019 键盘 v 和 V 0x002f KEY_V 1.6 0x0032 KEYCODE_V 1
0x07 0x001a 键盘 w 和 W 0x0011 KEY_W 1.6 0x0033 KEYCODE_W 1
0x07 0x001b 键盘 x 和 X 0x002d KEY_X 1.6 0x0034 KEYCODE_X 1
0x07 0x001c 键盘 y 和 Y 0x0015 KEY_Y 1.6 0x0035 KEYCODE_Y 1
0x07 0x001d 键盘 z 和 Z 0x002c KEY_Z 1.6 0x0036 KEYCODE_Z 1
0x07 0x001e 键盘 1 和 ! 0x0002 KEY_1 1.6 0x0008 KEYCODE_1 1
0x07 0x001f 键盘 2 和 @ 0x0003 KEY_2 1.6 0x0009 KEYCODE_2 1
0x07 0x0020 键盘 3 和 # 0x0004 KEY_3 1.6 0x000a KEYCODE_3 1
0x07 0x0021 键盘 4 和 $ 0x0005 KEY_4 1.6 0x000b KEYCODE_4 1
0x07 0x0022 键盘 5 和 % 0x0006 KEY_5 1.6 0x000c KEYCODE_5 1
0x07 0x0023 键盘 6 和 ^ 0x0007 KEY_6 1.6 0x000d KEYCODE_6 1
0x07 0x0024 键盘 7 和 & 0x0008 KEY_7 1.6 0x000e KEYCODE_7 1
0x07 0x0025 键盘 8 和 * 0x0009 KEY_8 1.6 0x000f KEYCODE_8 1
0x07 0x0026 键盘 9 和 ( 0x000a KEY_9 1.6 0x0010 KEYCODE_9 1
0x07 0x0027 键盘 0 和 ) 0x000b KEY_0 1.6 0x0007 KEYCODE_0 1
0x07 0x0028 键盘 Return (ENTER) 0x001c KEY_ENTER 1.6 0x0042 KEYCODE_ENTER 1
0x07 0x0029 键盘 ESCAPE 0x0001 KEY_ESC 3.0 0x006f KEYCODE_ESCAPE
"" "" "" "" 2.3 0x0004 KEYCODE_BACK
0x07 0x002a 键盘 DELETE (Backspace) 0x000e KEY_BACKSPACE 1.6 0x0043 KEYCODE_DEL
0x07 0x002b 键盘 Tab 0x000f KEY_TAB 1.6 0x003d KEYCODE_TAB
0x07 0x002c 键盘 Spacebar 0x0039 KEY_SPACE 1.6 0x003e KEYCODE_SPACE
0x07 0x002d 键盘 - 和 _ 0x000c KEY_MINUS 1.6 0x0045 KEYCODE_MINUS 1
0x07 0x002e 键盘 = 和 + 0x000d KEY_EQUAL 1.6 0x0046 KEYCODE_EQUALS 1
0x07 0x002f 键盘 [ 和 { 0x001a KEY_LEFTBRACE 1.6 0x0047 KEYCODE_LEFT_BRACKET 1
0x07 0x0030 键盘 ] 和 } 0x001b KEY_RIGHTBRACE 1.6 0x0048 KEYCODE_RIGHT_BRACKET 1
0x07 0x0031 键盘 \ 和 | 0x002b KEY_BACKSLASH 1.6 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0032 键盘 Non-US # 和 ~ 0x002b KEY_BACKSLASH 1.6 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0033 键盘 ; 和 0x0027 KEY_SEMICOLON 1.6 0x004a KEYCODE_SEMICOLON 1
0x07 0x0034 键盘 ' 和 " 0x0028 KEY_APOSTROPHE 1.6 0x004b KEYCODE_APOSTROPHE 1
0x07 0x0035 键盘 ` 和 ~ 0x0029 KEY_GRAVE 3.0 0x0044 KEYCODE_GRAVE 1
0x07 0x0036 键盘 , 和 < 0x0033 KEY_COMMA 1.6 0x0037 KEYCODE_COMMA 1
0x07 0x0037 键盘 . 和 > 0x0034 KEY_DOT 1.6 0x0038 KEYCODE_PERIOD 1
0x07 0x0038 键盘 / 和 ? 0x0035 KEY_SLASH 1.6 0x004c KEYCODE_SLASH 1
0x07 0x0039 键盘 Caps Lock 0x003a KEY_CAPSLOCK 3.0 0x0073 KEYCODE_CAPS_LOCK
0x07 0x003a 键盘 F1 0x003b KEY_F1 3.0 0x0083 KEYCODE_F1
"" "" "" "" 1.6 0x0052 KEYCODE_MENU
0x07 0x003b 键盘 F2 0x003c KEY_F2 3.0 0x0084 KEYCODE_F2
"" "" "" "" 1.6 0x0002 KEYCODE_SOFT_RIGHT
0x07 0x003c 键盘 F3 0x003d KEY_F3 3.0 0x0085 KEYCODE_F3
"" "" "" "" 1.6 0x0005 KEYCODE_CALL
0x07 0x003d 键盘 F4 0x003e KEY_F4 3.0 0x0086 KEYCODE_F4
"" "" "" "" 1.6 0x0006 KEYCODE_ENDCALL
0x07 0x003e 键盘 F5 0x003f KEY_F5 3.0 0x0087 KEYCODE_F5
0x07 0x003f 键盘 F6 0x0040 KEY_F6 3.0 0x0088 KEYCODE_F6
0x07 0x0040 键盘 F7 0x0041 KEY_F7 3.0 0x0089 KEYCODE_F7
0x07 0x0041 键盘 F8 0x0042 KEY_F8 3.0 0x008a KEYCODE_F8
0x07 0x0042 键盘 F9 0x0043 KEY_F9 3.0 0x008b KEYCODE_F9
0x07 0x0043 键盘 F10 0x0044 KEY_F10 3.0 0x008c KEYCODE_F10
"" "" "" "" 2.3 0x0052 KEYCODE_MENU
0x07 0x0044 键盘 F11 0x0057 KEY_F11 3.0 0x008d KEYCODE_F11
0x07 0x0045 键盘 F12 0x0058 KEY_F12 3.0 0x008e KEYCODE_F12
0x07 0x0046 键盘 Print Screen 0x0063 KEY_SYSRQ 3.0 0x0078 KEYCODE_SYSRQ
0x07 0x0047 键盘 Scroll Lock 0x0046 KEY_SCROLLLOCK 3.0 0x0074 KEYCODE_SCROLL_LOCK
0x07 0x0048 键盘 Pause 0x0077 KEY_PAUSE 3.0 0x0079 KEYCODE_BREAK
0x07 0x0049 键盘 Insert 0x006e KEY_INSERT 3.0 0x007c KEYCODE_INSERT
0x07 0x004a 键盘 Home 0x0066 KEY_HOME 3.0 0x007a KEYCODE_MOVE_HOME
"" "" "" "" 1.6 0x0003 KEYCODE_HOME
0x07 0x004b 键盘 Page Up 0x0068 KEY_PAGEUP 3.0 0x005c KEYCODE_PAGE_UP
0x07 0x004c 键盘 Delete Forward 0x006f KEY_DELETE 3.0 0x0070 KEYCODE_FORWARD_DEL
0x07 0x004d 键盘 End 0x006b KEY_END 3.0 0x007b KEYCODE_MOVE_END
"" "" "" "" 1.6 0x0006 KEYCODE_ENDCALL
0x07 0x004e 键盘 Page Down 0x006d KEY_PAGEDOWN 3.0 0x005d KEYCODE_PAGE_DOWN
0x07 0x004f 键盘 Right Arrow 0x006a KEY_RIGHT 1.6 0x0016 KEYCODE_DPAD_RIGHT
0x07 0x0050 键盘 Left Arrow 0x0069 KEY_LEFT 1.6 0x0015 KEYCODE_DPAD_LEFT
0x07 0x0051 键盘 Down Arrow 0x006c KEY_DOWN 1.6 0x0014 KEYCODE_DPAD_DOWN
0x07 0x0052 键盘 Up Arrow 0x0067 KEY_UP 1.6 0x0013 KEYCODE_DPAD_UP
0x07 0x0053 键盘 Num Lock 和 Clear 0x0045 KEY_NUMLOCK 3.0 0x008f KEYCODE_NUM_LOCK
0x07 0x0054 小键盘 / 0x0062 KEY_KPSLASH 3.0 0x009a KEYCODE_NUMPAD_DIVIDE
0x07 0x0055 小键盘 * 0x0037 KEY_KPASTERISK 3.0 0x009b KEYCODE_NUMPAD_MULTIPLY
0x07 0x0056 小键盘 - 0x004a KEY_KPMINUS 3.0 0x009c KEYCODE_NUMPAD_SUBTRACT
0x07 0x0057 小键盘 + 0x004e KEY_KPPLUS 3.0 0x009d KEYCODE_NUMPAD_ADD
0x07 0x0058 小键盘 ENTER 0x0060 KEY_KPENTER 3.0 0x00a0 KEYCODE_NUMPAD_ENTER
0x07 0x0059 小键盘 1 和 End 0x004f KEY_KP1 3.0 0x0091 KEYCODE_NUMPAD_1
0x07 0x005a 小键盘 2 和 Down Arrow 0x0050 KEY_KP2 3.0 0x0092 KEYCODE_NUMPAD_2
0x07 0x005b 小键盘 3 和 PageDn 0x0051 KEY_KP3 3.0 0x0093 KEYCODE_NUMPAD_3
0x07 0x005c 小键盘 4 和 Left Arrow 0x004b KEY_KP4 3.0 0x0094 KEYCODE_NUMPAD_4
0x07 0x005d 小键盘 5 0x004c KEY_KP5 3.0 0x0095 KEYCODE_NUMPAD_5
0x07 0x005e 小键盘 6 和 Right Arrow 0x004d KEY_KP6 3.0 0x0096 KEYCODE_NUMPAD_6
0x07 0x005f 小键盘 7 和 Home 0x0047 KEY_KP7 3.0 0x0097 KEYCODE_NUMPAD_7
0x07 0x0060 小键盘 8 和 Up Arrow 0x0048 KEY_KP8 3.0 0x0098 KEYCODE_NUMPAD_8
0x07 0x0061 小键盘 9 和 Page Up 0x0049 KEY_KP9 3.0 0x0099 KEYCODE_NUMPAD_9
0x07 0x0062 小键盘 0 和 Insert 0x0052 KEY_KP0 3.0 0x0090 KEYCODE_NUMPAD_0
0x07 0x0063 小键盘 . 和 Delete 0x0053 KEY_KPDOT 3.0 0x009e KEYCODE_NUMPAD_DOT
0x07 0x0064 键盘 Non-US \ 和 | 0x0056 KEY_102ND 4.0 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0065 键盘 Application 0x007f KEY_COMPOSE 3.0 0x0052 KEYCODE_MENU
"" "" "" "" 1.6 0x0054 KEYCODE_SEARCH
0x07 0x0066 键盘 Power 0x0074 KEY_POWER 1.6 0x001a KEYCODE_POWER
0x07 0x0067 小键盘 = 0x0075 KEY_KPEQUAL 3.0 0x00a1 KEYCODE_NUMPAD_EQUALS
0x07 0x0068 键盘 F13 0x00b7 KEY_F13
0x07 0x0069 键盘 F14 0x00b8 KEY_F14
0x07 0x006a 键盘 F15 0x00b9 KEY_F15
0x07 0x006b 键盘 F16 0x00ba KEY_F16
0x07 0x006c 键盘 F17 0x00bb KEY_F17
0x07 0x006d 键盘 F18 0x00bc KEY_F18
0x07 0x006e 键盘 F19 0x00bd KEY_F19
0x07 0x006f 键盘 F20 0x00be KEY_F20
0x07 0x0070 键盘 F21 0x00bf KEY_F21
0x07 0x0071 键盘 F22 0x00c0 KEY_F22
0x07 0x0072 键盘 F23 0x00c1 KEY_F23
0x07 0x0073 键盘 F24 0x00c2 KEY_F24
0x07 0x0074 键盘 Execute 0x0086 KEY_OPEN
0x07 0x0075 键盘 Help 0x008a KEY_HELP
0x07 0x0076 键盘 Menu 0x0082 KEY_PROPS
0x07 0x0077 键盘 Select 0x0084 KEY_FRONT
0x07 0x0078 键盘 Stop 0x0080 KEY_STOP 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x0079 键盘 Again 0x0081 KEY_AGAIN
0x07 0x007a 键盘 Undo 0x0083 KEY_UNDO
0x07 0x007b 键盘 Cut 0x0089 KEY_CUT
0x07 0x007c 键盘 Copy 0x0085 KEY_COPY
0x07 0x007d 键盘 Paste 0x0087 KEY_PASTE
0x07 0x007e 键盘 Find 0x0088 KEY_FIND
0x07 0x007f 键盘 Mute 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x07 0x0080 键盘 Volume Up 0x0073 KEY_VOLUMEUP 1.6 0x0018 KEYCODE_VOLUME_UP
0x07 0x0081 键盘 Volume Down 0x0072 KEY_VOLUMEDOWN 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x07 0x0082 键盘 Locking Caps Lock
0x07 0x0083 键盘 Locking Num Lock
0x07 0x0084 键盘 Locking Scroll Lock
0x07 0x0085 小键盘 Comma 0x0079 KEY_KPCOMMA 3.0 0x009f KEYCODE_NUMPAD_COMMA
0x07 0x0086 小键盘 Equal Sign
0x07 0x0087 键盘 International1 0x0059 KEY_RO
0x07 0x0088 键盘 International2 0x005d KEY_KATAKANAHIRAGANA
0x07 0x0089 键盘 International3 0x007c KEY_YEN
0x07 0x008a 键盘 International4 0x005c KEY_HENKAN
0x07 0x008b 键盘 International5 0x005e KEY_MUHENKAN
0x07 0x008c 键盘 International6 0x005f KEY_KPJPCOMMA
0x07 0x008d 键盘 International7
0x07 0x008e 键盘 International8
0x07 0x008f 键盘 International9
0x07 0x0090 键盘 LANG1 0x007a KEY_HANGEUL
0x07 0x0091 键盘 LANG2 0x007b KEY_HANJA
0x07 0x0092 键盘 LANG3 0x005a KEY_KATAKANA
0x07 0x0093 键盘 LANG4 0x005b KEY_HIRAGANA
0x07 0x0094 键盘 LANG5 0x0055 KEY_ZENKAKUHANKAKU
0x07 0x0095 键盘 LANG6
0x07 0x0096 键盘 LANG7
0x07 0x0097 键盘 LANG8
0x07 0x0098 键盘 LANG9
0x07 0x0099 键盘 Alternate Erase
0x07 0x009a 键盘 SysReq/Attention
0x07 0x009b 键盘 Cancel
0x07 0x009c 键盘 Clear
0x07 0x009d 键盘 Prior
0x07 0x009e 键盘 Return
0x07 0x009f 键盘 Separator
0x07 0x00a0 键盘 Out
0x07 0x00a1 键盘 Oper
0x07 0x00a2 键盘 Clear/Again
0x07 0x00a3 键盘 CrSel/Props
0x07 0x00a4 键盘 ExSel
0x07 0x00b0 小键盘 00
0x07 0x00b1 小键盘 000
0x07 0x00b2 千位分隔符
0x07 0x00b3 十进制分隔符
0x07 0x00b4 货币单位
0x07 0x00b5 货币子单位
0x07 0x00b6 小键盘 ( 0x00b3 KEY_KPLEFTPAREN 3.0 0x00a2 KEYCODE_NUMPAD_LEFT_PAREN
0x07 0x00b7 小键盘 ) 0x00b4 KEY_KPRIGHTPAREN 3.0 0x00a3 KEYCODE_NUMPAD_RIGHT_PAREN
0x07 0x00b8 小键盘 {
0x07 0x00b9 小键盘 }
0x07 0x00ba 小键盘 Tab
0x07 0x00bb 小键盘 Backspace
0x07 0x00bc 小键盘 A
0x07 0x00bd 小键盘 B
0x07 0x00be 小键盘 C
0x07 0x00bf 小键盘 D
0x07 0x00c0 小键盘 E
0x07 0x00c1 小键盘 F
0x07 0x00c2 小键盘 XOR
0x07 0x00c3 小键盘 ^
0x07 0x00c4 小键盘 %
0x07 0x00c5 小键盘 <
0x07 0x00c6 小键盘 >
0x07 0x00c7 小键盘 &
0x07 0x00c8 小键盘 &&
0x07 0x00c9 小键盘 |
0x07 0x00ca 小键盘 ||
0x07 0x00cb 小键盘
0x07 0x00cc 小键盘 #
0x07 0x00cd 小键盘 Space
0x07 0x00ce 小键盘 @
0x07 0x00cf 小键盘 !
0x07 0x00d0 小键盘 Memory Store
0x07 0x00d1 小键盘 Memory Recall
0x07 0x00d2 小键盘 Memory Clear
0x07 0x00d3 小键盘 Memory Add
0x07 0x00d4 小键盘 Memory Subtract
0x07 0x00d5 小键盘 Memory Multiply
0x07 0x00d6 小键盘 Memory Divide
0x07 0x00d7 小键盘 +/-
0x07 0x00d8 小键盘 Clear
0x07 0x00d9 小键盘 Clear Entry
0x07 0x00da 小键盘 Binary
0x07 0x00db 小键盘 Octal
0x07 0x00dc 小键盘 Decimal
0x07 0x00dd 小键盘 Hexadecimal
0x07 0x00e0 键盘 Left Control 0x001d KEY_LEFTCTRL 3.0 0x0071 KEYCODE_CTRL_LEFT
0x07 0x00e1 键盘 Left Shift 0x002a KEY_LEFTSHIFT 1.6 0x003b KEYCODE_SHIFT_LEFT
0x07 0x00e2 键盘 Left Alt 0x0038 KEY_LEFTALT 1.6 0x0039 KEYCODE_ALT_LEFT
0x07 0x00e3 键盘 Left GUI 0x007d KEY_LEFTMETA 3.0 0x0075 KEYCODE_META_LEFT
0x07 0x00e4 键盘 Right Control 0x0061 KEY_RIGHTCTRL 3.0 0x0072 KEYCODE_CTRL_RIGHT
0x07 0x00e5 键盘 Right Shift 0x0036 KEY_RIGHTSHIFT 1.6 0x003c KEYCODE_SHIFT_RIGHT
0x07 0x00e6 键盘 Right Alt 0x0064 KEY_RIGHTALT 1.6 0x003a KEYCODE_ALT_RIGHT
0x07 0x00e7 键盘 Right GUI 0x007e KEY_RIGHTMETA 3.0 0x0076 KEYCODE_META_RIGHT
0x07 0x00e8 0x00a4 KEY_PLAYPAUSE 3.0 0x0055 KEYCODE_MEDIA_PLAY_PAUSE
0x07 0x00e9 0x00a6 KEY_STOPCD 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x00ea 0x00a5 KEY_PREVIOUSSONG 3.0 0x0058 KEYCODE_MEDIA_PREVIOUS
0x07 0x00eb 0x00a3 KEY_NEXTSONG 3.0 0x0057 KEYCODE_MEDIA_NEXT
0x07 0x00ec 0x00a1 KEY_EJECTCD 3.0 0x0081 KEYCODE_MEDIA_EJECT
0x07 0x00ed 0x0073 KEY_VOLUMEUP 1.6 0x0018 KEYCODE_VOLUME_UP
0x07 0x00ee 0x0072 KEY_VOLUMEDOWN 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x07 0x00ef 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x07 0x00f0 0x0096 KEY_WWW 1.6 0x0040 KEYCODE_EXPLORER
0x07 0x00f1 0x009e KEY_BACK 1.6 0x0004 KEYCODE_BACK
0x07 0x00f2 0x009f KEY_FORWARD 3.0 0x007d KEYCODE_FORWARD
0x07 0x00f3 0x0080 KEY_STOP 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x00f4 0x0088 KEY_FIND
0x07 0x00f5 0x00b1 KEY_SCROLLUP 3.0 0x005c KEYCODE_PAGE_UP
0x07 0x00f6 0x00b2 KEY_SCROLLDOWN 3.0 0x005d KEYCODE_PAGE_DOWN
0x07 0x00f7 0x00b0 KEY_EDIT
0x07 0x00f8 0x008e KEY_SLEEP
0x07 0x00f9 0x0098 KEY_COFFEE 4.0 0x001a KEYCODE_POWER
0x07 0x00fa 0x00ad KEY_REFRESH
0x07 0x00fb 0x008c KEY_CALC 4.0.3 0x00d2 KEYCODE_CALCULATOR

HID 通用桌面页 (0x01)

HID 用法 HID 用法名称 LKC Linux 键代码名称 版本 AKC Android 键代码名称 注释
0x01 0x0081 系统关机 0x0074 KEY_POWER 1.6 0x001a KEYCODE_POWER
0x01 0x0082 系统睡眠 0x008e KEY_SLEEP 4.0 0x001a KEYCODE_POWER
0x01 0x0083 系统唤醒 0x008f KEY_WAKEUP 4.0 0x001a KEYCODE_POWER
0x01 0x0084 系统上下文菜单
0x01 0x0085 系统主菜单
0x01 0x0086 系统应用菜单
0x01 0x0087 系统菜单帮助
0x01 0x0088 系统菜单退出
0x01 0x0089 系统菜单选择
0x01 0x008a 系统菜单右键
0x01 0x008b 系统菜单 左
0x01 0x008c 系统菜单 上
0x01 0x008d 系统菜单 下
0x01 0x008e 系统冷重启
0x01 0x008f 系统热重启
0x01 0x00a0 系统 停靠
0x01 0x00a1 系统 解除停靠
0x01 0x00a2 系统设置
0x01 0x00a3 系统中断
0x01 0x00a4 系统调试器中断
0x01 0x00a5 应用程序中断
0x01 0x00a6 应用程序调试器中断
0x01 0x00a7 系统扬声器静音
0x01 0x00a8 系统休眠
0x01 0x00b0 系统显示器反转
0x01 0x00b1 系统显示器内置
0x01 0x00b2 系统显示器外置
0x01 0x00b3 系统显示器两者
0x01 0x00b4 系统显示器双屏
0x01 0x00b5 系统显示器切换内置/外置
0x01 0x00b6 系统显示器交换主/副屏
0x01 0x00b7 系统显示器 LCD 自动缩放

HID 消费者页面 (0x0c)

HID 用法 HID 用法名称 LKC Linux 键代码名称 版本 AKC Android 键代码名称 注释
0x0c 0x0030 电源
0x0c 0x0031 重置
0x0c 0x0032 睡眠
0x0c 0x0033 睡眠后
0x0c 0x0034 睡眠模式 0x008e KEY_SLEEP 4.0 0x001a KEYCODE_POWER
0x0c 0x0040 菜单 0x008b KEY_MENU 1.6 0x0052 KEYCODE_MENU
0x0c 0x0041 菜单选择
0x0c 0x0042 菜单向上
0x0c 0x0043 菜单向下
0x0c 0x0044 菜单向左
0x0c 0x0045 菜单向右 0x0181 KEY_RIGHT
0x0c 0x0046 菜单退出
0x0c 0x0047 菜单值增加
0x0c 0x0048 菜单值减少
0x0c 0x0067 画中画切换 0x00ab KEYCODE_WINDOW Added in aosp/1365553
0x0c 0x0069 红色菜单按钮 0x18e KEY_RED 0x00b7 KEYCODE_PROG_RED Added in aosp/1388616
0x0c 0x006a 绿色菜单按钮 0x18f KEY_GREEN 0x00b8 KEYCODE_PROG_GREEN Added in aosp/1388616
0x0c 0x006b 蓝色菜单按钮 0x191 KEY_BLUE 0x00ba KEYCODE_PROG_BLUE Added in aosp/1388616
0x0c 0x006c 黄色菜单按钮 0x190 KEY_YELLOW 0x00b9 KEYCODE_PROG_YELLOW Added in aosp/1388616
0x0c 0x0081 分配选择
0x0c 0x0082 模式步进
0x0c 0x0083 调用上次 0x0195 KEY_LAST 0xe5 KEYCODE_LAST_CHANNEL Added in aosp/1365551
0x0c 0x0084 输入频道
0x0c 0x0085 点播电影
0x0c 0x0088 媒体选择 计算机 0x0178 KEY_PC
0x0c 0x0089 媒体选择 电视 0x0179 KEY_TV 3.0 0x00aa KEYCODE_TV
0x0c 0x008a 媒体选择 万维网 0x0096 KEY_WWW 1.6 0x0040 KEYCODE_EXPLORER
0x0c 0x008b 媒体选择 DVD 0x0185 KEY_DVD
0x0c 0x008c 媒体选择 电话 0x00a9 KEY_PHONE 3.0 0x0005 KEYCODE_CALL
0x0c 0x008d 媒体选择 节目指南 0x016a KEY_PROGRAM 3.0 0x00ac KEYCODE_GUIDE
0x0c 0x008e 媒体选择 视频电话 0x01a0 KEY_VIDEOPHONE
0x0c 0x008f 媒体选择 游戏 0x01a1 KEY_GAMES
0x0c 0x0090 媒体选择 消息 0x018c KEY_MEMO
0x0c 0x0091 媒体选择 CD 0x017f KEY_CD
0x0c 0x0092 媒体选择 VCR 0x017b KEY_VCR
0x0c 0x0093 媒体选择 调谐器 0x0182 KEY_TUNER
0x0c 0x0094 退出 0x00ae KEY_EXIT
0x0c 0x0095 帮助 0x008a KEY_HELP
0x0c 0x0096 媒体选择 磁带 0x0180 KEY_TAPE
0x0c 0x0097 媒体选择 有线电视 0x017a KEY_TV2
0x0c 0x0098 媒体选择 卫星 0x017d KEY_SAT
0x0c 0x0099 媒体选择 安全
0x0c 0x009a 媒体选择 主页 0x016e KEY_PVR 3.0 0x00ad KEYCODE_DVR
0x0c 0x0061 隐藏式字幕 0x0172 KEY_SUBTITLE 0x00af KEYCODE_CAPTIONS Added in aosp/1365552
0x0c 0x009c 频道增加 0x0192 KEY_CHANNELUP 3.0 0x00a6 KEYCODE_CHANNEL_UP
0x0c 0x009d 频道减少 0x0193 KEY_CHANNELDOWN 3.0 0x00a7 KEYCODE_CHANNEL_DOWN
0x0c 0x009e 媒体选择 SAP
0x0c 0x00a0 VCR Plus 0x017c KEY_VCR2
0x0c 0x00a1 一次
0x0c 0x00a2 每天
0x0c 0x00a3 每周
0x0c 0x00a4 每月
0x0c 0x00b0 播放 0x00cf KEY_PLAY 3.0 0x007e KEYCODE_MEDIA_PLAY
0x0c 0x00b1 暂停 0x0077 KEY_PAUSE 3.0 0x0079 KEYCODE_BREAK
0x0c 0x00b2 录制 0x00a7 KEY_RECORD 3.0 0x0082 KEYCODE_MEDIA_RECORD
0x0c 0x00b3 快进 0x00d0 KEY_FASTFORWARD 3.0 0x005a KEYCODE_MEDIA_FAST_FORWARD
0x0c 0x00b4 快退 0x00a8 KEY_REWIND 3.0 0x0059 KEYCODE_MEDIA_REWIND
0x0c 0x00b5 扫描下一曲目 0x00a3 KEY_NEXTSONG 3.0 0x0057 KEYCODE_MEDIA_NEXT
0x0c 0x00b6 扫描上一曲目 0x00a5 KEY_PREVIOUSSONG 3.0 0x0058 KEYCODE_MEDIA_PREVIOUS
0x0c 0x00b7 停止 0x00a6 KEY_STOPCD 3.0 0x0056 KEYCODE_MEDIA_STOP
0x0c 0x00b8 弹出 0x00a1 KEY_EJECTCD 3.0 0x0081 KEYCODE_MEDIA_EJECT
0x0c 0x00b9 随机播放
0x0c 0x00ba 选择光盘
0x0c 0x00bb 进入光盘
0x0c 0x00bc 重复 0x01b7 KEY_MEDIA_REPEAT
0x0c 0x00be 曲目正常
0x0c 0x00c0 帧前进
0x0c 0x00c1 帧后退
0x0c 0x00c2 标记
0x0c 0x00c3 清除标记
0x0c 0x00c4 从标记处重复
0x0c 0x00c5 返回标记
0x0c 0x00c6 向前搜索标记
0x0c 0x00c7 向后搜索标记
0x0c 0x00c8 计数器重置
0x0c 0x00c9 显示计数器
0x0c 0x00ca 跟踪增加
0x0c 0x00cb 跟踪减少
0x0c 0x00cc 停止/弹出
0x0c 0x00cd 播放/暂停 0x00a4 KEY_PLAYPAUSE 3.0 0x0055 KEYCODE_MEDIA_PLAY_PAUSE
0x0c 0x00ce 播放/跳过
0x0c 0x00e2 静音 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x0c 0x00e5 低音增强 0x00d1 KEY_BASSBOOST
0x0c 0x00e6 环绕模式
0x0c 0x00e7 响度
0x0c 0x00e8 MPX
0x0c 0x00e9 音量增加 0x0073 KEY_VOLUMEUP 1.6 0x0018 KEYCODE_VOLUME_UP
0x0c 0x00ea 音量减少 0x0072 KEY_VOLUMEDOWN 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x0c 0x0173 备用音频增加 0x00de KEYCODE_MEDIA_AUDIO_TRACK Added in aosp/1365554
0x0c 0x0181 AL 启动按钮配置工具
0x0c 0x0182 AL 可编程按钮配置 0x009c KEY_BOOKMARKS 3.0 0x00ae KEYCODE_BOOKMARK
0x0c 0x0183 AL 消费者控制配置 0x00ab KEY_CONFIG 4.0.3 0x00d1 KEYCODE_MUSIC
0x0c 0x0184 AL 文字处理器 0x01a5 KEY_WORDPROCESSOR
0x0c 0x0185 AL 文本编辑器 0x01a6 KEY_EDITOR
0x0c 0x0186 AL 电子表格 0x01a7 KEY_SPREADSHEET
0x0c 0x0187 AL 图形编辑器 0x01a8 KEY_GRAPHICSEDITOR
0x0c 0x0188 AL 演示文稿应用 0x01a9 KEY_PRESENTATION
0x0c 0x0189 AL 数据库应用 0x01aa KEY_DATABASE
0x0c 0x018a AL 电子邮件阅读器 0x009b KEY_MAIL 1.6 0x0041 KEYCODE_ENVELOPE
0x0c 0x018b AL 新闻阅读器 0x01ab KEY_NEWS
0x0c 0x018c AL 语音邮件 0x01ac KEY_VOICEMAIL
0x0c 0x018d AL 联系人/地址簿 0x01ad KEY_ADDRESSBOOK 4.0.3 0x00cf KEYCODE_CONTACTS
0x0c 0x018e AL 日历/日程 0x018d KEY_CALENDAR 4.0.3 0x00d0 KEYCODE_CALENDAR
0x0c 0x018f AL 任务/项目管理器
0x0c 0x0190 AL 日志/期刊/时间卡
0x0c 0x0191 AL 支票簿/财务 0x00db KEY_FINANCE
0x0c 0x0192 AL 计算器 0x008c KEY_CALC 4.0.3 0x00d2 KEYCODE_CALCULATOR
0x0c 0x0193 AL 音频/视频捕获/播放
0x0c 0x0194 AL 本地机器浏览器 0x0090 KEY_FILE
0x0c 0x0195 AL LAN/WAN 浏览器
0x0c 0x0196 AL 互联网浏览器 0x0096 KEY_WWW 1.6 0x0040 KEYCODE_EXPLORER
0x0c 0x0197 AL 远程网络/ISP 连接
0x0c 0x0198 AL 网络会议
0x0c 0x0199 AL 网络聊天 0x00d8 KEY_CHAT
0x0c 0x019a AL 电话/拨号器
0x0c 0x019b AL 登录
0x0c 0x019c AL 注销 0x01b1 KEY_LOGOFF
0x0c 0x019d AL 登录/注销
0x0c 0x019e AL 终端锁定/屏幕保护程序 0x0098 KEY_COFFEE 4.0 0x001a KEYCODE_POWER
0x0c 0x019f AL 控制面板
0x0c 0x01a0 AL 命令行处理器/运行
0x0c 0x01a1 AL 进程/任务管理器
0x0c 0x01a2 AL 选择任务/应用程序
0x0c 0x01a3 AL 下一个任务/应用程序
0x0c 0x01a4 AL 上一个任务/应用程序
0x0c 0x01a5 AL 抢占式停止任务/应用
0x0c 0x01a6 AL 集成帮助中心 0x008a KEY_HELP
0x0c 0x01a7 AL 文档 0x00eb KEY_DOCUMENTS
0x0c 0x01a8 AL 词库
0x0c 0x01a9 AL 字典
0x0c 0x01aa AL 桌面
0x0c 0x01ab AL 拼写检查 0x01b0 KEY_SPELLCHECK
0x0c 0x01ac AL 语法检查
0x0c 0x01ad AL 无线状态
0x0c 0x01ae AL 键盘布局
0x0c 0x01af AL 病毒防护
0x0c 0x01b0 AL 加密
0x0c 0x01b1 AL 屏幕保护程序
0x0c 0x01b2 AL 闹钟
0x0c 0x01b3 AL 时钟
0x0c 0x01b4 AL 文件浏览器
0x0c 0x01b5 AL 电源状态
0x0c 0x01b6 AL 图像浏览器 0x00e2 KEY_MEDIA 3.0 0x004f KEYCODE_HEADSETHOOK
0x0c 0x01b7 AL 音频浏览器 0x00d5 KEY_SOUND 4.0.3 0x00d1 KEYCODE_MUSIC
0x0c 0x01b8 AL 电影浏览器
0x0c 0x01b9 AL 数字版权管理器
0x0c 0x01ba AL 数字钱包
0x0c 0x01bc AL 即时通讯 0x01ae KEY_MESSENGER
0x0c 0x01bd AL OEM 功能/提示浏览器 0x0166 KEY_INFO
0x0c 0x01be AL OEM 帮助
0x0c 0x01bf AL 在线社区
0x0c 0x01c0 AL 娱乐内容浏览器
0x0c 0x01c1 AL 在线购物浏览器
0x0c 0x01c2 AL 智能卡信息/帮助
0x0c 0x01c3 AL 市场/金融浏览器
0x0c 0x01c4 AL 自定义公司新闻浏览器
0x0c 0x01c5 AL 在线活动浏览器
0x0c 0x01c6 AL 研究/搜索浏览器
0x0c 0x01c7 AL 音频播放器
0x0c 0x0201 AC 新建 0x00b5 KEY_NEW
0x0c 0x0202 AC 打开 0x0086 KEY_OPEN
0x0c 0x0203 AC 关闭 0x00ce KEY_CLOSE
0x0c 0x0204 AC 退出 0x00ae KEY_EXIT
0x0c 0x0205 AC 最大化
0x0c 0x0206 AC 最小化
0x0c 0x0207 AC 保存 0x00ea KEY_SAVE
0x0c 0x0208 AC 打印 0x00d2 KEY_PRINT
0x0c 0x0209 AC 属性 0x0082 KEY_PROPS
0x0c 0x021a AC 撤销 0x0083 KEY_UNDO
0x0c 0x021b AC 复制 0x0085 KEY_COPY
0x0c 0x021c AC 剪切 0x0089 KEY_CUT
0x0c 0x021d AC 粘贴 0x0087 KEY_PASTE
0x0c 0x021e AC 全选
0x0c 0x021f AC 查找 0x0088 KEY_FIND
0x0c 0x0220 AC 查找和替换
0x0c 0x0221 AC 搜索 0x00d9 KEY_SEARCH 1.6 0x0054 KEYCODE_SEARCH
0x0c 0x0222 AC 转到 0x0162 KEY_GOTO
0x0c 0x0223 AC 主页 0x00ac KEY_HOMEPAGE 3.0 0x0003 KEYCODE_HOME
0x0c 0x0224 AC 后退 0x009e KEY_BACK 1.6 0x0004 KEYCODE_BACK
0x0c 0x0225 AC 前进 0x009f KEY_FORWARD 3.0 0x007d KEYCODE_FORWARD
0x0c 0x0226 AC 停止 0x0080 KEY_STOP 3.0 0x0056 KEYCODE_MEDIA_STOP
0x0c 0x0227 AC 刷新 0x00ad KEY_REFRESH
0x0c 0x0228 AC 上一个链接
0x0c 0x0229 AC 下一个链接
0x0c 0x022a AC 书签 0x009c KEY_BOOKMARKS 3.0 0x00ae KEYCODE_BOOKMARK
0x0c 0x022b AC 历史记录
0x0c 0x022c AC 订阅
0x0c 0x022d AC 放大 0x01a2 KEY_ZOOMIN
0x0c 0x022e AC 缩小 0x01a3 KEY_ZOOMOUT
0x0c 0x022f AC 缩放 0x01a4 KEY_ZOOMRESET 2
0x0c 0x0230 AC 全屏视图
0x0c 0x0231 AC 正常视图
0x0c 0x0232 AC 视图切换
0x0c 0x0233 AC 向上滚动 0x00b1 KEY_SCROLLUP 3.0 0x005c KEYCODE_PAGE_UP
0x0c 0x0234 AC 向下滚动 0x00b2 KEY_SCROLLDOWN 3.0 0x005d KEYCODE_PAGE_DOWN
0x0c 0x0236 AC 向左平移
0x0c 0x0237 AC 向右平移
0x0c 0x0239 AC 新窗口
0x0c 0x023a AC 水平平铺
0x0c 0x023b AC 垂直平铺
0x0c 0x023c AC 格式
0x0c 0x023d AC 编辑
0x0c 0x023e AC 粗体
0x0c 0x023f AC 斜体
0x0c 0x0240 AC 下划线
0x0c 0x0241 AC 删除线
0x0c 0x0242 AC 下标
0x0c 0x0243 AC 上标
0x0c 0x0244 AC 全部大写
0x0c 0x0245 AC 旋转
0x0c 0x0246 AC 调整大小
0x0c 0x0247 AC 水平翻转
0x0c 0x0248 AC 垂直翻转
0x0c 0x0249 AC 水平镜像
0x0c 0x024a AC 垂直镜像
0x0c 0x024b AC 字体选择
0x0c 0x024c AC 字体颜色
0x0c 0x024d AC 字体大小
0x0c 0x024e AC 左对齐
0x0c 0x024f AC 水平居中
0x0c 0x0250 AC 右对齐
0x0c 0x0251 AC 水平两端对齐
0x0c 0x0252 AC 顶对齐
0x0c 0x0253 AC 垂直居中
0x0c 0x0254 AC 底对齐
0x0c 0x0255 AC 垂直两端对齐
0x0c 0x0256 AC 减少缩进
0x0c 0x0257 AC 增加缩进
0x0c 0x0258 AC 编号列表
0x0c 0x0259 AC 重新开始编号
0x0c 0x025a AC 项目符号列表
0x0c 0x025b AC 升级
0x0c 0x025c AC 降级
0x0c 0x025d AC 是
0x0c 0x025e AC 否
0x0c 0x025f AC 取消 0x00df KEY_CANCEL
0x0c 0x0260 AC 目录
0x0c 0x0261 AC 购买/结账
0x0c 0x0262 AC 添加到购物车
0x0c 0x0263 AC 展开
0x0c 0x0264 AC 全部展开
0x0c 0x0265 AC 折叠
0x0c 0x0266 AC 全部折叠
0x0c 0x0267 AC 打印预览
0x0c 0x0268 AC 选择性粘贴
0x0c 0x0269 AC 插入模式
0x0c 0x026a AC 删除
0x0c 0x026b AC 锁定
0x0c 0x026c AC 解锁
0x0c 0x026d AC 保护
0x0c 0x026e AC 取消保护
0x0c 0x026f AC 添加注释
0x0c 0x0270 AC 删除注释
0x0c 0x0271 AC 查看注释
0x0c 0x0272 AC 选择单词
0x0c 0x0273 AC 选择句子
0x0c 0x0274 AC 选择段落
0x0c 0x0275 AC 选择列
0x0c 0x0276 AC 选择行
0x0c 0x0277 AC 选择表格
0x0c 0x0278 AC 选择对象
0x0c 0x0279 AC 重做/重复 0x00b6 KEY_REDO
0x0c 0x027a AC 排序
0x0c 0x027b AC 升序排序
0x0c 0x027c AC 降序排序
0x0c 0x027d AC 筛选
0x0c 0x027e AC 设置时钟
0x0c 0x027f AC 查看时钟
0x0c 0x0280 AC 选择时区
0x0c 0x0281 AC 编辑时区
0x0c 0x0282 AC 设置闹钟
0x0c 0x0283 AC 清除闹钟
0x0c 0x0284 AC 稍后提醒闹钟
0x0c 0x0285 AC 重置闹钟
0x0c 0x0286 AC 同步
0x0c 0x0287 AC 发送/接收
0x0c 0x0288 AC 发送到
0x0c 0x0289 AC 回复 0x00e8 KEY_REPLY
0x0c 0x028a AC 全部回复
0x0c 0x028b AC 转发消息 0x00e9 KEY_FORWARDMAIL
0x0c 0x028c AC 发送 0x00e7 KEY_SEND
0x0c 0x028d AC 附加文件
0x0c 0x028e AC 上传
0x0c 0x028f AC 下载(目标另存为)
0x0c 0x0290 AC 设置边框
0x0c 0x0291 AC 插入行
0x0c 0x0292 AC 插入列
0x0c 0x0293 AC 插入文件
0x0c 0x0294 AC 插入图片
0x0c 0x0295 AC 插入对象
0x0c 0x0296 AC 插入符号
0x0c 0x0297 AC 保存并关闭
0x0c 0x0298 AC 重命名
0x0c 0x0299 AC 合并
0x0c 0x029a AC 拆分
0x0c 0x029b AC 水平分布
0x0c 0x029c AC 垂直分布

Additional non-HID mappings

These mappings describe functions that do not appear in HID but for which Linux key codes exist.

LKC Linux 键代码名称 版本 AKC Android 键代码名称 注释
0x01d0 KEY_FN 3.0 0x0077 KEYCODE_FUNCTION
0x01d1 KEY_FN_ESC 3.0 0x006f KEYCODE_ESCAPE 3
0x01d2 KEY_FN_F1 3.0 0x0083 KEYCODE_F1 3
0x01d3 KEY_FN_F2 3.0 0x0084 KEYCODE_F2 3
0x01d4 KEY_FN_F3 3.0 0x0085 KEYCODE_F3 3
0x01d5 KEY_FN_F4 3.0 0x0086 KEYCODE_F4 3
0x01d6 KEY_FN_F5 3.0 0x0087 KEYCODE_F5 3
0x01d7 KEY_FN_F6 3.0 0x0088 KEYCODE_F6 3
0x01d8 KEY_FN_F7 3.0 0x0089 KEYCODE_F7 3
0x01d9 KEY_FN_F8 3.0 0x008a KEYCODE_F8 3
0x01da KEY_FN_F9 3.0 0x008b KEYCODE_F9 3
0x01db KEY_FN_F10 3.0 0x008c KEYCODE_F10 3
0x01dc KEY_FN_F11 3.0 0x008d KEYCODE_F11 3
0x01dd KEY_FN_F12 3.0 0x008e KEYCODE_F12 3
0x01de KEY_FN_1 3.0 0x0008 KEYCODE_1 3
0x01df KEY_FN_2 3.0 0x0009 KEYCODE_2 3
0x01e0 KEY_FN_D 3.0 0x0020 KEYCODE_D 3
0x01e1 KEY_FN_E 3.0 0x0021 KEYCODE_E 3
0x01e2 KEY_FN_F 3.0 0x0022 KEYCODE_F 3
0x01e3 KEY_FN_S 3.0 0x002f KEYCODE_S 3
0x01e4 KEY_FN_B 3.0 0x001e KEYCODE_B 3

Legacy unsupported keys

These mappings appeared in previous versions of Android but were inconsistent with HID or used non-standard Linux key codes. They are no longer supported.

LKC Linux 键代码名称 版本 AKC Android 键代码名称 注释
0x00db KEY_EMAIL 1.6 0x004d KEYCODE_AT 4
"" "" 4.0 4
0x00e3 KEY_STAR 1.6 0x0011 KEYCODE_STAR 4
"" "" 4.0 4
0x00e4 KEY_SHARP 1.6 0x0012 KEYCODE_POUND 4
"" "" 4.0 4
0x00e5 KEY_SOFT1 1.6 0x0052 KEYCODE_MENU 4
"" "" 4.0 4
0x00e6 KEY_SOFT2 1.6 0x0002 KEYCODE_SOFT_RIGHT 4
"" "" 4.0 4
0x00e7 KEY_SEND 1.6 0x0005 KEYCODE_CALL 4
"" "" 4.0 4
0x00e8 KEY_CENTER 1.6 0x0017 KEYCODE_DPAD_CENTER 4
"" "" 4.0 4
0x00e9 KEY_HEADSETHOOK 1.6 0x004f KEYCODE_HEADSETHOOK 4
"" "" 4.0 4
0x00ea KEY_0_5 1.6 4
0x00eb KEY_2_5 1.6 4

注释

  1. The Android key code associated with common alphanumeric and symbolic keys may vary based on the keyboard layout and language. For historical reasons, the physical scan codes and HID usages associated with keys on a keyboard are often defined positionally even though the labels printed on those keys may vary from one language to another.

    On a US English (QWERTY) keyboard, the top-left alphabetic key is labeled Q. On a French (AZERTY) keyboard, the key in the same position is labeled A. Despite the label, on both keyboards the top-left alphabetic key is referred to using the HID usage 0x07 0x0014 which is mapped to the Linux key code KEY_Q.

    When Android is configured with a US English keyboard layout, then the Linux key code KEY_Q will be mapped to the Android key code KEYCODE_Q and will produce the characters 'Q' and 'q'. However, when Android is configured with a French keyboard layout, then the Linux key code KEY_Q will be mapped to the Android key code KEYCODE_A and will produce the characters 'A' and 'a'.

    The Android key code typically reflects the language-specific interpretation of the key, so a different Android key code may be used for different languages.

  2. 0x0c 0x022f AC Zoom is defined in the HID as a linear control but the kernel maps it as a key, which is probably incorrect.

  3. The Linux function keys KEY_FN_* are mapped to simpler key codes but are dispatched with the META_FUNCTION meta state bit set to true.

  4. Prior to Android Ice Cream Sandwich 4.0, the default key layout contained mappings for some extra key codes that were not defined in the mainline Linux kernel headers. These mappings have since been removed because these previously undefined key codes have since been assigned different meanings in more recent versions of the Linux kernel.

Sources

  1. USB HID Usage Tables v1.12
  2. Linux 2.6.39 kernel: include/linux/input.h, drivers/hid/hid-input.c
  3. Android ICS: qwerty.kl, Generic.kl, KeyEvent.java