Оператор switch в основном является оператором if.
Если вы действительно хотите сделать это по-своему, это выглядело бы как
if (event.type == SDL_KEYDOWN)
{
board = evnt.key;
key = board.keysym.sym;
if(key==SDLK_a)
{
//do stuff here
}
Если вы хотите, чтобы он выглядел в точности так, как вы сказали выше, вам нужно определить MAP bools, называемый isPressed, и всякий раз, когда вы получаете ключевое событие, передайте его помощнику, который установит значения на карте. на основе нажатой клавиши. Я скажу вам сейчас - привыкните к тому, как SDL «хочет», чтобы вы это делали. Когда вам будет удобнее, вы поймете, что в этом больше смысла.
Что касается ошибки, с которой вы столкнулись - я не слишком уверен в ее части, но попробуйте поставить SDL_EnableUNICODE (); в вашей инициации. Затем выполните тестирование на том же входном сигнале и доложите - я ожидаю, что это по крайней мере решит вашу проблему с юникодом.