Android HID设备(键盘、遥控等)功能实现流程及键值映射关系

这篇具有很好参考价值的文章主要介绍了Android HID设备(键盘、遥控等)功能实现流程及键值映射关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,例如键盘、遥控器、鼠标与游戏杆等。在USB设备中,HID设备的成本较低。

    之前文章 android 键盘(遥控)键值定义大全 中整理了android中各种功能键值定义,那么从键盘按键到安卓设备控制生效的流程是怎样的呢?

Android 设备上的键盘操作实现流程:

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

  2. InputReader 将消费原始事件,并更新元键状态。例如,如果您按下或释放左 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 再次分配。

HID用途用两个码值表示,分别代表键的类型和键值,比如0x07代表该键的类型为功能键,0x0001代表键值。以USB遥控器为例

hid协议实现电源键,android,计算机外设

常见的按键分类如下:

  1. 控制键(Control Key):

    • 码值 0x01:Ctrl 键
  2. 转换键(Modifier Key):

    • 码值 0x02:Shift 键
    • 码值 0x03:Alt 键
    • 码值 0x04:GUI 键(例如,Windows 键或 Command 键)
    • 码值 0x05:Caps Lock 键
    • 码值 0x06:Num Lock 键
  3. 导航键(Navigation Key):

    • 码值 0x08:上箭头
    • 码值 0x09:下箭头
    • 码值 0x0A:右箭头
    • 码值 0x0B:左箭头
    • 码值 0x0C:主页键
    • 码值 0x0D:结束键
    • 码值 0x0E:页面上键
    • 码值 0x0F:页面下键
  4. 功能键(Function Key):

    • 码值 0x07:通常表示功能键,但也可以有其他自定义功能键的码值
HID 用途、Linux 按键代码和 Android 按键代码

LKC 列可采用十六进制格式指定 Linux 按键代码。

AKC 列可采用十六进制格式指定 Android 按键代码。

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

这里提供谷歌官方有关说明链接: 

键盘设备  |  Android 开源项目  |  Android Open Source Project文章来源地址https://www.toymoban.com/news/detail-761014.html

到了这里,关于Android HID设备(键盘、遥控等)功能实现流程及键值映射关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第10课【STM32 USB通讯协议实战】HID键盘+CDC虚拟串口组合设备

    文章中的部分概念可参考第9课【USB协议】USB总线 接口 端点 管道 数据包 枚举 STM32_USB-FS-Device_Lib V4.1.0 USB协议中为了提供对多样设备的支持,定义了许多外部设备子类,常见的包括: 人机交互类设备HID(Human Interface Device) 通信类设备CDC(Communicate Device Class) 大容量存储设备

    2024年02月04日
    浏览(59)
  • stm32 USB复合设备 cubeMX库一键生成 多路CDC串口 HID鼠标键盘 Composite Device

    最近有个需求,需要同时用usb键盘鼠标和虚拟串口等,因为平时没怎么研究过usb协议,所以自己写复合设备一直没有成功,然后正巧在github上看到了一个stm32的一个usb复合设备库,可以快速配置usb组合设备,并且支持超级多路串口 Gihub地址 https://github.com/alambe94/I-CUBE-USBD-Compo

    2024年02月09日
    浏览(63)
  • stm32实现hid键盘

     前面的cubelmx项目配置参考 stm32实现hid鼠标-CSDN博客 https://blog.csdn.net/anlog/article/details/137814494?spm=1001.2014.3001.5502 两个项目的配置完全相同。 代码 引用 键盘代码: 替换hid设备描述符 先屏蔽鼠标设备描述符 替换为键盘设备描述符 修改宏定义  修改大小为63U  运行后如下图 参

    2024年04月17日
    浏览(38)
  • android系统中定义的按键码(包含键盘,游戏手柄,TV遥控器)

    数据来源:android sdk. KEYCODE_UNKNOWN         0 KEYCODE_SOFT_LEFT       1 KEYCODE_SOFT_RIGHT      2 KEYCODE_HOME            3 KEYCODE_BACK            4 KEYCODE_CALL            5 KEYCODE_ENDCALL         6 KEYCODE_0               7 KEYCODE_1               8 KEYCODE_2 

    2024年02月12日
    浏览(47)
  • USB HID键盘实现全键无冲解析

    目录 前言 设备描述符 配置描述符 配置描述符 接口描述符 HID描述符 端点描述符 HID类报表描述符 输入输出数据解析 其他         看了稚辉君的瀚文键盘的源码之后对于键盘全键无冲的实现还是存在很多疑问。1、HID报表描述符的内容到底什么意思?2、瀚文源码里的键值映射

    2024年02月09日
    浏览(61)
  • 【GD32F427开发板试用】+使用USBFS轻松实现HID键盘应用

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者: 不锈钢铁侠 最近有项目需要用到键盘自动输入功能,提升工作效率。故使用该开发板实现自定义输入内容并通过按键控制自动通过usb输出。 在官方GD32F4xx_Firm

    2024年02月12日
    浏览(37)
  • android 13.0 当卸载otg设备开机不加载otg设备功能实现

    在13.0定制化rom产品开发过程中,客户有功能需求,通过系统属性值控制是否加载挂载otg设备,当设置为卸载模式时, 要求不能挂载otg设备,开机也不能挂载otg设备,接下来分析相关功能实现 系统通过StorageManager类来检测U盘的插入和拔出事件。通过注册一个StorageEventListener监听

    2024年02月05日
    浏览(53)
  • Android 12.0 通过驱动实现禁用usb鼠标和usb键盘功能

    在12.0的系统产品定制化开发中,在进行定制中有关于usb键盘和usb鼠标的需求中,产品要求禁止usb口挂载usb鼠标和usb键盘,所以需要要求在usb挂载类型的时候 判断如果是usb鼠标和usb键盘就不让挂载,这就需要从驱动方面入手来解决这个问题,接下来看下驱动的某些挂载usb的相

    2024年02月08日
    浏览(106)
  • Android 13.0 通过驱动实现禁用usb鼠标和usb键盘功能

    在13.0的系统产品定制化开发中,在进行定制中有关于usb键盘和usb鼠标的需求中,产品要求禁止usb口挂载usb鼠标和usb键盘,所以需要要求在usb挂载类型的时候 判断如果是usb鼠标和usb键盘就不让挂载,这就需要从驱动方面入手来解决这个问题,接下来看下驱动的某些挂载usb的相

    2024年02月08日
    浏览(57)
  • 设备安装CoreELEC系统,并配置遥控:实现低成本NAS影音播放器

    本文原首发于zdm,由于该平台审核机制出现问题且编辑器极其不好用,所以发布于此 仅作为记录操作的用途 CoreELEC简介 CoreELEC就是一个linux操作系统,只是它专为kodi定制且极其精简,而且专用在低功耗硬件设备上。关于CoreELEC官网是这么介绍的: CoreELEC is a ‘Just enough OS’

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包