Mitenhän mahtaa olla tuon SDL_GetModState() -funktion kanssa, kun se ei tunnu toimivan ainakaan minulla siten, kuin erinäiset lähteet sen kertovat toimivan? Sen siis pitäisi toimia tähän tapaan:
SDL_PumpEvents();
Uint8* keys = SDL_GetMouseState(NULL);
if((SDL_GetModState() & KMOD_SHIFT) && keys[SDLK_ESCAPE]) {
// painettiin shiftiä ja esciä
}Tein oikein pienen ohjelman ongelman selvittämistä varten, mutta sekään ei tuottanut tulosta:
#include <cstdio>
#include <SDL/SDL.h>
int main(int argc, char** argv) {
if(SDL_Init(SDL_INIT_VIDEO) < 0) {
return EXIT_FAILURE;
}
SDL_Surface* screen = SDL_SetVideoMode(800, 600, 16, 0);
if(!screen) {
SDL_Quit();
return EXIT_FAILURE;
}
Uint8* keys;
while(true) {
SDL_PumpEvents();
keys = SDL_GetKeyState(NULL);
// Ei toimi
if((SDL_GetModState() & KMOD_SHIFT) && keys[SDLK_ESCAPE] == SDL_PRESSED) {
break;
}
// Toimii
if(keys[SDLK_RETURN]) {
break;
}
}
SDL_Quit();
return EXIT_SUCCESS;
}Kellään antaa vinkkiä?
Edit:
SDL:n dokumentaatio: http://www.libsdl.org/cgi/docwiki.cgi/
Googlen tulokset: http://www.google.fi/search?hl=fi&q=SDL_GetModState()&btnG=Hae&meta=
Tarkoituksella vain yksi &?
Gaxx kirjoitti:
if((SDL_GetModState() & KMOD_SHIFT) && keys[SDLK_ESCAPE] == SDL_PRESSED)
Hakoulinen kirjoitti:
Tarkoituksella vain yksi &?
Kyllä.
Ongelmaksi on nyt muodostunut se, että SDL_GetModState() ei reagoi shiftin painamiseen mitenkään(aina sama 4096). Sen sijaan altin ja ctrl:n painamiseen se reagoi.
Heee! Arvatkaapas, mistä kiikasti? Mulla oli joku vanha SDL.dll >_<
Aihe on jo aika vanha, joten et voi enää vastata siihen.