Openharmony南向调试小工具(input设备)
一丶环境信息 软件版本:OH5.0 硬件信息:输入设备(触摸屏、键盘、鼠标) 二丶工具详情 在OpenHarmony系统进行input设备适配时,开发人员常面临调试验证难题,无法直观判断驱动是否生效。通过这个工具可实时捕获Linux内核上报的原始事件数据(如EV_ABS坐标值、EV_KEY按键状态),为硬件交互验证提供关键依据。以触摸屏为例: 事件验证流程 执行./input_debug
一丶环境信息
软件版本:OH5.0
硬件信息:输入设备(触摸屏、键盘、鼠标)
二丶工具详情
在OpenHarmony系统进行input设备适配时,开发人员常面临调试验证难题,无法直观判断驱动是否生效。通过这个工具可实时捕获Linux内核上报的原始事件数据(如EV_ABS坐标值、EV_KEY按键状态),为硬件交互验证提供关键依据。以触摸屏为例:
-
事件验证流程
- 执行
./input_debug /dev/input/eventX
启动监控4 - 触控操作后若显示类似
[EV_ABS] Code:0x35 Value:320
的坐标流,表明驱动适配成功 - 无事件输出则需检查设备树配置、HDF驱动加载状态及权限配置
- 执行
-
典型调试场景
- 物理按键:检测EV_KEY事件PRESS/RELEASE状态2
- 触控精度:分析EV_ABS坐标连续性3
- 协议兼容:验证EV_SYN同步事件完整性4
该方案通过底层事件透传机制,有效解决了OpenHarmony硬件适配中“黑盒调试”的痛点。
三丶操作步骤
1. hdc file send ./evtest /data
2. hdc shell
3. chmod 777 /data/evtest
4. cd /data
5. ./evtest /dev/input/event1
listen: /dev/input/event1
[74203.313127] ABS 057 : 115
[74203.313127] ABS 053 : 768
[74203.313127] ABS 054 : 1064
[74203.313127] ABS 048 : 37
[74203.313127] ABS 058 : 37
[74203.313127] KEY 330 : 1
[74203.313127] SYN 000 : 0
[74203.372291] ABS 057 : -1
[74203.372291] KEY 330 : 0
[74203.372291] SYN 000 : 0
四丶示例源码
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>
int main(int argc, char *argv[]) {
if (argc < 2)
{
perror("user error: please add path(/dev/input/eventX)");
return 1;
}
int fd = open(argv[1], O_RDONLY);
if (fd < 0) {
perror("dev is open failed");
return 1;
}
struct input_event ev;
printf("listen: %s \n", argv[1]);
while (read(fd, &ev, sizeof(ev)) == sizeof(ev)) {
const char* type = "UNKNOWN";
switch (ev.type) {
case EV_ABS: type = "ABS"; break;
case EV_KEY: type = "KEY"; break;
case EV_SYN: type = "SYN"; break;
}
printf("[%ld.%06ld] %s %03d : %d\n",
ev.time.tv_sec, ev.time.tv_usec,
type, ev.code, ev.value);
}
close(fd);
return 0;
}
五丶总结
附件是直接编译好的工具,可以直接使用
更多推荐
所有评论(0)