0

我想为 Windows 开发一个多鼠标输入工具,能够有选择地控制单个鼠标设备。我还想跟踪禁用单击事件的设备的 MouseMove 事件并显示指针。

我所知道的最接近的现有解决方案(对于 Win7)是TeamPlayer,但它缺乏将控制限制为单个鼠标(或自定义光标图像)的功能,而是通过左键单击自由转移控制。我曾尝试通过 DeviceID 手动禁用设备,但一旦重新启用 TeamPlayer 将无法识别它们。此外,我的许多鼠标设备都具有相同的 DeviceID。

我一直在考虑微软的 MultiPoint SDK,已经使用 MultiPoint TUIO(MultiPoint SDK 的多点触控 TUIO 框架模拟器)和 Mindstorm 的 Unity3D-TUIO 在 Unity3D 中开发了一个交互式多鼠标游戏。

MultiPoint TUIO 使用 MultiPoint 覆盖窗口并将 TUIO 消息发送到底层目标窗口。但是,我看到这种方法(即路由MultipointMouseEvents)来控制非多点窗口中的指针存在问题。例如,单击事件将焦点从 MultiPoint 窗口移开,将控制权返回给所有输入设备。

任何人都可以提出更好的方法吗?

更新

关于在 Unity 中使用 MultiPoint,我发现调整 MultiPoint TUIO 有点矫枉过正,但使用了相同的方法。

我创建了一个应用程序(在 WPF 中)实现了一个 UDP 服务器和一个用 MultiPoint 注册的透明窗口,它会定位和调整自身大小以完全覆盖 Unity 窗口。[注意:您必须在 Unity Player 设置中启用“后台运行”。]

然后,我将 MultiPoint 鼠标位置和事件流式传输到UdpClientUnity 中的一个接收器,该接收器位于一个名为 的类中,该类MultiPointInput跟踪静态成员中的状态。然后,例如,使用MultiPointInput.mousePosition(mouseID)(类似于Input.mousePosition)访问特定的鼠标位置。

我已经在教室里成功使用了 15-20 个无线鼠标。SDK 非常稳定,但在使用多个无线鼠标(范围和干扰不同)时会出现潜在的硬件问题。

4

2 回答 2

1

我正在寻找从多个鼠标输入中检测输入的方法,但找不到任何容易做到的有用的东西。我一直在碰到这个 Multipoint SDK,但它似乎已经死了很长时间,或者它从来没有活着——几乎没有人记录任何用法。

我还找到了尝试捕获原始输入数据的建议,我发现了这个: http: //www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard

据说它在非常低的级别单独管理键盘设备,但我不知道如何实现类似的东西。你有没有尝试过这样的事情?您能否就为什么/为什么其他人不应该继续这样做提供任何反馈?

另外,您能否提供更多有关 TUIO 解决方案的可管理性的详细信息?我目前正在尝试为我的统一游戏解决这个问题,其中我需要多个鼠标的单独移动输入。

更新:我使用 SDG 工具包: http://grouplab.cpsc.ucalgary.ca/cookbook/index.php/Toolkits/SDGToolkit 读取多个鼠标输入,并证明是成功的。我不得不搞砸了一段时间,但终于让它工作了,我的应用程序基于他们提供的最简单的示例应用程序。我基本上将一个套接字服务器/客户端项目与这个 SDG 应用程序结合在一起。服务器是我的 Unity 游戏,客户端是应用程序,每次鼠标移动都会发送数据。

有趣的是,它在我尝试过的任何其他计算机上都不起作用,而且我无法弄清楚我到底做了什么才能让它在我的计算机上运行。我测试了很多关于为什么服务器/客户端无法工作,而实际上是 SDG 的东西对其他人不起作用。基本上,我的错误是使用 2007 年(几乎已经死去)的图书馆并假装它应该是无懈可击的。

无论如何,如果有人(阅读:solus :D)想给这个可持续发展目标一些时间,并检查它是否对他们有用,那就太棒了。该库看起来直观、简单且高效。唯一的问题是由于某些奇怪的原因它不起作用。

于 2013-04-06T13:14:59.753 回答
0

如果您正在为 Unity 寻找即用型和多平台库,那么您可能对 Multi-Input 感兴趣:https ://www.assetstore.unity3d.com/en/#!/content/59967 - 它支持同时连接多个鼠标、键盘和打击板。

于 2016-04-21T14:20:14.597 回答