diff --git a/include/arc/input/keyboard.h b/include/arc/input/keyboard.h index 7d562a4..6b35d75 100644 --- a/include/arc/input/keyboard.h +++ b/include/arc/input/keyboard.h @@ -23,7 +23,38 @@ void ARC_Keyboard_Create(ARC_Keyboard **keyboard, ARC_KeyboardInfo *info); void ARC_Keyboard_Destroy(ARC_Keyboard *keyboard); void ARC_Keyboard_Update(ARC_Keyboard *keyboard); -ARC_KeyboardState ARC_Keyboard_GetState(ARC_Keyboard *keyboard, uint8_t keys); +typedef enum ARC_KeyboardKey { + ARC_KEY_A, + ARC_KEY_B, + ARC_KEY_C, + ARC_KEY_D, + ARC_KEY_E, + ARC_KEY_F, + ARC_KEY_G, + ARC_KEY_H, + ARC_KEY_I, + ARC_KEY_J, + ARC_KEY_K, + ARC_KEY_L, + ARC_KEY_M, + ARC_KEY_N, + ARC_KEY_O, + ARC_KEY_P, + ARC_KEY_Q, + ARC_KEY_R, + ARC_KEY_S, + ARC_KEY_T, + ARC_KEY_U, + ARC_KEY_V, + ARC_KEY_W, + ARC_KEY_X, + ARC_KEY_Y, + ARC_KEY_Z, + + ARC_KEY_ESC, +} ARC_Keyboard_Key; + +ARC_KeyboardState ARC_Keyboard_GetState(ARC_Keyboard *keyboard, enum ARC_KeyboardKey key); #ifdef __cplusplus } diff --git a/src/input/glfw/keyboard.c b/src/input/glfw/keyboard.c index 1adecfd..5ee81b6 100644 --- a/src/input/glfw/keyboard.c +++ b/src/input/glfw/keyboard.c @@ -15,7 +15,7 @@ void ARC_Keyboard_Destroy(ARC_Keyboard *keyboard){ void ARC_Keyboard_Update(ARC_Keyboard *keyboard){ } -ARC_KeyboardState ARC_Keyboard_GetState(ARC_Keyboard *keyboard, uint8_t key){ +ARC_KeyboardState ARC_Keyboard_GetState(ARC_Keyboard *keyboard, enum ARC_KeyboardKey key){ return ARC_KEY_NONE; } diff --git a/src/input/sdl/keyboard.c b/src/input/sdl/keyboard.c index ef273a4..2a536fa 100644 --- a/src/input/sdl/keyboard.c +++ b/src/input/sdl/keyboard.c @@ -1,3 +1,4 @@ +#include "SDL_keycode.h" #ifdef ARC_SDL #include "arc/input/sdl/keyboard.h" #include "arc/input/keyboard.h" @@ -49,8 +50,40 @@ void ARC_Keyboard_Update(ARC_Keyboard *keyboard){ keyboard->released = (keyboard->keys + keyboard->event->key.keysym.sym); } -ARC_KeyboardState ARC_Keyboard_GetState(ARC_Keyboard *keyboard, uint8_t key){ - return keyboard->keys[key]; +ARC_KeyboardState ARC_Keyboard_GetState(ARC_Keyboard *keyboard, enum ARC_KeyboardKey key){ + switch(key){ + case ARC_KEY_A: return keyboard->keys[SDLK_a]; + case ARC_KEY_B: return keyboard->keys[SDLK_b]; + case ARC_KEY_C: return keyboard->keys[SDLK_c]; + case ARC_KEY_D: return keyboard->keys[SDLK_d]; + case ARC_KEY_E: return keyboard->keys[SDLK_e]; + case ARC_KEY_F: return keyboard->keys[SDLK_f]; + case ARC_KEY_G: return keyboard->keys[SDLK_g]; + case ARC_KEY_H: return keyboard->keys[SDLK_h]; + case ARC_KEY_I: return keyboard->keys[SDLK_i]; + case ARC_KEY_J: return keyboard->keys[SDLK_j]; + case ARC_KEY_K: return keyboard->keys[SDLK_k]; + case ARC_KEY_L: return keyboard->keys[SDLK_l]; + case ARC_KEY_M: return keyboard->keys[SDLK_m]; + case ARC_KEY_N: return keyboard->keys[SDLK_n]; + case ARC_KEY_O: return keyboard->keys[SDLK_o]; + case ARC_KEY_P: return keyboard->keys[SDLK_p]; + case ARC_KEY_Q: return keyboard->keys[SDLK_q]; + case ARC_KEY_R: return keyboard->keys[SDLK_r]; + case ARC_KEY_S: return keyboard->keys[SDLK_s]; + case ARC_KEY_T: return keyboard->keys[SDLK_t]; + case ARC_KEY_U: return keyboard->keys[SDLK_u]; + case ARC_KEY_V: return keyboard->keys[SDLK_v]; + case ARC_KEY_W: return keyboard->keys[SDLK_w]; + case ARC_KEY_X: return keyboard->keys[SDLK_x]; + case ARC_KEY_Y: return keyboard->keys[SDLK_y]; + case ARC_KEY_Z: return keyboard->keys[SDLK_z]; + + case ARC_KEY_ESC: return keyboard->keys[SDLK_ESCAPE]; + + default: return ARC_KEY_NONE; + } + } #endif // ARC_SDL \ No newline at end of file