是否可以通过SDL 2处理两个鼠标?您可以使用SDL2跟踪多个鼠标吗?
对于SDL_MOUSEBUTTONDOWN
-event,无论使用何种鼠标,event.button.which
均为零。 (我的两台鼠标通过USB连接在我的OpenSuse机器上。)
如果是,您怎么办?
是否可以通过SDL 2处理两个鼠标?您可以使用SDL2跟踪多个鼠标吗?
对于SDL_MOUSEBUTTONDOWN
-event,无论使用何种鼠标,event.button.which
均为零。 (我的两台鼠标通过USB连接在我的OpenSuse机器上。)
如果是,您怎么办?
请注意,此只讨论“老鼠”与桌面GUI的概念。你(通常)有一个系统光标,操作系统隐藏你的硬件细节。 如果你插入10只鼠标,所有十个移动一个光标。对于许多应用程序和游戏来说,这是完美的,而且这个API自诞生以来已经为数百个SDL程序提供了很好的服务。
它看起来像你可能会运气不好,至少使用普通的SDL。既然你在Linux中(大概使用Xorg),你可以看看xinput如何处理多个输入; source code for testing XI2 events可能特别有用。
例如,我的机器上xinput
显示设备的一大堆:
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Optical Mouse id=11 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=14 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=16 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Integrated Camera id=10 [slave keyboard (3)]
↳ HID 046a:0011 id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=15 [slave keyboard (3)]
我可以再使用test-xi2
命令获取事件只是一个设备(例如,我的USB鼠标)这样的:
$ xinput test-xi2 11
...
EVENT type 17 (RawMotion)
device: 11 (11)
detail: 0
valuators:
flags:
0: -5.25 (-3.00)
1: 12.75 (8.00)
...
这只会输出由我的鼠标造成的指针移动,但不会导致例如通过触控板。如果xinput是您的选项,source code可能会帮助您实现自己的机制。
你是不是指'event.which'? event.button似乎是一个uint8而不是一个对象 – jhbh
[SDL wiki](http://wiki.libsdl.org/CategoryMouse)说:_请注意,这仅仅讨论了带有桌面GUI概念的“鼠标”。你(通常)有一个系统光标,操作系统隐藏你的硬件细节。 **如果你插入10只老鼠,那么所有十个都会移动一个游标**。对于许多应用程序和游戏来说,这是完美的,而且这个API自诞生以来已经为数百个SDL程序提供了很好的服务._看起来你可能不走运。 – mindriot
谢谢mindriot。如果您愿意,您可以将其作为答案张贴。 – user1511417