SDL: SDL_Event für L+R Maustaste gleichzeitig?



  • Hallo alle zusammen,
    ich hoffe mal, dass ich hier mit meiner SDL-Frage richtig bin.

    Ich möchte es gerne erfahren, wenn der Benutzer die linke (SDL_BUTTON_LEFT) sowie die rechte (SDL_BUTTON_RIGHT) Maustaste gleichzeitig gedrückt hat. Gibt es dazu eine entsprechendes Event oder muss ich mir da eines selber zusammenbasteln?



  • glaub nicht, dass es sowas gibt. schau in mitgelieferte dokumentation, da sind alle events aufeglistet.



  • In der Doku hatte ich nichts gefunden, aber das heißt ja noch lange nicht, dass das nicht eingebaut ist 😉

    ---

    Meine momentane Lösung sieht wiefolgt aus:

    =>Abfrage nach linker Maustaste
    ...
    if(SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(SDL_BUTTON_RIGHT))
    { => l+r Maustaste
    }

    Das gleiche dann nocheinmal für die rechte Maustaste mit SDL_BUTTON(SDL_BUTTON_LEFT).

    ---

    Das ganze funktioniert ganz gut, aber vielleicht gibt es noch eine elegantere Lösung...



  • Die SDL hat doch einen Callback-Mechanismus für Nachrichten wie Windows.

    Ich würds so machen:

    bool leftdown = false; //würdest in echt natürlich nicht global machen
    bool rightdown = false; //dito
    
    void Callbackfunktion( Event e )
    {
       if( e == LEFTDOWN )
           leftdown = true;
       if( e == LEFTUP )
           leftdown = false;
       if( e == RIGHTDOWN )
           rightdown = true;
       if( e == RIGHTUP )
           rightdown = false;
    }
    
    bool left_and_r_down()
    {
      return leftdown && rightdown;
    }
    

    Ist halt je nachdem wie du den User-Input behandelst verschieden, aber ich würd einfach prüfen ob beide unten sind und keine komplexen Sachen wie du es jetzt hast bauen.


Anmelden zum Antworten