Miksiköhän tämä syöttää puskuriin(pushToBuffer) kakkosen kun painaa vasenta kontrollia?
void Input::updateBuffer() { for(int i=0; i < SDLK_LAST; i++) { if(keyboard[i] && !keys[i]) { if(islower(i)) { if(keyboard[SDLK_LSHIFT]) pushToBuffer(toupper(i)); else pushToBuffer(i); } else if(isspace(i)) { if(i == SDLK_RETURN) pushToBuffer('\n'); else pushToBuffer(i); } else if(isdigit(i)) pushToBuffer(i); keys[i]=1; } else if(keys[i] && !keyboard[i]) keys[i]=0; } }
Koska (char)SDLK_LCTRL = (SDLK_LCTRL % 256) = (306 % 256) = 50 = '2'. Tarkistuksissasi ei ole järkeä, kun i > 255, joten huomioi tämä joko if-lauseella tai rajoittamalla for-silmukkaa.
if (i > 255) { // tyhjä } else if (islower(i)) { ... }
Sillähän se selvisi.
Kiitokset.
Aihe on jo aika vanha, joten et voi enää vastata siihen.