15

我试图找出 adb shell 中 getevent 命令的输出格式。

例如,输出如下所示:

adb shell getevent -t | grep event1

-t 标志提供了一个时间戳,而 grep 将消息过滤到仅触摸屏的事件。

22779-197145:/dev/input/event1:0003 003a 00400001

22779-197999:/dev/input/event1:0003 0039 82c30a97

22779-218477:/dev/input/event1:0003 003a 00390001

22779-219301:/dev/input/event1:0003 0039 82c30aa4

22779-230623:/dev/input/event1:0003 003a 002f0001

22779-231416:/dev/input/event1:0003 0039 82c10aae

22779-242769:/dev/input/event1:0003 003a 00190001

22779-243623:/dev/input/event1:0003 0039 82c60ac1

22779-253328:/dev/input/event1:0003 003a 00000002

22779-254213:/dev/input/event1:0003 0039 82da0ae4

22779-415590:/dev/input/event1:0003 003a 00000000

22779-416444:/dev/input/event1:0003 0039 800b1549

问题是我不知道如何处理这些信息。虽然秒最后一个字段在两个代码之间交替(建议对应于 X 和 Y 值),但最后一个字段似乎包含巨大或非常小的数字。

此外,时间戳对我来说也是陌生的。我想知道破折号之后的部分是否是纳秒?

有谁知道我在哪里可以找到这些东西的格式?

4

3 回答 3

14

/dev/input/eventXevdevlinux 内核子系统使用,它是通用输入事件层处理事件并将时间戳传递给应用程序。您可以尝试使用此工具获得更多关于 Android 上发生的事情的人类可读输出getevent,如下所示:

$ adb shell getevent -lp /dev/input/event1

要获得 allgetevent的选项,请执行以下操作:

$ adb shell getevent --help

您可以在此处Wiki 上阅读有关getevent工具的更多信息。evdev

根据内核来源,evdev 使用纳秒分辨率时间格式( ) ,如果您想在线查看,ktime来源在linux/next/include/linux/ktime.h此处。

于 2012-09-10T14:08:54.810 回答
2

看起来您的代码片段中没有触摸屏触摸,或者可能没有记录 x 和 y。

通常,X触摸屏的坐标在下方0003 0035Y下方0003 0036,而0003 0039通常是手指向下(最后一个字段看起来更像00000000)和手指向上(最后一个字段看起来更像ffffffff)。

不完全确定0003 003a它的用途,但它似乎并不重要,而且绝对不是十六进制XY十六进制。

此外,时间戳以秒为单位。时间戳中破折号之前的部分表示 1970 年 1 月 1 日 UTC 的 Unix Epox,破折号​​之后的时间戳变成基于自上述时间和日期以来的秒数的日期。

希望这会增加一些清晰度。

于 2017-06-29T20:48:18.277 回答
1

0x35 = X 轴

0x36 = Y 轴

按照此链接获取 getevent 工具

https://source.android.com/devices/input/getevent

要查看每个细节的含义,请遵循此头文件。

https://android.googlesource.com/kernel/msm.git/+/android-msm-hammerhead-3.4-kk-r1/include/linux/input.h

于 2018-05-15T04:01:17.160 回答