37 lines
1.1 KiB
C++
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);
|
|
}
|
|
}
|
|
}
|