【发布时间】:2015-06-15 16:17:56
【问题描述】:
我正在帮助实施一个在 Windows 8 平板电脑上使用 PsychoPy 的实验。似乎无法通过 PsychoPy 或 pyglet 或 PyGame 接口直接访问触摸事件。
我发现的大多数其他来源都提到使用鼠标移动事件代替触摸事件。这对于记录位置很有效,但对于记录时间,它对我们不起作用。我们想收集触摸开始的时间,而鼠标事件发生在触摸结束时。
有谁知道这样做的方法,无论是在 PsychoPy 中还是通过将另一个库导入到实验中?
更新:记录 ioHub 鼠标事件,看起来按下和释放鼠标事件都在触摸结束时发送。这是有道理的,因为这是操作系统确定触摸不是滑动的点。 (另外,它会根据触摸的持续时间来决定触摸是左键还是右键)。
【问题讨论】:
-
你用什么来记录鼠标事件...你能不能换成
<Mouse1-Down>而不是<Mouse1-Click>?。 -
您看过
psychopy.iohub,它明确区分了新闻和发布事件吗?有一个 elo 触摸屏的演示(Coder --> Demos --> ioHub --> elotouchscreen)。如果这不起作用,它可能会注册为鼠标事件,在这种情况下,您还会将按下和释放事件分开(参见 Coder --> 演示 --> ioHub --> 鼠标)。演示相当复杂,所以让我知道它们是否有效,我可以针对您的问题发布更明确的解决方案。 -
@JonasLindeløv 谢谢。该代码目前正在通过 PsychoPy 使用 pyglets 鼠标事件。屏幕上的触摸似乎对应于鼠标 move,而不是 click,因此鼠标向下/向上可能不起作用——我应该调查 iohub 事件并查看哪个生产的。我查看了 ELO 触摸屏代码,它似乎与我们的情况大不相同。它是一个单独的硬件设备,必须通过外部端口显式查询。我们有一个内置屏幕(通过操作系统)应该已经生成 WM_GESTURE / WM_TOUCH 消息——问题是如何获取它们!
-
是的,当您确定生成了哪些 iohub 事件后返回。只需在使用鼠标时执行(1)
from psychopy import iohub, core、(2)io = iohub.launchHubServer()、(3)core.wait(5)之类的操作,(4)print io.devices.mouse.getEvents() -
@JonasLindeløv 我已将此添加到我原来的问题中,不幸的是,正如我所怀疑的那样。
标签: python windows touchscreen psychopy