04-鸿蒙系统 keycodeType 详解 与 hdc 发送按键控制设备

📅 发布时间:2026/9/3 8:07:53
04-鸿蒙系统 keycodeType 详解 与 hdc 发送按键控制设备 适用对象需要理解鸿蒙按键码、并通过 hdc 远程控制设备按键的新人文档定位概念讲清 两套 keycode 体系避坑 hdc 发送按键直接抄配套文档hdc 环境配置 · wukong 测试 · hilog 使用指南一、keycodeType 是什么30 秒理解在鸿蒙多模输入里一次按键事件由两个核心要素组成要素含义举例keyCode键值标识按了哪个键的数字Home1、Back2、音量16应用层枚举值keyType / action按键类型·动作标识按下还是抬起DOWN按下、UP抬起、CANCEL取消所谓keycodeType可理解为按键码 按键动作类型的统称。一次普通点击 一次DOWN 一次UP长按 DOWN后延时再UP。应用层在 ArkTS 里收到的事件对象KeyEvent就包含keyCode和action还有keyText按键字符等。二、⚠️ 最关键的坑两套 keycode 体系必看鸿蒙里**发送端和接收端用的是两套完全不同的数字**这是新人 90% confusion 的来源场景用的 keycode 体系Home 的值Back 的值音量 的值电源 的值hdcinput keyevent注入发送端Android 风格底层 keycode342425ArkTS 应用KeyCode枚举接收端OpenHarmony 多模输入枚举121617为什么会这样input keyevent是 Linux/Android 兼容注入层直接注入底层 keycode多模输入服务MMI收到后会把它映射成 OpenHarmony 自己的KeyCode枚举再派发给应用。所以你用hdc shell input keyevent 3发 Home → 应用里onKeyEvent收到的keyCode是1KEYCODE_HOME。记忆口诀发用 3收用 1底层 Android 数应用 OpenHarmony 值。搞混就按不出想要的键。三、KeyCode 枚举详解应用层ohos.multimodalInput.keyCode来源模块kit.InputKitAPI 9支持按键设备键盘/电源/拍照等的键值。导入import { KeyCode } from kit.InputKit;系统能力SystemCapability.MultimodalInput.Input.Core数值分段规律区间含义-1KEYCODE_UNKNOWN未知按键0KEYCODE_FN功能键1 ~ 999系统/功能键Home、Back、音量、电源、媒体等2000 ~ 2099字母/数字/符号/方向/修饰键2100 ~ 2199小键盘、F1~F12、锁键2200设备特有键、游戏手柄、TV、车机等常用按键对照表应用层枚举值 —— 写代码时用按键枚举名值按键枚举名值HomeKEYCODE_HOME1回车KEYCODE_ENTER2054BackKEYCODE_BACK2退格KEYCODE_DEL2055搜索KEYCODE_SEARCH9空格KEYCODE_SPACE2050音量KEYCODE_VOLUME_UP16TabKEYCODE_TAB2049音量-KEYCODE_VOLUME_DOWN17菜单KEYCODE_MENU2067电源KEYCODE_POWER18EscKEYCODE_ESCAPE2070拍照KEYCODE_CAMERA19方向↑KEYCODE_DPAD_UP2012静音(扬)KEYCODE_VOLUME_MUTE22方向↓KEYCODE_DPAD_DOWN2013调亮KEYCODE_BRIGHTNESS_UP40方向←KEYCODE_DPAD_LEFT2014数字0~9KEYCODE_0~KEYCODE_92000~2009方向→KEYCODE_DPAD_RIGHT2015字母A~ZKEYCODE_A~KEYCODE_Z2017~2042确定KEYCODE_DPAD_CENTER2016完整清单见华为官方 KeyCode 参考。不同 API 版本会新增枚举如游戏手柄、智感键、TV 键等以设备实际版本为准。四、按键动作类型keyType / action动作含义触发时机DOWN按下手指/按键接触瞬间UP抬起松开瞬间CANCEL取消事件被系统中断UNKNOWN未知异常应用层监听示例ArkTSonKeyEvent((event:KeyEvent){if(event.actionKeyAction.DOWNevent.keyCodeKeyCode.KEYCODE_BACK){// 按下了返回键}})五、hdc 发送按键控制设备的三种方式方式 1input keyevent底层数字 / 名称—— 最通用# 语法hdc shell input keyeventkeycode数字或名称# 常用底层 Android 风格数字注意不是应用层枚举值hdc shell input keyevent3# Home / 返回桌面hdc shell input keyevent4# Back / 返回上一级hdc shell input keyevent24# 音量 hdc shell input keyevent25# 音量 -hdc shell input keyevent26# 电源键hdc shell input keyevent66# 回车 Enterhdc shell input keyevent82# 菜单 Menuhdc shell input keyevent19# 方向键 上hdc shell input keyevent23# 方向键 确定(中心)底层 keycode 常用对照Android 风格input 命令用这套按键数字按键数字HOME3VOLUME_UP24BACK4VOLUME_DOWN25DPAD_UP19POWER26DPAD_DOWN20CAMERA27DPAD_LEFT21ENTER66DPAD_RIGHT22MENU82DPAD_CENTER23VOLUME_MUTE164部分版本支持直接写名称如input keyevent KEYCODE_HOME但数字最稳建议用数字。方式 2uitest uiinput keyevent名称推荐新手OpenHarmony 的uitestUI 测试框架提供更直观的按键名方式不用记数字hdc shell uitest uiinput keyevent home# 返回桌面hdc shell uitest uiinput keyevent back# 返回上一级hdc shell uitest uiinput keyevent volume_up# 音量 hdc shell uitest uiinput keyevent volume_down# 音量 -hdc shell uitest uiinput keyevent power# 电源hdc shell uitest uiinput keyevent menu# 菜单uitest需设备已开启开发者选项 USB 调试名称不支持时回退到方式 1。方式 3wukong 随机键盘注入压力测试用不需要指定具体键让 wukong 随机注入键盘事件见 wukong 笔记-k参数hdc shell wukongexec-bcom.example.myapp-k0.1-c100# 10% 键盘事件比例六、实战模板直接抄# 1. 一键回桌面最常用hdc shell input keyevent3# 2. 返回上一级hdc shell input keyevent4# 或 hdc shell uitest uiinput keyevent back# 3. 音量加 3 次循环foriin123;dohdc shell input keyevent24;sleep0.3;done# 4. 锁屏电源键hdc shell input keyevent26# 5. 在输入框里打字先聚焦输入框再发字母/回车hdc shell input keyevent2017# Ahdc shell input keyevent2054# 回车# 6. 配合 wukong 压测时实时盯按键相关日志hdc shell hilog-LI|grep-ikey七、与 wukong / hilog 配合实战闭环# 终端 A跑压测含键盘事件hdc shell wukongexec-bcom.example.myapp-k0.15-t0.6-a0.25-T20# 终端 B盯按键/系统键日志排查按键异常hdc shell hilog|grep-iEkey|keycode# 压测后回桌面、抓日志留证hdc shell input keyevent3hdcfilerecv /data/log/hilog/ ./logs hilogtool parse-i./logs-d./logs八、⚠️ 新手必踩的 5 个坑用错 keycode 体系→ 想发 Home 却写成input keyevent 1那是应用层枚举值设备没反应。注入端用 Android 数字3不是应用层1。见第二节。数字 3 没反应→ 设备可能未开 USB 调试或uitest/注入被系统限制部分系统键需特定权限/root。uitest命令不存在→ 老版本/精简系统没预置 uitest回退用input keyevent数字方式。长按/组合键失效→ 单次input keyevent是按下抬起一起完成。要长按需分别发 DOWN/UP 并延时或加--longpress视版本支持。系统键不响应电源/音量→ 这些是系统功能键部分设备对注入有权限约束优先用uitest uiinput keyevent名称方式成功率更高。记忆口诀发用 3收用 1底层 Android 数应用 OpenHarmony 值。搞混就按不出想要的键。九、标准作业流SOP1. hdc 已配通见配套文档设备开 USB 调试 2. 想发系统键 → 优先 hdc shell uitest uiinput keyevent 名称 3. 名称不支持 → hdc shell input keyevent Android数字 4. 不确定数字 → 查本文底层 keycode 对照表Home3/Back4/Vol24... 5. 写应用代码监听时 → 用 ohos.multimodalInput.keyCode 枚举HOME1/BACK2... 6. 异常排查 → hdc shell hilog | grep key十、一句话速记卡贴显示器上keycodeType 按键码(keyCode) 动作类型(DOWN/UP) 两套体系: 发(hdc input keyevent) → Android数: Home3 Back4 Vol24 Vol-25 Power26 收(App KeyCode) → OH枚举: Home1 Back2 Vol16 Vol-17 Power18 发送按键: hdc shell input keyevent 3 ← Home(底层数) hdc shell uitest uiinput keyevent home ← 名称(推荐) wukong -k 0.15 ... ← 随机键盘压测 写代码监听: import { KeyCode } from kit.InputKit参考来源华为开发者文档ohos.multimodalInput.keyCode键值官方参考华为开发者文档支持键盘输入事件KeyEvent / action实践参考hdc shell input keyevent 3返回桌面、uitest uiinput keyevent home/back社区验证