Keyboard input
This commit is contained in:
@ -9,6 +9,7 @@
|
||||
|
||||
void sdl_host_suggest_dimensions(uint32_t* window_w, uint32_t* window_h);
|
||||
void sdl_host_loop();
|
||||
void sdl_host_handle_keyboard_event(SDL_KeyboardEvent event);
|
||||
|
||||
SDL_Window* sdl_host_window;
|
||||
SDL_Renderer* sdl_host_renderer;
|
||||
@ -129,6 +130,9 @@ void sdl_host_loop() {
|
||||
SDL_Event e;
|
||||
while (SDL_PollEvent(&e)) {
|
||||
if (e.type == SDL_QUIT) { goto quit; }
|
||||
if (e.type == SDL_KEYDOWN || e.type == SDL_KEYUP) {
|
||||
sdl_host_handle_keyboard_event(e.key);
|
||||
}
|
||||
}
|
||||
|
||||
// trigger game logic
|
||||
@ -146,4 +150,33 @@ void sdl_host_loop() {
|
||||
}
|
||||
}
|
||||
quit: ;
|
||||
}
|
||||
|
||||
void sdl_host_handle_keyboard_event(SDL_KeyboardEvent event) {
|
||||
bool is_down;
|
||||
switch (event.type) {
|
||||
case SDL_KEYDOWN: is_down = true; break;
|
||||
case SDL_KEYUP: is_down = false; break;
|
||||
default: return;
|
||||
}
|
||||
|
||||
if (event.repeat) {
|
||||
return;
|
||||
}
|
||||
|
||||
DeviceButton db;
|
||||
|
||||
switch (event.keysym.sym) {
|
||||
case SDLK_LEFT: db = DEVICE_BUTTON_L; break;
|
||||
case SDLK_RIGHT: db = DEVICE_BUTTON_R; break;
|
||||
case SDLK_UP: db = DEVICE_BUTTON_U; break;
|
||||
case SDLK_DOWN: db = DEVICE_BUTTON_D; break;
|
||||
case SDLK_z: db = DEVICE_BUTTON_0; break;
|
||||
case SDLK_x: db = DEVICE_BUTTON_1; break;
|
||||
case SDLK_c: db = DEVICE_BUTTON_2; break;
|
||||
case SDLK_v: db = DEVICE_BUTTON_3; break;
|
||||
default: return;
|
||||
}
|
||||
|
||||
device_buttons[db] = is_down;
|
||||
}
|
Reference in New Issue
Block a user