首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用uinput模拟多点触摸事件

用uinput模拟多点触摸事件
EN

Stack Overflow用户
提问于 2016-05-24 16:36:58
回答 1查看 1.7K关注 0票数 2

大家好,谢谢大家的阅读。

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

我可以打开,关闭等用户输入,它工作良好的单一触摸。

代码语言:javascript
复制
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。

我试着做了一个触摸和滑动:

代码语言:javascript
复制
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

但是..。我不能用插槽。我正在试着捏(去焦耳)。

代码语言:javascript
复制
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多点触摸协议,应该是这样的。我看不出那个问题是从哪里来的。时间依赖吗?由于我毫不迟延地发送这些指令,它们之间可能需要一段时间。

有人知道如何按照协议B模拟多点触摸事件吗?什么顺序应该起作用?

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

EN

回答 1

Stack Overflow用户

发布于 2016-05-25 12:01:46

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

  1. 你得加点时间。从我可以从Android上的一个旧三星边缘收集到的序列中,每次刷新ABS_MT_POSITION_X/Y的时间间隔为8000微秒。
  2. 你需要发送更多的事件。所以我基本上实现了一个for循环。

戈蒂埃

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37419311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档