C++ SDL_EnableKeyRepeat

kle-ben

Erfahrenes Mitglied
Hi !
Die SDL_EnableKeyRepeat Funktion funktioniert
bei mir nicht, kann mir vieleicht jemand sagen
was ich falsch mache?

Code:
   #inclulde<SDL.h>
   
   int SDL_EnableKeyRepeat(int delay, int interval);
   int TastenErkennung();
   
   //andere Funktionen bla bla
   
   
   intTastenErkennungt()
   {
   SDL_EnableKeyRepeat(2000,30);
   
   //tastaturabfrage
   
   }

oder so hab ich es auch schon versucht:

Code:
    #inclulde<SDL.h>
    
   #define SDL_DEFAULT_REPEAT_DELAY 2000
   #define SDL_DEFAULT_REPEAT_INTERVALL 30
   
   
    int SDL_EnableKeyRepeat(int delay, int interval);
    int TastenErkennung();
    
    //andere Funktionen bla bla
    
    
    intTastenErkennungt()
    {
    SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVALL);
    
    //tastaturabfrage
    
    }

wenn das überhaupt ein Unterschied macht...
Ich hab noch nicht soviel Ahnung arbeite mich gerade
erst in SDL und C++ ein.
Wäre cool wennmir jemand sagen könnte was ich falsch mache.

Gruß Benny
 
Was funktioniert nicht? kommt die Funktion "SDL_EnableKeyRepeat()" nicht mit 0 sondern mit -1 zurück. Ändert sich die Keyboardrepeatrate nicht? Oder wird die Funktion garnicht aufgerufen? In dem gepostet Code würde ich auf jeden Fall erstmal folgendes machen:
Code:
intTastenErkennungt()
ändern in:
Code:
int TastenErkennung()

Also Leerzeichen zwischen int und Funktionsnamen weg und "t" am ende des Funktionsnamens entfernen. Da ich vermute das in der 3. Codezeile soll die Vorwarddeklaration für diese Funktion sein.
Vielleicht hilt das ja schon? ;-)

Gruß Byteblaster
 
Die Funktion stimmt schon.
Ist nur ein abtippfehler gewesen weil ich auf einem anderen Pc
programmiere an dem ich kein Internet habe.

Die Funktion wird Aufgerufen und gibt immer eine 0 zurück.
Die Repeatrate verändert sich allerdings nicht!

Ist es für die Benutzung der Funktion wichtig deren
Rückgabewert abzufragen?

Gruß Benny
 
Für die Benutzung der Funktion selber nicht, nur zum Debuggen recht hilfreich und für eine Reaktion bzw. Fehlerbehandlung, wenn die Funktion mal fehl schlägt.

Mhm... ich kenn jetzt die SDL nicht so genau. (Meine ander Idee war halt noch die Werte ausserhalb des gültigen Werteberechs sind, aber dann sollte es ja normalerweise eine -1 zurück geben.) Was passierten denn, wenn du als 1. Parameter eine 0 angibst? Wird es dann abgeschaltet? Kommt es immernoch mit 0 zurück. (Momentan ist dein Werte 2 Sekunden und 0,03 Sekunden, wie sind sie den in deinem System per default?) Kodier das mal hart rein nicht mit den #defines! (Also wie in deinem 1. Beispiel) Wenn du C++ Benutzt dann über:
Code:
const int DEFAULT_DELAY=0; //oder den entprechenden wert  (0=Abschalten)
const int DEFAULT_REPEAT=0;  // oder den entprechenden Wert
und später dann:
Code:
int TastenErkennung()
{

SDL_EnableKeyRepeat(DEFAULT_DELAY,DEFAULT_REPEAT);

//tastaturabfrage
}
Aber sonst weiß ich da auch nicht weiter, wenn die Funktion korrekt zurück kommt sollte es eigentlich auch funktionieren! :-(

Gruß Byteblaster
 
Ich hab das Problem jetzt mit SDL_KEYUP und SDL_KEYDOWN
gelöst. Funktioniert nun auch alles so weit. Danke für die Hilfe!
Gruß Benny
 
Zurück