在 Android 的 adb shell input 命令中,可以通过 keyevent 模拟 几乎所有物理按键 (如 Home、返回、音量、电源等),以及部分 虚拟按键 (如删除、回车、菜单等)。以下是完整的 按键代码列表 和 常用示例:
1. 常用按键代码(Android KeyEvent)
| 按键名称 | 代码 (KEYCODE_) |
说明 |
|---|---|---|
| Home 键 | KEYCODE_HOME |
3 |
| 返回键 | KEYCODE_BACK |
4 |
| 电源键 | KEYCODE_POWER |
26 |
| 音量+ | KEYCODE_VOLUME_UP |
24 |
| 音量- | KEYCODE_VOLUME_DOWN |
25 |
| 菜单键 | KEYCODE_MENU |
82(部分设备已废弃) |
| 搜索键 | KEYCODE_SEARCH |
84(部分设备已废弃) |
| 回车键 | KEYCODE_ENTER |
66 |
| 删除键(Backspace) | KEYCODE_DEL |
67(删除光标前字符) |
| 删除键(Delete) | KEYCODE_FORWARD_DEL |
112(删除光标后字符) |
| 空格键 | KEYCODE_SPACE |
62 |
| Tab 键 | KEYCODE_TAB |
61 |
| 方向键(上) | KEYCODE_DPAD_UP |
19 |
| 方向键(下) | KEYCODE_DPAD_DOWN |
20 |
| 方向键(左) | KEYCODE_DPAD_LEFT |
21 |
| 方向键(右) | KEYCODE_DPAD_RIGHT |
22 |
| 切换输入法 | KEYCODE_SWITCH_CHARSET |
92(部分设备支持) |
| 截图(部分设备) | KEYCODE_SYSRQ |
120(需系统支持) |
| 最近任务键 | KEYCODE_APP_SWITCH |
187(Android 10+ 默认) |
| 通知栏 | KEYCODE_NOTIFICATION |
无(部分 ROM 支持 KEYCODE_HEADSETHOOK + 组合键) |
2. 常用命令示例
(1)模拟 Home 键
bash
adb shell input keyevent KEYCODE_HOME
# 或简写(数字代码)
adb shell input keyevent 3
(2)模拟返回键
bash
adb shell input keyevent KEYCODE_BACK
# 或
adb shell input keyevent 4
(3)模拟删除键(Backspace)
bash
adb shell input keyevent KEYCODE_DEL
# 或
adb shell input keyevent 67
(4)模拟 Delete 键(删除光标后字符)
bash
adb shell input keyevent KEYCODE_FORWARD_DEL
# 或
adb shell input keyevent 112
(5)模拟电源键(锁屏/唤醒)
bash
adb shell input keyevent KEYCODE_POWER
# 或
adb shell input keyevent 26
(6)模拟音量调节
bash
adb shell input keyevent KEYCODE_VOLUME_UP # 音量+
adb shell input keyevent KEYCODE_VOLUME_DOWN # 音量-
adb shell input keyevent KEYCODE_VOLUME_MUTE # 静音(部分设备支持)
(7)模拟方向键(游戏/导航)
bash
adb shell input keyevent KEYCODE_DPAD_UP # 上
adb shell input keyevent KEYCODE_DPAD_DOWN # 下
adb shell input keyevent KEYCODE_DPAD_LEFT # 左
adb shell input keyevent KEYCODE_DPAD_RIGHT # 右
(8)模拟回车键(发送消息/确认)
bash
adb shell input keyevent KEYCODE_ENTER
# 或
adb shell input keyevent 66
(9)模拟空格键
bash
adb shell input keyevent KEYCODE_SPACE
# 或
adb shell input keyevent 62
(10)模拟最近任务键(Android 10+)
bash
adb shell input keyevent KEYCODE_APP_SWITCH
# 或
adb shell input keyevent 187
3. 特殊按键(需系统支持)
(1)模拟截图(部分设备)
bash
adb shell input keyevent KEYCODE_SYSRQ
# 或
adb shell screencap -p /sdcard/screen.png # 更可靠的截图方式
(2)模拟通知栏(部分 ROM 支持)
bash
# 方法1:使用 KEYCODE_HEADSETHOOK + 组合键(不保证通用)
adb shell input keyevent KEYCODE_HEADSETHOOK
# 方法2:使用 ADB 命令(需 Root)
adb shell am broadcast -a android.intent.action.EXPAND_STATUS_BAR
(3)模拟长按按键(需 input tap + 延迟)
bash
# 模拟长按 Home 键(1秒)
adb shell input keyevent KEYCODE_HOME && sleep 1 && adb shell input keyevent KEYCODE_HOME
4. 完整按键代码表
参考 Android 官方文档:KeyEvent.java
或运行以下命令查看所有支持的按键:
bash
adb shell dumpsys input
# 或
adb shell getevent -l # 查看设备支持的原始事件(需 Root)
5. 注意事项
- 部分按键可能无效
- 某些厂商 ROM(如小米、华为)可能屏蔽了部分按键(如
KEYCODE_MENU、KEYCODE_SEARCH)。
- 某些厂商 ROM(如小米、华为)可能屏蔽了部分按键(如
- Android 版本差异
- Android 10+ 移除了
KEYCODE_MENU,改用KEYCODE_APP_SWITCH替代最近任务键。
- Android 10+ 移除了
- 虚拟按键 vs 物理按键
KEYCODE_HOME、KEYCODE_BACK是虚拟按键,KEYCODE_VOLUME_UP是物理按键。
- 更可靠的替代方案
- 如果
keyevent无效,可以尝试input tap(模拟点击坐标)或adb shell am(发送广播)。
- 如果
总结
| 需求 | 命令示例 |
|---|---|
| Home 键 | adb shell input keyevent KEYCODE_HOME 或 adb shell input keyevent 3 |
| 返回键 | adb shell input keyevent KEYCODE_BACK 或 adb shell input keyevent 4 |
| 删除键(Backspace) | adb shell input keyevent KEYCODE_DEL 或 adb shell input keyevent 67 |
| Delete 键 | adb shell input keyevent KEYCODE_FORWARD_DEL 或 adb shell input keyevent 112 |
| 电源键 | adb shell input keyevent KEYCODE_POWER 或 adb shell input keyevent 26 |
| 截图 | adb shell screencap -p /sdcard/screen.png(推荐) |
如果某些按键无效,建议改用 input tap 模拟点击 或 scrcpy 手动操作。