gpt4 book ai didi

android - 使用 uinput 模拟多点触控事件

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:21 25 4
gpt4 key购买 nike

大家好,感谢阅读。

我正在尝试使用 uinput 界面来执行一些操作。最终,这些数据将通过 UART 从串行连接进行解释。

我可以打开、关闭等 uinput,它适用于单点触控。

EV_KEY BTN_TOUCH 1
EV_ABS ABS_X 400
EV_ABS ABS_Y 400
EV_SYN SYN_REPORT 0

执行触摸。轻扫、双击,可以很好地处理 ABS_X 和 ABS_Y。

然后,我想实现多点触控支持,所以我实现了 ABS_MT_POSITION_X、ABS_MT_POSITION_Y、ABS_MT_TRACKING_ID、ABS_MT_SLOT。

我设法执行了触摸和滑动:

EV_ABS ABS_MT_TRACKING_ID 20
EV_KEY BTN_TOUCH 1
EV_ABS ABS_MT_POSITION_X 425
EV_ABS ABS_MT_POSITION_Y 400
EV_SYN SYN_REPORT 0

但是...我不能使用插槽。我正在尝试捏合(缩放器)。

EV_ABS ABS_MT_SLOT 0
EV_ABS ABS_MT_TRACKING_ID 20
EV_KEY BTN_TOUCH 1
EV_ABS ABS_MT_POSITION_X 425
EV_ABS ABS_MT_POSITION_Y 400
EV_ABS ABS_MT_SLOT 1
EV_ABS ABS_MT_TRACKING_ID 21
EV_ABS ABS_MT_POSITION_X 650
EV_ABS ABS_MT_POSITION_Y 400
EV_SYN SYN_REPORT 0
EV_ABS ABS_MT_SLOT 0
EV_ABS ABS_MT_POSITION_X 450
EV_ABS ABS_MT_POSITION_Y 400
EV_ABS ABS_MT_SLOT 1
EV_ABS ABS_MT_POSITION_X 550
EV_ABS ABS_MT_POSITION_Y 400
EV_ABS ABS_MT_SLOT 0
EV_ABS ABS_MT_TRACKING_ID -1
EV_ABS ABS_MT_SLOT 1
EV_ABS ABS_MT_TRACKING_ID -1
EV_KEY BTN_TOUCH 0
EV_SYN SYN_REPORT 0

这个序列不起作用,但根据Linux Multi Touch Protocol , 它应该是。我看不出那个问题是从哪里来的。它是时间依赖性的吗?由于我在发送这些指令时没有任何延迟,因此它们之间可能需要一些时间。

有谁知道如何模拟遵循协议(protocol) B 的多点触控事件?什么顺序应该起作用?

注意:这些触摸是在 Android 设备上执行的,在使用 Android NDK 制作的 C 可执行文件中。

最佳答案

所以我终于找到了答案。上面的顺序是正确的,但是:

  1. 您需要添加延迟。从我可以从 Android 上的旧 Samsung Edge 收集到的序列中,ABS_MT_POSITION_X/Y 的每次刷新之间有 8000 微秒。
  2. 您需要发送更多事件。所以我基本上实现了一个for循环。

戈蒂埃

关于android - 使用 uinput 模拟多点触控事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37419311/

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