Files
choco-chip8/KeypadSDL.cpp
2025-03-15 01:58:27 -04:00

37 lines
1.1 KiB
C++

#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);
}
}
}