diff --git a/app/src/input_events.c b/app/src/input_events.c index 7d898394..94e7ddba 100644 --- a/app/src/input_events.c +++ b/app/src/input_events.c @@ -1,8 +1,8 @@ #include -static inline enum sc_mod -sc_mod_from_sdl(SDL_Keymod mod) { - return (enum sc_mod) mod; +static inline uint16_t +sc_mod_from_sdl(uint16_t mod) { + return mod; } static inline enum sc_keycode @@ -40,7 +40,7 @@ sc_key_event_from_sdl(struct sc_key_event *event, event->keycode = sc_keycode_from_sdl(sdl->keysym.sym); event->scancode = sc_scancode_from_sdl(sdl->keysym.scancode); event->repeat = sdl->repeat; - event->mods = sc_mod_from_sdl(sdl->keysym.mod); + event->mod = sc_mod_from_sdl(sdl->keysym.mod); } void diff --git a/app/src/input_events.h b/app/src/input_events.h index 1a0ead4e..50dc8abe 100644 --- a/app/src/input_events.h +++ b/app/src/input_events.h @@ -282,11 +282,20 @@ enum sc_scancode { SC_SCANCODE_RGUI = SDL_SCANCODE_RGUI, }; +static_assert(sizeof(enum sc_mod) >= sizeof(SDL_Keymod), + "SDL_Keymod must be convertible to sc_mod"); + +static_assert(sizeof(enum sc_keycode) >= sizeof(SDL_Keycode), + "SDL_Keycode must be convertible to sc_keycode"); + +static_assert(sizeof(enum sc_scancode) >= sizeof(SDL_Scancode), + "SDL_Scancode must be convertible to sc_scancode"); + struct sc_key_event { enum sc_action action; enum sc_keycode keycode; enum sc_scancode scancode; - enum sc_mod mods; // bitwise-OR of sc_mod values + uint16_t mod; // bitwise-OR of sc_mod values uint8_t repeat; };