【转】Android-Input 键盘设备

https://source.android.com/devices/input/keyboard-devices

键盘设备

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

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

键盘分类

只要满足以下条件之一,输入设备即可归类为键盘:

  • 输入设备报告存在任何用于键盘的 Linux 按键代码(包括 0 到 0xff 或 KEY_OK 到 KEY_MAX)。

  • 输入设备报告存在任何用于操纵杆和游戏手柄的 Linux 按键代码(包括 BTN_0 到 BTN_9BTN_TRIGGER 到 BTN_DEAD,或 BTN_A 到 BTN_THUMBR)。

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

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

接下来系统会尝试确定此设备的其他特性。

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

  • 如果输入设备存在任何被映射到 KEYCODE_DPAD_UPKEYCODE_DPAD_DOWNKEYCODE_DPAD_LEFTKEYCODE_DPAD_RIGHT 和 KEYCODE_DPAD_CENTER(必须全部存在)的按键,则系统将认为此设备具有方向键盘。 方向键盘功能在资源 Configuration 对象中会被报告为 NAVIGATION_DPAD

  • 如果输入设备存在任何被映射到 KEYCODE_BUTTON_A 的按键或其他与游戏手柄相关的按键,则系统将认为此设备具有游戏手柄。

键盘驱动程序要求

  1. 键盘驱动程序只能为其实际支持的按键注册按键代码。注册过多的按键代码可能会扰乱设备分类算法,或导致系统无法正确地检测到设备的受支持键盘功能。

  2. 键盘驱动程序应使用 EV_KEY 来报告按键操作;使用值 0 表示释放按键,使用值 1 来表示按下按键,使用值 2 或更大的值表示自动重复按键操作。

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

  4. 当按下按键时,键盘驱动程序可能会通过发送带 MSC_SCANCODE 的 EV_MSC 或通过 valud(用于指示用途或扫描代码),选择性地指示 HID 用途或低级扫描代码。Android 目前尚未使用此信息。

  5. 在将 EV_LED 写入设备时,键盘驱动程序应支持设置 LED 状态。hid-input 驱动程序会自动处理这项事务。在这一写入期间,Android 会使用 LED_CAPSLOCKLED_SCROLLLOCK 和 LED_NUMLOCK。只有当键盘实际上配有相关的指示灯时,系统才需要支持这些 LED 指示灯。

  6. 应确保嵌入式键盘的键盘驱动程序(例如,使用 GPIO 矩阵)在设备即将进入休眠状态时,为尚处于按下状态的任何按键发送值为 0 的 EV_KEY 事件。否则按键可能会被卡住,并一直自动重复按键操作。

键盘操作

下文简要汇总了 Android 设备上的键盘操作。

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

  2. InputReader 将消费原始事件,并更新 Meta 键状态。例如,如果您按下或释放左 Shift 键,则读取器会相应地设置或重置 META_SHIFT_LEFT_ON 和 META_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. 在应用内,按键事件会将视图层次传送到焦点视图,以进行 IME 按键预分配。

  10. 如果按键事件未在 IME 按键预分配阶段进行处理,而某个 IME 正在使用中,那么按键事件会被发送到 IME。

  11. 如果按键事件未被 IME 消费,则按键事件会将视图层次传送到焦点视图,从而进行标准按键分配。

  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

内置键盘会一律获分配值为 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 用途名称LKCLinux 按键代码名称版本AKCAndroid 按键代码名称备注
0x07 0x0001键盘错误,防冲突功能      
0x07 0x0002键盘 POST 失败      
0x07 0x0003键盘错误未定义      
0x07 0x0004键盘 a 和 A 键0x001eKEY_A1.60x001dKEYCODE_A1
0x07 0x0005键盘 b 和 B 键0x0030KEY_B1.60x001eKEYCODE_B1
0x07 0x0006键盘 c 和 C 键0x002eKEY_C1.60x001fKEYCODE_C1
0x07 0x0007键盘 d 和 D 键0x0020KEY_D1.60x0020KEYCODE_D1
0x07 0x0008键盘 e 和 E 键0x0012KEY_E1.60x0021KEYCODE_E1
0x07 0x0009键盘 f 和 F 键0x0021KEY_F1.60x0022KEYCODE_F1
0x07 0x000a键盘 g 和 G 键0x0022KEY_G1.60x0023KEYCODE_G1
0x07 0x000b键盘 h 和 H 键0x0023KEY_H1.60x0024KEYCODE_H1
0x07 0x000c键盘 i 和 I 键0x0017KEY_I1.60x0025KEYCODE_I1
0x07 0x000d键盘 j 和 J 键0x0024KEY_J1.60x0026KEYCODE_J1
0x07 0x000e键盘 k 和 K 键0x0025KEY_K1.60x0027KEYCODE_K1
0x07 0x000f键盘 l 和 L 键0x0026KEY_L1.60x0028KEYCODE_L1
0x07 0x0010键盘 m 和 M 键0x0032KEY_M1.60x0029KEYCODE_M1
0x07 0x0011键盘 n 和 N 键0x0031KEY_N1.60x002aKEYCODE_N1
0x07 0x0012键盘 o 和 O 键0x0018KEY_O1.60x002bKEYCODE_O1
0x07 0x0013键盘 p 和 P 键0x0019KEY_P1.60x002cKEYCODE_P1
0x07 0x0014键盘 q 和 Q 键0x0010KEY_Q1.60x002dKEYCODE_Q1
0x07 0x0015键盘 r 和 R 键0x0013KEY_R1.60x002eKEYCODE_R1
0x07 0x0016键盘 s 和 S 键0x001fKEY_S1.60x002fKEYCODE_S1
0x07 0x0017键盘 t 和 T 键0x0014KEY_T1.60x0030KEYCODE_T1
0x07 0x0018键盘 u 和 U 键0x0016KEY_U1.60x0031KEYCODE_U1
0x07 0x0019键盘 v 和 V 键0x002fKEY_V1.60x0032KEYCODE_V1
0x07 0x001a键盘 w 和 W 键0x0011KEY_W1.60x0033KEYCODE_W1
0x07 0x001b键盘 x 和 X 键0x002dKEY_X1.60x0034KEYCODE_X1
0x07 0x001c键盘 y 和 Y 键0x0015KEY_Y1.60x0035KEYCODE_Y1
0x07 0x001d键盘 z 和 Z 键0x002cKEY_Z1.60x0036KEYCODE_Z1
0x07 0x001e键盘 1 和 ! 键0x0002KEY_11.60x0008KEYCODE_11
0x07 0x001f键盘 2 和 @ 键0x0003KEY_21.60x0009KEYCODE_21
0x07 0x0020键盘 3 和 # 键0x0004KEY_31.60x000aKEYCODE_31
0x07 0x0021键盘 4 和 $ 键0×0005KEY_41.60x000bKEYCODE_41
0x07 0x0022键盘 5 和 % 键0x0006KEY_51.60x000cKEYCODE_51
0x07 0x0023键盘 6 和 ^ 键0x0007KEY_61.60x000dKEYCODE_61
0x07 0x0024键盘 7 和 & 键0x0008KEY_71.60x000eKEYCODE_71
0x07 0x0025键盘 8 和 * 键0x0009KEY_81.60x000fKEYCODE_81
0x07 0x0026键盘 9 和 ( 键0x000aKEY_91.60x0010KEYCODE_91
0x07 0x0027键盘 0 和 ) 键0x000bKEY_01.60x0007KEYCODE_01
0x07 0x0028键盘返回 (Enter) 键0x001cKEY_ENTER1.60x0042KEYCODE_ENTER1
0x07 0x0029键盘 Esc 键0x0001KEY_ESC3.00x006fKEYCODE_ESCAPE 
""""""""2.30x0004KEYCODE_BACK 
0x07 0x002a键盘删除 (Backspace) 键0x000eKEY_BACKSPACE1.60x0043KEYCODE_DEL 
0x07 0x002b键盘 Tab 键0x000fKEY_TAB1.60x003dKEYCODE_TAB 
0x07 0x002c键盘空格键0x0039KEY_SPACE1.60x003eKEYCODE_SPACE 
0x07 0x002d键盘 - 和 _ 键0x000cKEY_MINUS1.60x0045KEYCODE_MINUS1
0x07 0x002e键盘 = 和 + 键0x000dKEY_EQUAL1.60x0046KEYCODE_EQUALS1
0x07 0x002f键盘 [ 和 { 键0x001aKEY_LEFTBRACE1.60x0047KEYCODE_LEFT_BRACKET1
0x07 0x0030键盘 ] 和 } 键0x001bKEY_RIGHTBRACE1.60x0048KEYCODE_RIGHT_BRACKET1
0x07 0x0031键盘 \ 和 | 键0x002bKEY_BACKSLASH1.60x0049KEYCODE_BACKSLASH1
0x07 0x0032键盘非美式 # 和 ~ 键0x002bKEY_BACKSLASH1.60x0049KEYCODE_BACKSLASH1
0x07 0x0033键盘 ; 和 : 键0x0027KEY_SEMICOLON1.60x004aKEYCODE_SEMICOLON1
0x07 0x0034键盘 ' 和 " 键0x0028KEY_APOSTROPHE1.60x004bKEYCODE_APOSTROPHE1
0x07 0x0035键盘 ` 和 ~ 键0x0029KEY_GRAVE3.00x0044KEYCODE_GRAVE1
0x07 0x0036键盘 , 和 < 键0x0033KEY_COMMA1.60x0037KEYCODE_COMMA1
0x07 0x0037键盘 . 和 > 键0x0034KEY_DOT1.60x0038KEYCODE_PERIOD1
0x07 0x0038键盘 / 和 ? 键0x0035KEY_SLASH1.60x004cKEYCODE_SLASH1
0x07 0x0039键盘 Caps Lock 键0x003aKEY_CAPSLOCK3.00x0073KEYCODE_CAPS_LOCK 
0x07 0x003a键盘 F1 键0x003bKEY_F13.00x0083KEYCODE_F1 
""""""""1.60x0052KEYCODE_MENU 
0x07 0x003b键盘 F2 键0x003cKEY_F23.00x0084KEYCODE_F2 
""""""""1.60x0002KEYCODE_SOFT_RIGHT 
0x07 0x003c键盘 F3 键0x003dKEY_F33.00x0085KEYCODE_F3 
""""""""1.60×0005KEYCODE_CALL 
0x07 0x003d键盘 F4 键0x003eKEY_F43.00x0086KEYCODE_F4 
""""""""1.60x0006KEYCODE_ENDCALL 
0x07 0x003e键盘 F5 键0x003fKEY_F53.00x0087KEYCODE_F5 
0x07 0x003f键盘 F6 键0x0040KEY_F63.00x0088KEYCODE_F6 
0x07 0x0040键盘 F7 键0x0041KEY_F73.00x0089KEYCODE_F7 
0x07 0x0041键盘 F8 键0x0042KEY_F83.00x008aKEYCODE_F8 
0x07 0x0042键盘 F9 键0x0043KEY_F93.00x008bKEYCODE_F9 
0x07 0x0043键盘 F10 键0x0044KEY_F103.00x008cKEYCODE_F10 
""""""""2.30x0052KEYCODE_MENU 
0x07 0x0044键盘 F11 键0x0057KEY_F113.00x008dKEYCODE_F11 
0x07 0x0045键盘 F12 键0x0058KEY_F123.00x008eKEYCODE_F12 
0x07 0x0046键盘 Print Screen 键0x0063KEY_SYSRQ3.00x0078KEYCODE_SYSRQ 
0x07 0x0047键盘 Scroll Lock 键0x0046KEY_SCROLLLOCK3.00x0074KEYCODE_SCROLL_LOCK 
0x07 0x0048键盘 Pause 键0x0077KEY_PAUSE3.00x0079KEYCODE_BREAK 
0x07 0x0049键盘 Insert 键0x006eKEY_INSERT3.00x007cKEYCODE_INSERT 
0x07 0x004a键盘 Home 键0x0066KEY_HOME3.00x007aKEYCODE_MOVE_HOME 
""""""""1.60x0003KEYCODE_HOME 
0x07 0x004b键盘 Page Up 键0x0068KEY_PAGEUP3.00x005cKEYCODE_PAGE_UP 
0x07 0x004c键盘 Delete Forward 键0x006fKEY_DELETE3.00x0070KEYCODE_FORWARD_DEL 
0x07 0x004d键盘 End 键0x006bKEY_END3.00x007bKEYCODE_MOVE_END 
""""""""1.60x0006KEYCODE_ENDCALL 
0x07 0x004e键盘 Page Down 键0x006dKEY_PAGEDOWN3.00x005dKEYCODE_PAGE_DOWN 
0x07 0x004f键盘向右箭头键0x006aKEY_RIGHT1.60x0016KEYCODE_DPAD_RIGHT 
0x07 0x0050键盘向左箭头键0x0069KEY_LEFT1.60x0015KEYCODE_DPAD_LEFT 
0x07 0x0051键盘向下箭头键0x006cKEY_DOWN1.60x0014KEYCODE_DPAD_DOWN 
0x07 0x0052键盘向上箭头键0x0067KEY_UP1.60x0013KEYCODE_DPAD_UP 
0x07 0x0053键盘 Num Lock 和 Clear 键0x0045KEY_NUMLOCK3.00x008fKEYCODE_NUM_LOCK 
0x07 0x0054小键盘 / 键0x0062KEY_KPSLASH3.00x009aKEYCODE_NUMPAD_DIVIDE 
0x07 0x0055小键盘 * 键0x0037KEY_KPASTERISK3.00x009bKEYCODE_NUMPAD_MULTIPLY 
0x07 0x0056小键盘 - 键0x004aKEY_KPMINUS3.00x009cKEYCODE_NUMPAD_SUBTRACT 
0x07 0x0057小键盘 + 键0x004eKEY_KPPLUS3.00x009dKEYCODE_NUMPAD_ADD 
0x07 0x0058小键盘 Enter 键0x0060KEY_KPENTER3.00x00a0KEYCODE_NUMPAD_ENTER 
0x07 0x0059小键盘 1 和 End 键0x004fKEY_KP13.00x0091KEYCODE_NUMPAD_1 
0x07 0x005a小键盘 2 和向下箭头键0x0050KEY_KP23.00x0092KEYCODE_NUMPAD_2 
0x07 0x005b小键盘 3 和 PageDn 键0x0051KEY_KP33.00x0093KEYCODE_NUMPAD_3 
0x07 0x005c小键盘 4 和向左箭头键0x004bKEY_KP43.00x0094KEYCODE_NUMPAD_4 
0x07 0x005d小键盘 5 键0x004cKEY_KP53.00x0095KEYCODE_NUMPAD_5 
0x07 0x005e小键盘 6 和向右箭头键0x004dKEY_KP63.00x0096KEYCODE_NUMPAD_6 
0x07 0x005f小键盘 7 和 Home 键0x0047KEY_KP73.00x0097KEYCODE_NUMPAD_7 
0x07 0x0060小键盘 8 和向上箭头键0x0048KEY_KP83.00x0098KEYCODE_NUMPAD_8 
0x07 0x0061小键盘 9 和 Page Up 键0x0049KEY_KP93.00x0099KEYCODE_NUMPAD_9 
0x07 0x0062小键盘 0 和 Insert 键0x0052KEY_KP03.00x0090KEYCODE_NUMPAD_0 
0x07 0x0063小键盘 . 和删除键0x0053KEY_KPDOT3.00x009eKEYCODE_NUMPAD_DOT 
0x07 0x0064键盘 Non-US \ 和 | 键0x0056KEY_102ND4.00x0049KEYCODE_BACKSLASH1
0x07 0x0065键盘应用键0x007fKEY_COMPOSE3.00x0052KEYCODE_MENU 
""""""""1.60x0054KEYCODE_SEARCH 
0x07 0x0066键盘 Power 键0x0074KEY_POWER1.60x001aKEYCODE_POWER 
0x07 0x0067小键盘 = 键0x0075KEY_KPEQUAL3.00x00a1KEYCODE_NUMPAD_EQUALS 
0x07 0x0068键盘 F13 键0x00b7KEY_F13    
0x07 0x0069键盘 F14 键0x00b8KEY_F14    
0x07 0x006a键盘 F15 键0x00b9KEY_F15    
0x07 0x006b键盘 F16 键0x00baKEY_F16    
0x07 0x006c键盘 F17 键0x00bbKEY_F17    
0x07 0x006d键盘 F18 键0x00bcKEY_F18    
0x07 0x006e键盘 F19 键0x00bdKEY_F19    
0x07 0x006f键盘 F20 键0x00beKEY_F20    
0x07 0x0070键盘 F21 键0x00bfKEY_F21    
0x07 0x0071键盘 F22 键0x00c0KEY_F22    
0x07 0x0072键盘 F23 键0x00c1KEY_F23    
0x07 0x0073键盘 F24 键0x00c2KEY_F24    
0x07 0x0074键盘 Execute 键0x0086KEY_OPEN    
0x07 0x0075键盘帮助键0x008aKEY_HELP    
0x07 0x0076键盘菜单键0x0082KEY_PROPS    
0x07 0x0077键盘 Select 键0x0084KEY_FRONT    
0x07 0x0078键盘 Stop 键0x0080KEY_STOP3.00x0056KEYCODE_MEDIA_STOP 
0x07 0x0079键盘 Again 键0x0081KEY_AGAIN    
0x07 0x007a键盘 Undo 键0x0083KEY_UNDO    
0x07 0x007b键盘 Cut 键0x0089KEY_CUT    
0x07 0x007c键盘 Copy 键0x0085KEY_COPY    
0x07 0x007d键盘 Paste 键0x0087KEY_PASTE    
0x07 0x007e键盘 Find 键0x0088KEY_FIND    
0x07 0x007f键盘 Mute 键0x0071KEY_MUTE3.00x00a4KEYCODE_VOLUME_MUTE 
0x07 0x0080键盘音量调高键0x0073KEY_VOLUMEUP1.60x0018KEYCODE_VOLUME_UP 
0x07 0x0081键盘音量调低键0x0072KEY_VOLUMEDOWN1.60x0019KEYCODE_VOLUME_DOWN 
0x07 0x0082键盘锁定 Caps Lock 键      
0x07 0x0083键盘锁定 Num Lock 键      
0x07 0x0084键盘锁定 Scroll Lock 键      
0x07 0x0085小键盘逗号键0x0079KEY_KPCOMMA3.00x009fKEYCODE_NUMPAD_COMMA 
0x07 0x0086小键盘等号键      
0x07 0x0087键盘 International10x0059KEY_RO    
0x07 0x0088键盘 International20x005dKEY_KATAKANAHIRAGANA    
0x07 0x0089键盘 International30x007cKEY_YEN    
0x07 0x008a键盘 International40x005cKEY_HENKAN    
0x07 0x008b键盘 International50x005eKEY_MUHENKAN    
0x07 0x008c键盘 International60x005fKEY_KPJPCOMMA    
0x07 0x008d键盘 International7      
0x07 0x008e键盘 International8      
0x07 0x008f键盘 International9      
0x07 0x0090键盘 LANG10x007aKEY_HANGEUL    
0x07 0x0091键盘 LANG20x007bKEY_HANJA    
0x07 0x0092键盘 LANG30x005aKEY_KATAKANA    
0x07 0x0093键盘 LANG40x005bKEY_HIRAGANA    
0x07 0x0094键盘 LANG50x0055KEY_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小键盘 ( 键0x00b3KEY_KPLEFTPAREN3.00x00a2KEYCODE_NUMPAD_LEFT_PAREN 
0x07 0x00b7小键盘 ) 键0x00b4KEY_KPRIGHTPAREN3.00x00a3KEYCODE_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 键0x001dKEY_LEFTCTRL3.00x0071KEYCODE_CTRL_LEFT 
0x07 0x00e1键盘左 Shift 键0x002aKEY_LEFTSHIFT1.60x003bKEYCODE_SHIFT_LEFT 
0x07 0x00e2键盘左 Alt 键0x0038KEY_LEFTALT1.60x0039KEYCODE_ALT_LEFT 
0x07 0x00e3键盘左 GUI 键0x007dKEY_LEFTMETA3.00x0075KEYCODE_META_LEFT 
0x07 0x00e4键盘右 Ctrl 键0x0061KEY_RIGHTCTRL3.00x0072KEYCODE_CTRL_RIGHT 
0x07 0x00e5键盘右 Shift 键0x0036KEY_RIGHTSHIFT1.60x003cKEYCODE_SHIFT_RIGHT 
0x07 0x00e6键盘右 Alt 键0x0064KEY_RIGHTALT1.60x003aKEYCODE_ALT_RIGHT 
0x07 0x00e7键盘右 GUI 键0x007eKEY_RIGHTMETA3.00x0076KEYCODE_META_RIGHT 
0x07 0x00e8 0x00a4KEY_PLAYPAUSE3.00x0055KEYCODE_MEDIA_PLAY_PAUSE 
0x07 0x00e9 0x00a6KEY_STOPCD3.00x0056KEYCODE_MEDIA_STOP 
0x07 0x00ea 0x00a5KEY_PREVIOUSSONG3.00x0058KEYCODE_MEDIA_PREVIOUS 
0x07 0x00eb 0x00a3KEY_NEXTSONG3.00x0057KEYCODE_MEDIA_NEXT 
0x07 0x00ec 0x00a1KEY_EJECTCD3.00x0081KEYCODE_MEDIA_EJECT 
0x07 0x00ed 0x0073KEY_VOLUMEUP1.60x0018KEYCODE_VOLUME_UP 
0x07 0x00ee 0x0072KEY_VOLUMEDOWN1.60x0019KEYCODE_VOLUME_DOWN 
0x07 0x00ef 0x0071KEY_MUTE3.00x00a4KEYCODE_VOLUME_MUTE 
0x07 0x00f0 0x0096KEY_WWW1.60x0040KEYCODE_EXPLORER 
0x07 0x00f1 0x009eKEY_BACK1.60x0004KEYCODE_BACK 
0x07 0x00f2 0x009fKEY_FORWARD3.00x007dKEYCODE_FORWARD 
0x07 0x00f3 0x0080KEY_STOP3.00x0056KEYCODE_MEDIA_STOP 
0x07 0x00f4 0x0088KEY_FIND    
0x07 0x00f5 0x00b1KEY_SCROLLUP3.00x005cKEYCODE_PAGE_UP 
0x07 0x00f6 0x00b2KEY_SCROLLDOWN3.00x005dKEYCODE_PAGE_DOWN 
0x07 0x00f7 0x00b0KEY_EDIT    
0x07 0x00f8 0x008eKEY_SLEEP    
0x07 0x00f9 0x0098KEY_COFFEE4.00x001aKEYCODE_POWER 
0x07 0x00fa 0x00adKEY_REFRESH    
0x07 0x00fb 0x008cKEY_CALC4.0.30x00d2KEYCODE_CALCULATOR 

HID 普通桌面用途页 (0x01)

HID 用途HID 用途名称LKCLinux 按键代码名称版本AKCAndroid 按键代码名称备注
0x01 0x0081系统电源中断0x0074KEY_POWER1.60x001aKEYCODE_POWER 
0x01 0x0082系统休眠0x008eKEY_SLEEP4.00x001aKEYCODE_POWER 
0x01 0x0083系统唤醒0x008fKEY_WAKEUP4.00x001aKEYCODE_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 用途名称LKCLinux 按键代码名称版本AKCAndroid 按键代码名称备注
0x0c 0x0030电源      
0x0c 0x0031重置      
0x0c 0x0032休眠      
0x0c 0x0033休眠倒计时      
0x0c 0x0034休眠模式0x008eKEY_SLEEP4.00x001aKEYCODE_POWER 
0x0c 0x0040菜单0x008bKEY_MENU1.60x0052KEYCODE_MENU 
0x0c 0x0041菜单选取      
0x0c 0x0042菜单向上      
0x0c 0x0043菜单向下      
0x0c 0x0044菜单向左      
0x0c 0x0045菜单向右0x0181KEY_RIGHT    
0x0c 0x0046菜单取消      
0x0c 0x0047菜单数值增加      
0x0c 0x0048菜单数值减少      
0x0c 0x0081指派选择      
0x0c 0x0082模式步骤      
0x0c 0x0083撤回上一个0x0195KEY_LAST    
0x0c 0x0084输入频道      
0x0c 0x0085订购影片      
0x0c 0x0088媒体选择计算机0x0178KEY_PC    
0x0c 0x0089媒体选择电视机0x0179KEY_TV3.00x00aaKEYCODE_TV 
0x0c 0x008a媒体选择 WWW0x0096KEY_WWW1.60x0040KEYCODE_EXPLORER 
0x0c 0x008b媒体选择 DVD0x0185KEY_DVD    
0x0c 0x008c媒体选择电话0x00a9KEY_PHONE3.00×0005KEYCODE_CALL 
0x0c 0x008d媒体选择节目预告0x016aKEY_PROGRAM3.00x00acKEYCODE_GUIDE 
0x0c 0x008e媒体选择视频电话0x01a0KEY_VIDEOPHONE    
0x0c 0x008f媒体选择游戏0x01a1KEY_GAMES    
0x0c 0x0090媒体选择消息0x018cKEY_MEMO    
0x0c 0x0091媒体选择 CD0x017fKEY_CD    
0x0c 0x0092媒体选择 VCR0x017bKEY_VCR    
0x0c 0x0093媒体选择调谐器0x0182KEY_TUNER    
0x0c 0x0094退出0x00aeKEY_EXIT    
0x0c 0x0095帮助0x008aKEY_HELP    
0x0c 0x0096媒体选择磁带0x0180KEY_TAPE    
0x0c 0x0097媒体选择电缆0x017aKEY_TV2    
0x0c 0x0098媒体选择卫星0x017dKEY_SAT    
0x0c 0x0099媒体选择安全      
0x0c 0x009a媒体选择起点0x016eKEY_PVR3.00x00adKEYCODE_DVR 
0x0c 0x009c频道增加0x0192KEY_CHANNELUP3.00x00a6KEYCODE_CHANNEL_UP 
0x0c 0x009d频道减少0x0193KEY_CHANNELDOWN3.00x00a7KEYCODE_CHANNEL_DOWN 
0x0c 0x009e媒体选择 SAP      
0x0c 0x00a0VCR +0x017cKEY_VCR2    
0x0c 0x00a11 次      
0x0c 0x00a2每天      
0x0c 0x00a3每周      
0x0c 0x00a4每月      
0x0c 0x00b0播放0x00cfKEY_PLAY3.00x007eKEYCODE_MEDIA_PLAY 
0x0c 0x00b1暂停0x0077KEY_PAUSE3.00x0079KEYCODE_BREAK 
0x0c 0x00b2录制0x00a7KEY_RECORD3.00x0082KEYCODE_MEDIA_RECORD 
0x0c 0x00b3快进0x00d0KEY_FASTFORWARD3.00x005aKEYCODE_MEDIA_FAST_FORWARD 
0x0c 0x00b4快退0x00a8KEY_REWIND3.00x0059KEYCODE_MEDIA_REWIND 
0x0c 0x00b5扫描下一曲目0x00a3KEY_NEXTSONG3.00x0057KEYCODE_MEDIA_NEXT 
0x0c 0x00b6扫描上一曲目0x00a5KEY_PREVIOUSSONG3.00x0058KEYCODE_MEDIA_PREVIOUS 
0x0c 0x00b7停止0x00a6KEY_STOPCD3.00x0056KEYCODE_MEDIA_STOP 
0x0c 0x00b8弹出0x00a1KEY_EJECTCD3.00x0081KEYCODE_MEDIA_EJECT 
0x0c 0x00b9随机播放      
0x0c 0x00ba选择磁盘      
0x0c 0x00bb放入磁盘      
0x0c 0x00bc重复0x01b7KEY_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播放/暂停0x00a4KEY_PLAYPAUSE3.00x0055KEYCODE_MEDIA_PLAY_PAUSE 
0x0c 0x00ce播放/跳过      
0x0c 0x00e2静音0x0071KEY_MUTE3.00x00a4KEYCODE_VOLUME_MUTE 
0x0c 0x00e5低音增强0x00d1KEY_BASSBOOST    
0x0c 0x00e6环绕模式      
0x0c 0x00e7音量      
0x0c 0x00e8MPX      
0x0c 0x00e9音量增大0x0073KEY_VOLUMEUP1.60x0018KEYCODE_VOLUME_UP 
0x0c 0x00ea音量减小0x0072KEY_VOLUMEDOWN1.60x0019KEYCODE_VOLUME_DOWN 
0x0c 0x0181AL 启动按钮配置工具      
0x0c 0x0182AL 可编程按钮配置0x009cKEY_BOOKMARKS3.00x00aeKEYCODE_BOOKMARK 
0x0c 0x0183AL 消费方控制配置0x00abKEY_CONFIG4.0.30x00d1KEYCODE_MUSIC 
0x0c 0x0184AL 文字处理器0x01a5KEY_WORDPROCESSOR    
0x0c 0x0185AL 文本编辑器0x01a6KEY_EDITOR    
0x0c 0x0186AL 电子表格0x01a7KEY_SPREADSHEET    
0x0c 0x0187AL 图形编辑器0x01a8KEY_GRAPHICSEDITOR    
0x0c 0x0188AL 演示应用0x01a9KEY_PRESENTATION    
0x0c 0x0189AL 数据库应用0x01aaKEY_DATABASE    
0x0c 0x018aAL 电子邮件阅读器0x009bKEY_MAIL1.60x0041KEYCODE_ENVELOPE 
0x0c 0x018bAL 新闻阅读器0x01abKEY_NEWS    
0x0c 0x018cAL 语音信箱0x01acKEY_VOICEMAIL    
0x0c 0x018dAL 联系人/通讯录0x01adKEY_ADDRESSBOOK4.0.30x00cfKEYCODE_CONTACTS 
0x0c 0x018eAL 日程表/时间表0x018dKEY_CALENDAR4.0.30x00d0KEYCODE_CALENDAR 
0x0c 0x018fAL 任务/项目管理器      
0x0c 0x0190AL 日志/日记/工作时间记录卡      
0x0c 0x0191AL 支票簿/财务0x00dbKEY_FINANCE    
0x0c 0x0192AL 计算器0x008cKEY_CALC4.0.30x00d2KEYCODE_CALCULATOR 
0x0c 0x0193AL A/V 捕捉/播放      
0x0c 0x0194AL 本地计算机浏览器0x0090KEY_FILE    
0x0c 0x0195AL LAN/WAN 浏览器      
0x0c 0x0196AL 互联网浏览器0x0096KEY_WWW1.60x0040KEYCODE_EXPLORER 
0x0c 0x0197AL 远程网络/ISP 连接      
0x0c 0x0198AL 网络会议      
0x0c 0x0199AL 网络聊天0x00d8KEY_CHAT    
0x0c 0x019aAL 电话/拨号器      
0x0c 0x019bAL 登录      
0x0c 0x019cAL 注销0x01b1KEY_LOGOFF    
0x0c 0x019dAL 登录/注销      
0x0c 0x019eAL 终端锁定/屏幕保护程序0x0098KEY_COFFEE4.00x001aKEYCODE_POWER 
0x0c 0x019fAL 控制面板      
0x0c 0x01a0AL 命令行处理器/运行      
0x0c 0x01a1AL 进程/任务管理器      
0x0c 0x01a2AL 选择任务/应用      
0x0c 0x01a3AL 下一项任务/应用      
0x0c 0x01a4AL 上一项任务/应用      
0x0c 0x01a5AL 优先暂停任务/应用      
0x0c 0x01a6AL 集成帮助中心0x008aKEY_HELP    
0x0c 0x01a7AL 文档0x00ebKEY_DOCUMENTS    
0x0c 0x01a8AL 词典      
0x0c 0x01a9AL 字典      
0x0c 0x01aaAL 桌面      
0x0c 0x01abAL 拼写检查0x01b0KEY_SPELLCHECK    
0x0c 0x01acAL 语法检查      
0x0c 0x01adAL 无线状态      
0x0c 0x01aeAL 键盘布局      
0x0c 0x01afAL 病毒防护      
0x0c 0x01b0AL 加密      
0x0c 0x01b1AL 屏保      
0x0c 0x01b2AL 闹钟      
0x0c 0x01b3AL 时钟      
0x0c 0x01b4AL 文件浏览器      
0x0c 0x01b5AL 电源状态      
0x0c 0x01b6AL 图片浏览器0x00e2KEY_MEDIA3.00x004fKEYCODE_HEADSETHOOK 
0x0c 0x01b7AL 音频浏览器0x00d5KEY_SOUND4.0.30x00d1KEYCODE_MUSIC 
0x0c 0x01b8AL 影片浏览器      
0x0c 0x01b9AL 数字版权管理器      
0x0c 0x01baAL 数字钱包      
0x0c 0x01bcAL 即时消息传输0x01aeKEY_MESSENGER    
0x0c 0x01bdAL OEM 功能/提示管理器0x0166KEY_INFO    
0x0c 0x01beAL OEM 帮助      
0x0c 0x01bfAL 在线社区      
0x0c 0x01c0AL 娱乐内容浏览器      
0x0c 0x01c1AL 在线购物浏览器      
0x0c 0x01c2AL SmartCard 信息/帮助      
0x0c 0x01c3AL 市场/金融浏览器      
0x0c 0x01c4AL 自定义公司新闻浏览器      
0x0c 0x01c5AL 在线活动浏览器      
0x0c 0x01c6AL 研究/搜索浏览器      
0x0c 0x01c7AL 音频播放器      
0x0c 0x0201AC 新建0x00b5KEY_NEW    
0x0c 0x0202AC 打开0x0086KEY_OPEN    
0x0c 0x0203AC 关闭0x00ceKEY_CLOSE    
0x0c 0x0204AC 退出0x00aeKEY_EXIT    
0x0c 0x0205AC 最大化      
0x0c 0x0206AC 最小化      
0x0c 0x0207AC 保存0x00eaKEY_SAVE    
0x0c 0x0208AC 打印0x00d2KEY_PRINT    
0x0c 0x0209AC 属性0x0082KEY_PROPS    
0x0c 0x021aAC 撤消0x0083KEY_UNDO    
0x0c 0x021bAC 复制0x0085KEY_COPY    
0x0c 0x021cAC 剪切0x0089KEY_CUT    
0x0c 0x021dAC 粘贴0x0087KEY_PASTE    
0x0c 0x021eAC 全选      
0x0c 0x021fAC 查找0x0088KEY_FIND    
0x0c 0x0220AC 查找和替换      
0x0c 0x0221AC 搜索0x00d9KEY_SEARCH1.60x0054KEYCODE_SEARCH 
0x0c 0x0222AC 转到0x0162KEY_GOTO    
0x0c 0x0223AC 起始0x00acKEY_HOMEPAGE3.00x0003KEYCODE_HOME 
0x0c 0x0224AC 后退0x009eKEY_BACK1.60x0004KEYCODE_BACK 
0x0c 0x0225AC 前进0x009fKEY_FORWARD3.00x007dKEYCODE_FORWARD 
0x0c 0x0226AC 停止0x0080KEY_STOP3.00x0056KEYCODE_MEDIA_STOP 
0x0c 0x0227AC 刷新0x00adKEY_REFRESH    
0x0c 0x0228AC 上一个链接      
0x0c 0x0229AC 下一个链接      
0x0c 0x022aAC 书签0x009cKEY_BOOKMARKS3.00x00aeKEYCODE_BOOKMARK 
0x0c 0x022bAC 历史记录      
0x0c 0x022cAC 订阅      
0x0c 0x022dAC 放大0x01a2KEY_ZOOMIN    
0x0c 0x022eAC 缩小0x01a3KEY_ZOOMOUT    
0x0c 0x022fAC 缩放0x01a4KEY_ZOOMRESET   (2)
0x0c 0x0230AC 全屏视图      
0x0c 0x0231AC 普通视图      
0x0c 0x0232AC 视图切换      
0x0c 0x0233AC 向上滚动0x00b1KEY_SCROLLUP3.00x005cKEYCODE_PAGE_UP 
0x0c 0x0234AC 向下滚动0x00b2KEY_SCROLLDOWN3.00x005dKEYCODE_PAGE_DOWN 
0x0c 0x0236AC 向左平移      
0x0c 0x0237AC 向右平移      
0x0c 0x0239AC 新窗口      
0x0c 0x023aAC 横向平铺      
0x0c 0x023bAC 纵向平铺      
0x0c 0x023cAC 格式      
0x0c 0x023dAC 编辑      
0x0c 0x023eAC 粗体      
0x0c 0x023fAC 斜体      
0x0c 0x0240AC 下划线      
0x0c 0x0241AC 删除线      
0x0c 0x0242AC 下标      
0x0c 0x0243AC 上标      
0x0c 0x0244AC 全部大写      
0x0c 0x0245AC 旋转      
0x0c 0x0246AC 调整大小      
0x0c 0x0247AC 水平翻转      
0x0c 0x0248AC 垂直翻转      
0x0c 0x0249AC 水平镜像      
0x0c 0x024aAC 垂直镜像      
0x0c 0x024bAC 字体选择      
0x0c 0x024cAC 字体颜色      
0x0c 0x024dAC 字体大小      
0x0c 0x024eAC 左对齐      
0x0c 0x024fAC 水平居中对齐      
0x0c 0x0250AC 右对齐      
0x0c 0x0251AC 水平块对齐      
0x0c 0x0252AC 顶部对齐      
0x0c 0x0253AC 垂直居中对齐      
0x0c 0x0254AC 底部对齐      
0x0c 0x0255AC 垂直块对齐      
0x0c 0x0256AC 减少缩进      
0x0c 0x0257AC 增加缩进      
0x0c 0x0258AC 编号列表      
0x0c 0x0259AC 重新开始编号      
0x0c 0x025aAC 项目符号列表      
0x0c 0x025bAC 升级      
0x0c 0x025cAC 降级      
0x0c 0x025dAC 是      
0x0c 0x025eAC 否      
0x0c 0x025fAC 取消0x00dfKEY_CANCEL    
0x0c 0x0260AC 目录      
0x0c 0x0261AC 购买/结账      
0x0c 0x0262AC 添加到购物车      
0x0c 0x0263AC 展开      
0x0c 0x0264AC 全部展开      
0x0c 0x0265AC 收起      
0x0c 0x0266AC 全部收起      
0x0c 0x0267AC 打印预览      
0x0c 0x0268AC 选择性粘贴      
0x0c 0x0269AC 插入模式      
0x0c 0x026aAC 删除      
0x0c 0x026bAC 锁定      
0x0c 0x026cAC 解锁      
0x0c 0x026dAC 保护      
0x0c 0x026eAC 取消保护      
0x0c 0x026fAC 添加评论      
0x0c 0x0270AC 删除评论      
0x0c 0x0271AC 查看评论      
0x0c 0x0272AC 选择字词      
0x0c 0x0273AC 选择句子      
0x0c 0x0274AC 选择段落      
0x0c 0x0275AC 选择列      
0x0c 0x0276AC 选择行      
0x0c 0x0277AC 选择表格      
0x0c 0x0278AC 选择对象      
0x0c 0x0279AC 重做/重复0x00b6KEY_REDO    
0x0c 0x027aAC 排序      
0x0c 0x027bAC 升序排序      
0x0c 0x027cAC 降序排序      
0x0c 0x027dAC 过滤器      
0x0c 0x027eAC 设置时钟      
0x0c 0x027fAC 查看时钟      
0x0c 0x0280AC 选择时区      
0x0c 0x0281AC 编辑时区      
0x0c 0x0282AC 设置闹钟      
0x0c 0x0283AC 清除闹钟      
0x0c 0x0284AC 延后闹钟      
0x0c 0x0285AC 重置闹钟      
0x0c 0x0286AC 同步      
0x0c 0x0287AC 发送/接收      
0x0c 0x0288AC 发送至      
0x0c 0x0289AC 回复0x00e8KEY_REPLY    
0x0c 0x028aAC 回复全部      
0x0c 0x028bAC 转发消息0x00e9KEY_FORWARDMAIL    
0x0c 0x028cAC 发送0x00e7KEY_SEND    
0x0c 0x028dAC 附加文件      
0x0c 0x028eAC 上传      
0x0c 0x028fAC 下载(目标文件另存为)      
0x0c 0x0290AC 设置边框      
0x0c 0x0291AC 插入行      
0x0c 0x0292AC 插入列      
0x0c 0x0293AC 插入文件      
0x0c 0x0294AC 插入图片      
0x0c 0x0295AC 插入对象      
0x0c 0x0296AC 插入符号      
0x0c 0x0297AC 保存并关闭      
0x0c 0x0298AC 重命名      
0x0c 0x0299AC 合并      
0x0c 0x029aAC 分割      
0x0c 0x029bAC 水平分布      
0x0c 0x029cAC 垂直分布      

其他非 HID 映射

下列映射描述了未出现在 HID 中但存在 Linux 按键代码的函数。

LKCLinux 按键代码名称版本AKCAndroid 按键代码名称备注
0x01d0KEY_FN3.00x0077KEYCODE_FUNCTION 
0x01d1KEY_FN_ESC3.00x006fKEYCODE_ESCAPE3
0x01d2KEY_FN_F13.00x0083KEYCODE_F13
0x01d3KEY_FN_F23.00x0084KEYCODE_F23
0x01d4KEY_FN_F33.00x0085KEYCODE_F33
0x01d5KEY_FN_F43.00x0086KEYCODE_F43
0x01d6KEY_FN_F53.00x0087KEYCODE_F53
0x01d7KEY_FN_F63.00x0088KEYCODE_F63
0x01d8KEY_FN_F73.00x0089KEYCODE_F73
0x01d9KEY_FN_F83.00x008aKEYCODE_F83
0x01daKEY_FN_F93.00x008bKEYCODE_F93
0x01dbKEY_FN_F103.00x008cKEYCODE_F103
0x01dcKEY_FN_F113.00x008dKEYCODE_F113
0x01ddKEY_FN_F123.00x008eKEYCODE_F123
0x01deKEY_FN_13.00x0008KEYCODE_13
0x01dfKEY_FN_23.00x0009KEYCODE_23
0x01e0KEY_FN_D3.00x0020KEYCODE_D3
0x01e1KEY_FN_E3.00x0021KEYCODE_E3
0x01e2KEY_FN_F3.00x0022KEYCODE_F3
0x01e3KEY_FN_S3.00x002fKEYCODE_S3
0x01e4KEY_FN_B3.00x001eKEYCODE_B3

不受支持的旧版按键

以下这些映射出现在以往的 Android 版本中,但与 HID 不一致或采用了非标准 Linux 按键代码。这些映射已不再受支持。

LKCLinux 按键代码名称版本AKCAndroid 按键代码名称备注
0x00dbKEY_EMAIL1.60x004dKEYCODE_AT4
""""4.0  4
0x00e3KEY_STAR1.60x0011KEYCODE_STAR4
""""4.0  4
0x00e4KEY_SHARP1.60x0012KEYCODE_POUND4
""""4.0  4
0x00e5KEY_SOFT11.60x0052KEYCODE_MENU4
""""4.0  4
0x00e6KEY_SOFT21.60x0002KEYCODE_SOFT_RIGHT4
""""4.0  4
0x00e7KEY_SEND1.60×0005KEYCODE_CALL4
""""4.0  4
0x00e8KEY_CENTER1.60x0017KEYCODE_DPAD_CENTER4
""""4.0  4
0x00e9KEY_HEADSETHOOK1.60x004fKEYCODE_HEADSETHOOK4
""""4.0  4
0x00eaKEY_0_51.6  4
0x00ebKEY_2_51.6  4

备注

  1. 与常用字母数字和符号按键相关联的 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 按键代码可能会用于不同的语言。

  2. 0x0c 0x022f AC Zoom 在 HID 中定义为线性控件,但内核会将其映射为按键(这很可能是错误的)。

  3. Linux 功能键 KEY_FN_* 可被映射到更简单的按键代码,但也会被分配已设置为 True 的META_FUNCTION Meta 状态位。

  4. 在 Android Ice Cream Sandwich 4.0 之前,默认的键盘布局包含一些未在主线 Linux 内核头文件中定义的其他按键代码的映射。这些映射此后已被移除,因为这些以前未定义的按键代码在较新版本的 Linux 内核中已被赋予了不同的含义。

来源

  1. USB HID 用途表 v1.12
  2. Linux 2.6.39 内核:include/linux/input.h、drivers/hid/hid-input.c
  3. Android ICS:qwerty.kl、Generic.kl、KeyEvent.java

转载于:https://www.cnblogs.com/nightnine/p/10590070.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值