getevent 工具使用指南
[ English | 简体中文 ]
getevent 是一个命令行工具,用于实时监控并显示来自触摸屏、键盘、鼠标等输入设备的事件。它通过提供详细的事件数据,帮助您调试输入设备驱动和应用程序。
一、功能特性
getevent 提供以下核心功能:
- 鼠标事件监控:跟踪点击、移动和滚轮活动。
- 多点触控捕获:捕获每个触摸点的坐标和时间戳等数据。
- 键盘按键检测:报告按键码和事件类型(如按下、释放)。
- 设备自动发现:默认扫描
/dev目录并监控所有检测到的输入设备。 - 指定设备监控:允许您通过命令行选项监控一个或多个特定设备。
- 非阻塞 I/O:采用 500 毫秒超时的非阻塞模式,避免在等待事件时挂起系统。
- 资源安全管理:确保在退出时(例如通过
Ctrl+C)能正确释放资源,防止内存或文件描述符泄漏。
二、构建配置
要启用 getevent 工具,您必须在 openvela 的板级配置文件中设置以下选项:
# 启用 getevent 工具
CONFIG_GRAPHICS_INPUT_GETEVENT=y
# (可选)启用 getevent 的详细调试信息
CONFIG_GRAPHICS_INPUT_GETEVENT_DETAIL_INFO=y
三、使用说明
您可以从 openvela 的命令行终端(如 NSH)运行 getevent。
命令示例
-
监控所有自动检测到的设备:
getevent -
监控指定的鼠标设备:
getevent -m /dev/mouse0 -
监控指定的触摸屏设备:
getevent -t /dev/input0 -
监控指定的键盘设备:
getevent -k /dev/kbd0 -
同时监控多个设备:
getevent -m /dev/mouse0 -t /dev/input0
要停止监控,请按 Ctrl+C,程序将安全终止。
参数说明
| 参数 | 说明 |
|---|---|
| -m | 指定要监控的鼠标设备。例如 : /dev/mouse0 |
| -t | 指定要监控的触摸屏设备。例如 : /dev/input0 |
| -k | 指定要监控的键盘设备。例如 : /dev/kbd0 |
输出示例
当您运行 getevent 时,它会首先列出正在打开的设备,然后实时打印事件数据。
goldfish-armv7a-ap> getevent
[getevent]: opening /dev/input0
[getevent]: ioctl TSIOC_GETMAXPOINTS: 1
[getevent]: opening /dev/kbd0
[getevent]: opening /dev/mouse0
# 触摸屏事件数据
[getevent]: touch event: /dev/input0
[getevent]: npoints : 1
[getevent]: Point : 0
[getevent]: flags : 11 # 触摸事件标志 (例如:按下、移动)
[getevent]: x : 493
[getevent]: y : 312
[getevent]: timestamp : 31272800
# 键盘事件数据
[getevent]: keyboard event: /dev/kbd0
[getevent]: type : 0 # 0代表KEY_DOWN(按下), 1代表KEY_UP(释放)
[getevent]: code : 57 # 按键码,例如 SPACE 键
[getevent]: keyboard event: /dev/kbd0
[getevent]: type : 1
[getevent]: code : 57
# 鼠标事件数据
[getevent]: mouse event: /dev/mouse0
[getevent]: buttons : 00 # 按钮状态的位掩码
[getevent]: x : 14 # 水平方向的相对位移
[getevent]: y : -16 # 垂直方向的相对位移
四、先决条件
要成功构建和运行 getevent,您的系统必须满足以下先决条件:
- 输入子系统:您必须在配置中启用 openvela 输入子系统。该子系统为
getevent提供了处理事件所需的底层驱动和事件处理机制。详情请参见 Input 驱动开发指南。 - 系统日志 (推荐):为了便于调试,我们建议您在内核配置中启用系统日志输出。当
CONFIG_GRAPHICS_INPUT_GETEVENT_DETAIL_INFO被启用时,getevent可以打印更详细的诊断消息。