Android 支持各种键盘设备,包括特殊功能小键盘(音量和电源控制),紧凑型嵌入式 QWERTY 键盘和全能型 PC 式外接键盘。
本文档仅介绍物理键盘。有关软键盘(输入法编辑器)的信息,请参阅 Android SDK。
键盘分类
只要满足以下任一条件,输入设备即可归类为键盘:
输入设备报告存在任何用于键盘的 Linux 按键代码(包括 0 到 0xff 或 KEY_OK 到 KEY_MAX)。
输入设备报告存在任何用于操纵杆和游戏手柄的 Linux 按键代码(包括 BTN_0 到 BTN_9、BTN_TRIGGER 到 BTN_DEAD 或 BTN_A 到 BTN_THUMBR)。
操纵杆目前被归类为键盘,这是因为 EV_KEY 事件报告操纵杆和游戏手柄按钮的方式与报告键盘按键的方式相同,因此操纵杆和游戏手柄也利用按键映射文件来进行配置。
一旦输入设备被归类为键盘,系统就会为此键盘加载输入设备配置文件和键盘布局。
接下来系统会尝试确定此设备的其他特性。
如果输入设备存在任何被映射到 KEYCODE_Q 的按键,那么系统就会认为该设备具有字母键盘(而不是数字键盘)。字母键盘功能在资源 Configuration 对象中会被报告为 KEYBOARD_QWERTY。
如果输入设备存在任何被映射到 KEYCODE_DPAD_UP、KEYCODE_DPAD_DOWN、KEYCODE_DPAD_LEFT、KEYCODE_DPAD_RIGHT 和 KEYCODE_DPAD_CENTER(必须全部存在)的按键,那么系统就会认为该设备具有方向键盘。方向键盘功能在资源 Configuration 对象中会被报告为 NAVIGATION_DPAD。
如果输入设备存在任何被映射到 KEYCODE_BUTTON_A 的按键或其他与游戏手柄相关的按键,那么系统就会认为该设备具有游戏手柄。
键盘驱动程序要求
键盘驱动程序只能为其实际支持的按键注册按键代码。注册过多的按键代码可能会扰乱设备分类算法,或导致系统无法正确地检测到设备的受支持键盘功能。
键盘驱动程序应使用 EV_KEY 来报告按键操作;使用值 0 表示释放按键,使用值 1 来表示按下按键,使用值 2 或更大的值表示自动重复按键操作。
Android 执行自己的键盘重复操作。在驱动程序中应停用自动重复功能。
当按下按键时,键盘驱动程序可能会通过发送带 MSC_SCANCODE 的 EV_MSC 或通过一个值(用于指示用途或扫描代码),选择性地指示 HID 用途或低级扫描代码。Android 目前尚未使用此信息。
在将 EV_LED 写入设备时,键盘驱动程序应支持设置 LED 状态。hid-input 驱动程序会自动处理这项事务。在这一写入期间,Android 会使用 LED_CAPSLOCK、LED_SCROLLLOCK 和 LED_NUMLOCK。只有当键盘实际上配有关联的指示灯时,系统才需要支持这些 LED 指示灯。
应确保嵌入式键盘的键盘驱动程序(例如,使用 GPIO 矩阵)在设备即将进入休眠状态时,为尚处于按下状态的任何按键发送值为 0 的 EV_KEY 事件。否则按键可能会被卡住,并一直自动重复按键操作。
键盘操作
下文简要汇总了 Android 设备上的键盘操作。
EventHub 从 evdev 驱动程序中读取原始事件,并使用键盘的按键布局映射将 Linux 按键代码(有时也称扫描代码)映射到 Android 按键代码中。
InputReader 将消费原始事件,并更新元键状态。例如,如果您按下或释放左 Shift 键,该读取器就会相应地设置或重置 META_SHIFT_LEFT_ON 和 META_SHIFT_ON 位。
InputReader 会向 InputDispatcher 发送按键事件的相关通知。
InputDispatcher 通过调用 WindowManagerPolicy.interceptKeyBeforeQueueing 询问 WindowManagerPolicy 如何处理按键事件。该方法(负责在按下某些按键时唤醒设备)属于关键路径的一部分。实际上,EventHub 会在此关键路径上一直持有唤醒锁,从而确保它运行至结束。
如果目前正在使用 InputFilter,那么 InputDispatcher 将给予它机会消费或转换按键。InputFilter 可用于实现低级别的全系统可访问性政策。
InputDispatcher 可将按键排入队列,以便在分配线程上对其进行处理。
当 InputDispatcher 将按键移出队列时,它会通过调用 WindowManagerPolicy.interceptKeyBeforeDispatching 使 WindowManagerPolicy 再次有机会拦截按键事件。此方法可用于处理系统快捷方式和其他功能。
随后,InputDispatcher 会识别按键事件目标(获得焦点的窗口),并等待按键事件目标就绪。接下来,InputDispatcher 会将按键事件发送到应用。
在应用内,按键事件会沿着视图层次结构向下传送到获得焦点的视图,以进行 IME 按键预分配。
如果按键事件未在 IME 按键预分配阶段进行处理,而某个 IME 正在使用中,那么按键事件会被发送到 IME。
如果 IME 未消费按键事件,那么按键事件会沿着视图层次结构向下传送到获得焦点的视图,从而进行标准按键分配。
应用反过来向 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。
内置键盘会一律获分配值为 0 的设备 ID。其他非内置的键盘则会获分配一个唯一非零设备 ID。
对内置键盘采用值为 0 的 ID 有助于保持与 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
键盘返回 (Enter) 键
0x001c
KEY_ENTER
1.6
0x0042
KEYCODE_ENTER
1
0x07 0x0029
键盘 Esc 键
0x0001
KEY_ESC
3.0
0x006f
KEYCODE_ESCAPE
""
""
""
""
2.3
0x0004
KEYCODE_BACK
0x07 0x002a
键盘删除 (Backspace) 键
0x000e
KEY_BACKSPACE
1.6
0x0043
KEYCODE_DEL
0x07 0x002b
键盘 Tab 键
0x000f
KEY_TAB
1.6
0x003d
KEYCODE_TAB
0x07 0x002c
键盘空格键
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
键盘非美式 # 和 ~ 键
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
键盘向右箭头键
0x006a
KEY_RIGHT
1.6
0x0016
KEYCODE_DPAD_RIGHT
0x07 0x0050
键盘向左箭头键
0x0069
KEY_LEFT
1.6
0x0015
KEYCODE_DPAD_LEFT
0x07 0x0051
键盘向下箭头键
0x006c
KEY_DOWN
1.6
0x0014
KEYCODE_DPAD_DOWN
0x07 0x0052
键盘向上箭头键
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 和向下键
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 和向左键
0x004b
KEY_KP4
3.0
0x0094
KEYCODE_NUMPAD_4
0x07 0x005d
小键盘 5 键
0x004c
KEY_KP5
3.0
0x0095
KEYCODE_NUMPAD_5
0x07 0x005e
小键盘 6 和向右键
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 和向上箭头键
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
小键盘 . 键(删除键)
0x0053
KEY_KPDOT
3.0
0x009e
KEYCODE_NUMPAD_DOT
0x07 0x0064
键盘 Non-US \ 和 | 键
0x0056
KEY_102ND
4.0
0x0049
KEYCODE_BACKSLASH
1
0x07 0x0065
键盘应用键
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
键盘帮助
0x008a
KEY_HELP
0x07 0x0076
键盘菜单键
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
键盘音量调高键
0x0073
KEY_VOLUMEUP
1.6
0x0018
KEYCODE_VOLUME_UP
0x07 0x0081
键盘音量调低键
0x0072
KEY_VOLUMEDOWN
1.6
0x0019
KEYCODE_VOLUME_DOWN
0x07 0x0082
键盘锁定 Caps Lock 键
0x07 0x0083
键盘锁定 Num Lock 键
0x07 0x0084
键盘锁定 Scroll Lock 键
0x07 0x0085
小键盘逗号键
0x0079
KEY_KPCOMMA
3.0
0x009f
KEYCODE_NUMPAD_COMMA
0x07 0x0086
小键盘等号键
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
小键盘空格键
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
小键盘二进制数
0x07 0x00db
小键盘八进制数
0x07 0x00dc
小键盘十进制数
0x07 0x00dd
小键盘十六进制数
0x07 0x00e0
键盘左 Ctrl 键
0x001d
KEY_LEFTCTRL
3.0
0x0071
KEYCODE_CTRL_LEFT
0x07 0x00e1
键盘左 Shift 键
0x002a
KEY_LEFTSHIFT
1.6
0x003b
KEYCODE_SHIFT_LEFT
0x07 0x00e2
键盘左 Alt 键
0x0038
KEY_LEFTALT
1.6
0x0039
KEYCODE_ALT_LEFT
0x07 0x00e3
键盘左 GUI 键
0x007d
KEY_LEFTMETA
3.0
0x0075
KEYCODE_META_LEFT
0x07 0x00e4
键盘右 Ctrl 键
0x0061
KEY_RIGHTCTRL
3.0
0x0072
KEYCODE_CTRL_RIGHT
0x07 0x00e5
键盘右 Shift 键
0x0036
KEY_RIGHTSHIFT
1.6
0x003c
KEYCODE_SHIFT_RIGHT
0x07 0x00e6
键盘右 Alt 键
0x0064
KEY_RIGHTALT
1.6
0x003a
KEYCODE_ALT_RIGHT
0x07 0x00e7
键盘右 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
系统显示切换 Int/Ext
0x01 0x00b6
系统显示交换 Prim./Sec.
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
在 aosp/1365553 中添加
0x0c 0x0069
红色菜单按钮
0x18e
KEY_RED
0x00b7
KEYCODE_PROG_RED
在 aosp/1388616 中添加
0x0c 0x006a
绿色菜单按钮
0x18f
KEY_GREEN
0x00b8
KEYCODE_PROG_GREEN
在 aosp/1388616 中添加
0x0c 0x006b
蓝色菜单按钮
0x191
KEY_BLUE
0x00ba
KEYCODE_PROG_BLUE
在 aosp/1388616 中添加
0x0c 0x006c
黄色菜单按钮
0x190
KEY_YELLOW
0x00b9
KEYCODE_PROG_YELLOW
在 aosp/1388616 中添加
0x0c 0x0081
指派选择
0x0c 0x0082
模式步骤
0x0c 0x0083
撤回上一个
0x0195
KEY_LAST
0xe5
KEYCODE_LAST_CHANNEL
在 aosp/1365551 中添加
0x0c 0x0084
输入频道
0x0c 0x0085
订购影片
0x0c 0x0088
媒体选择计算机
0x0178
KEY_PC
0x0c 0x0089
媒体选择电视机
0x0179
KEY_TV
3.0
0x00aa
KEYCODE_TV
0x0c 0x008a
媒体选择 WWW
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
在 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 +
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
在 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 A/V 捕捉/播放
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 SmartCard 信息/帮助
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 垂直分布
其他非 HID 映射
下列映射描述了未出现在 HID 中但存在 Linux 按键代码的函数。
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
不受支持的旧版按键
以下这些映射出现在以往的 Android 版本中,但与 HID 不一致或采用了非标准 Linux 按键代码。这些映射已不再受支持。
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
备注
与常用字母数字和符号按键相关联的 Android 按键代码可能因键盘布局和语言而异。由于历史原因,与键盘上的按键相关联的物理扫描代码和 HID 用途通常是根据位置进行定义的,即使不同语言的键盘按键上所打印的标签可能存在差异。
在美式英语 (QWERTY) 键盘上,左上角的字母按键会标记为 Q,而在法式 (AZERTY) 键盘上,位于相同位置的按键则会标记为 A。尽管标签不同,但位于两个键盘左上角的字母按键均表示使用 HID 用途 0x07 0x0014(已映射到 Linux 按键代码 KEY_Q)。
当 Android 配置的是美式英语键盘布局时,Linux 按键代码 KEY_Q 就会被映射到 Android 按键代码 KEYCODE_Q,并将产生字符“Q”和“q”。然而,当 Android 配置的是法式键盘布局时,Linux 按键代码 KEY_Q 就会被映射到 Android 按键代码 KEYCODE_A,并将产生字符“A”和“a”。
Android 按键代码通常反映按键特定于语言的解释,因此不同的 Android 按键代码可能会用于不同的语言。
0x0c 0x022f AC Zoom 在 HID 中定义为线性控件,但内核会将其映射为按键(这很可能是错误的)。
Linux 功能键 KEY_FN_* 可被映射到更简单的按键代码,但也会被分配已设置为 true 的 META_FUNCTION 元状态位。
在 Android Ice Cream Sandwich 4.0 之前,默认的键盘布局包含一些未在主线 Linux 内核头文件中定义的其他按键代码的映射。这些映射此后已被移除,因为这些以前未定义的按键代码在较新版本的 Linux 内核中已被赋予了不同的含义。
来源
USB HID 用途表 v1.12
Linux 2.6.39 内核:include/linux/input.h、drivers/hid/hid-input.c
Android ICS:qwerty.kl、Generic.kl、KeyEvent.java