gpt4 book ai didi

c++ - 您可以使用 SDL2 跟踪不止一只鼠标吗?

转载 作者:行者123 更新时间:2023-11-28 01:58:20 25 4
gpt4 key购买 nike

是否可以通过 SDL 2 处理两只鼠标

SDL_MOUSEBUTTONDOWN 事件中,无论使用什么鼠标,event.button.which 都为零。(我有两个鼠标通过 USB 连接到我的 OpenSuse 机器上。)

如果是,你该怎么做?

最佳答案

The SDL wiki说:

Please note that this ONLY discusses "mice" with the notion of the desktop GUI. You (usually) have one system cursor, and the OS hides the hardware details from you. If you plug in 10 mice, all ten move that one cursor. For many applications and games this is perfect, and this API has served hundreds of SDL programs well since its birth.

看起来您可能不走运,至少使用普通 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可能会让您走上正确的轨道来实现您自己的机制。

关于c++ - 您可以使用 SDL2 跟踪不止一只鼠标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40421580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com