gpt4 book ai didi

android - 通过/dev/uinput 在 Android 中注入(inject)多点触控手势

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:29 24 4
gpt4 key购买 nike

我正在寻找一种将多点触控手势注入(inject) Android 的方法。到目前为止,我打开/dev/uinput 并写入文件描述符。此解决方案适用于“一次”触摸。如何注入(inject)多点触控输入?

最佳答案

根据我的经验,触摸手势的 /dev/uinput 会很困难。我实现了单点触控,它只在某些设备上有效。在其他人身上,它只会产生“悬停”的效果。

然后我使用了 android 的触摸设备 /dev/input/eventX(如果你有 root 访问权限,你可以)。查看触摸输入如何工作的最佳方法是在设备本身上使用 getevent/dev/input/eventX 二进制文件。 linux multitouch protocol input 很好地描述了多点触控功能和行为,并为您破译十六进制代码(并将它们转换为更有意义的内容,如 ABS_MT_POSITION_X).

简而言之:

  1. 找出哪些/dev/input/eventX 设备是触摸输入设备。它是一个注册了 ABS_MT_* 事件的设备。您可以使用 getevent -il 命令查看此信息(在 adb shell 中运行)
  2. 假设支持此类事件的输入设备是/dev/input/event2
  3. adb shell 发出 getevent/dev/input/event2 命令并触摸屏幕。
  4. 您将在屏幕上看到一些输出,其中包含三列:
    1. 事件类别(对于 EV_ABS,这是 0003)
    2. 事件代码(对于 ABS_MT_SLOT,这是 0x002f
    3. 事件值(槽号、坐标、压力或事件定义的任何内容)
  5. 查看事件的样子并重播它们。您将能够以这种方式注入(inject)多点触控事件和手势。

例如,双击 getevent/dev/input/event2 的注释输出:

0003 002f 00000001 // slot 1 (finger 1)
0003 0039 000019fe // tracking id for slot 1
0003 0035 00000146 // position x
0003 0036 00000117 // position y
0003 0030 00000033 // touch area
0000 0000 00000000 // sync
0003 002f 00000000 // slot 0 (finger 0)
0003 0039 000019ff // tracking id for slot 0
0003 0035 000000cb // position x
0003 0036 00000164 // position y
0003 0030 00000028 // touch area
0000 0000 00000000 // sync
0003 0039 ffffffff // relese finger 0
0000 0000 00000000 // sync
0003 002f 00000001 // slot 1
0003 0039 ffffffff // release finger 1
0000 0000 00000000 // sync

关于android - 通过/dev/uinput 在 Android 中注入(inject)多点触控手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com