Codechange: Ensure SDLK mappings stay in the expected order. (#12608)
Add a constexpr constructor that ensures at compile-time that the source SDLK range matches the target range. (cherry picked from commit 90029beb4919ea8d74b9d646e643beb7a3e3fcd0) # Conflicts: # src/video/sdl2_v.cpp # src/video/sdl_v.cpp
This commit is contained in:

committed by
Jonathan G Rennison

parent
fd183914c8
commit
8769318653
@@ -518,18 +518,24 @@ std::vector<int> VideoDriver_SDL_Base::GetListOfMonitorRefreshRates()
|
||||
}
|
||||
|
||||
struct SDLVkMapping {
|
||||
SDL_Keycode vk_from;
|
||||
byte vk_count;
|
||||
byte map_to;
|
||||
bool unprintable;
|
||||
const SDL_Keycode vk_from;
|
||||
const uint8_t vk_count;
|
||||
const uint8_t map_to;
|
||||
const bool unprintable;
|
||||
|
||||
constexpr SDLVkMapping(SDL_Keycode vk_first, SDL_Keycode vk_last, uint8_t map_first, [[maybe_unused]] uint8_t map_last, bool unprintable)
|
||||
: vk_from(vk_first), vk_count(vk_first - vk_last + 1), map_to(map_first), unprintable(unprintable)
|
||||
{
|
||||
assert((vk_last - vk_first) == (map_last - map_first));
|
||||
}
|
||||
};
|
||||
|
||||
#define AS(x, z) {x, 0, z, false}
|
||||
#define AM(x, y, z, w) {x, (byte)(y - x), z, false}
|
||||
#define AS_UP(x, z) {x, 0, z, true}
|
||||
#define AM_UP(x, y, z, w) {x, (byte)(y - x), z, true}
|
||||
#define AS(x, z) {x, x, z, z, false}
|
||||
#define AM(x, y, z, w) {x, y, z, w, false}
|
||||
#define AS_UP(x, z) {x, x, z, z, true}
|
||||
#define AM_UP(x, y, z, w) {x, y, z, w, true}
|
||||
|
||||
static const SDLVkMapping _vk_mapping[] = {
|
||||
static constexpr SDLVkMapping _vk_mapping[] = {
|
||||
/* Pageup stuff + up/down */
|
||||
AS_UP(SDLK_PAGEUP, WKC_PAGEUP),
|
||||
AS_UP(SDLK_PAGEDOWN, WKC_PAGEDOWN),
|
||||
|
@@ -378,15 +378,21 @@ bool VideoDriver_SDL::ClaimMousePointer()
|
||||
}
|
||||
|
||||
struct SDLVkMapping {
|
||||
uint16_t vk_from;
|
||||
byte vk_count;
|
||||
byte map_to;
|
||||
const uint16_t vk_from;
|
||||
const uint8_t vk_count;
|
||||
const uint8_t map_to;
|
||||
|
||||
constexpr SDLVkMapping(SDL_Keycode vk_first, SDL_Keycode vk_last, uint8_t map_first, [[maybe_unused]] uint8_t map_last)
|
||||
: vk_from(vk_first), vk_count(vk_first - vk_last + 1), map_to(map_first)
|
||||
{
|
||||
assert((vk_last - vk_first) == (map_last - map_first));
|
||||
}
|
||||
};
|
||||
|
||||
#define AS(x, z) {x, 0, z}
|
||||
#define AM(x, y, z, w) {x, (byte)(y - x), z}
|
||||
#define AS(x, z) {x, x, z, z, false}
|
||||
#define AM(x, y, z, w) {x, y, z, w, false}
|
||||
|
||||
static const SDLVkMapping _vk_mapping[] = {
|
||||
static constexpr SDLVkMapping _vk_mapping[] = {
|
||||
/* Pageup stuff + up/down */
|
||||
AM(SDLK_PAGEUP, SDLK_PAGEDOWN, WKC_PAGEUP, WKC_PAGEDOWN),
|
||||
AS(SDLK_UP, WKC_UP),
|
||||
|
Reference in New Issue
Block a user