2016-11-04 4 views
0

Ist es möglich, zwei Mäuse über SDL 2 zu behandeln?Können Sie mehr als eine Maus mit SDL2 verfolgen?

Auf einem SDL_MOUSEBUTTONDOWN -Event ist event.button.which Null, egal welche Maus verwendet wird. (Ich habe zwei Mäuse an meiner OpenSuse-Maschine über USB angeschlossen.)

Wenn ja, wie können Sie es tun?

+0

meinst du 'event.which '? event.button scheint ein uint8 zu sein kein Objekt – jhbh

+1

[Das SDL-Wiki] (http://wiki.libsdl.org/CategoryMouse) sagt: _Beachte bitte, dass dies NUR "Mäuse" mit dem Begriff der Desktop-GUI diskutiert. Sie haben (normalerweise) einen Systemcursor und das Betriebssystem verbirgt die Hardwaredetails von Ihnen. ** Wenn Sie 10 Mäuse anschließen, bewegen alle zehn diesen einen Cursor. ** Für viele Anwendungen und Spiele ist dies perfekt, und diese API hat Hunderte von SDL-Programmen gut seit seiner Geburt gedient. _ Sieht aus, als ob Sie Pech haben könnten . – mindriot

+0

Danke gedanken. Sie können dies als eine Antwort veröffentlichen, wenn Sie möchten. – user1511417

Antwort

2

The SDL wiki sagt:

Bitte beachten Sie, dass dies diskutiert ONLY "Mäuse" mit dem Begriff des Desktop-GUI. Sie haben (normalerweise) einen Systemcursor und das Betriebssystem verbirgt die Hardwaredetails von Ihnen. Wenn Sie 10 Mäuse einstecken, bewegen alle zehn diesen einen Cursor. Für viele Anwendungen und Spiele ist dies perfekt, und diese API hat seit ihrer Geburt Hunderte von SDL-Programmen gut bedient.

Es sieht so aus, als ob Sie Pech hätten, zumindest mit einfachem SDL. Da Sie sich in Linux befinden (und vermutlich Xorg verwenden), könnten Sie einen Blick darauf werfen, wie xinput mehrere Eingaben verarbeitet; die source code for testing XI2 events kann besonders nützlich sein.

Zum Beispiel auf meiner Maschine xinput zeigt eine ganze Reihe von Geräten:

$ 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)] 

Ich kann dann mit dem test-xi2 Befehl Ereignisse bekommen für nur ein Gerät (zB meine USB-Maus) wie folgt aus:

Dies gibt nur Zeigerbewegungen aus, die von meiner Maus verursacht werden, aber nicht solche, die z mit dem Trackpad. Wenn xinput eine Option für Sie ist, kann die source code Sie auf den richtigen Weg bringen, um Ihren eigenen Mechanismus zu implementieren.

Verwandte Themen