#include "KeypadSDL.hpp" bool KeypadSDL::isKeyPressed(int key) const { return mvKeyDown.at(key); } void KeypadSDL::processEvent(SDL_Event &e) { auto keymap = [](int sdlKeyCode) -> int { switch(sdlKeyCode) { case SDLK_1: return chocochip8::KEY_1; case SDLK_2: return chocochip8::KEY_2; case SDLK_3: return chocochip8::KEY_3; case SDLK_4: return chocochip8::KEY_C; case SDLK_q: return chocochip8::KEY_4; case SDLK_w: return chocochip8::KEY_5; case SDLK_e: return chocochip8::KEY_6; case SDLK_r: return chocochip8::KEY_D; case SDLK_a: return chocochip8::KEY_7; case SDLK_s: return chocochip8::KEY_8; case SDLK_d: return chocochip8::KEY_9; case SDLK_f: return chocochip8::KEY_E; case SDLK_z: return chocochip8::KEY_A; case SDLK_x: return chocochip8::KEY_0; case SDLK_c: return chocochip8::KEY_B; case SDLK_v: return chocochip8::KEY_F; default : return -1; } }; if(e.type == SDL_KEYUP || e.type == SDL_KEYDOWN) { int k = keymap(e.key.keysym.sym); if(k != -1) { mvKeyDown[k] = (e.type == SDL_KEYDOWN); } } }