你能用SDL2跟踪多个鼠标吗?
Can you track more than one mouse with SDL2?
是否可以通过SDL 2处理两个鼠标 ?
对于SDL_MOUSEBUTTONDOWN
-事件,无论使用什么鼠标,event.button.which
都为零。(我有两个鼠标通过USB连接在我的OpenSuse机器上。)
如果是,你怎么能做到?
SDL wiki说:
请注意,这里只讨论"鼠标"与桌面GUI的概念。你(通常)有一个系统光标,操作系统对你隐藏硬件细节。如果插入10个鼠标,所有的鼠标都会移动那个光标。对于许多应用程序和游戏来说,这是完美的,这个API自诞生以来已经很好地服务于数百个SDL程序。
看起来您可能不太幸运,至少使用普通的SDL。由于您使用的是Linux(并且可能使用Xorg),您可以了解一下xinput如何处理多个输入;用于测试XI2事件的源代码可能特别有用。
例如,在我的机器上,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)
...
这只输出由鼠标引起的指针移动,而不输出由触控板引起的移动。如果您可以选择输入输入,那么源代码可以帮助您正确地实现自己的机制。
相关文章:
- WinAPI挂钩鼠标
- 光线跟踪器灯光反射错误
- 人脸跟踪arduino代码的优化
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 我可以在 SDL 窗口外跟踪我的鼠标 pos 吗?
- 跟踪鼠标输入事件
- 鼠标跟踪的原始输入始终返回 0 作为增量值
- 无法跟踪鼠标事件 OpenCV
- Qt mouseMoveEvent-跟踪鼠标位置
- 在Qt中跟踪鼠标坐标
- 在QMainWindow中选择性跟踪鼠标
- QMainWindow未使用setMouseTracking()跟踪鼠标
- 如何在QT中同时使用QImage和鼠标跟踪事件
- 如何在opencv中使用对象跟踪的概念移动鼠标
- 你能用SDL2跟踪多个鼠标吗?
- Qt中的鼠标跟踪
- 不能正确跟踪鼠标移动,setMouseTracking没有效果- Qt