SDL_KEYDOWN y el reconocimiento de clave no funciona correctamente

En mi proyecto, estoy teniendo problemas para que una simple instrucción de cambio funcione para la entrada SDL. Aquí está el ejemplo:

SDL_Event event;

SDL_PollEvent(&event);


if (event.type == SDL_KEYDOWN)
{

    switch (event.key.keysym.sym)
    {
    case SDLK_a: m_x -= 30;
            break;
    case SDLK_d: m_x += 30;
            break;
    case SDLK_w: m_y -= 30;
            break;
    case SDLK_s: m_y += 30;
            break;
    }
}

Cuando ejecuto esto, primero parece que SDL_KEYDOWN no está siendo reconocido. Tampoco mis casos. Entonces cambié el código a:

SDL_Event event;

SDL_PollEvent(&event);


if (event.type == 771)
{

    switch (event.key.keysym.sym)
    {
    case SDLK_a: m_x -= 30;
            break;
    case SDLK_d: m_x += 30;
            break;
    case SDLK_w: m_y -= 30;
            break;
    case SDLK_s: m_y += 30;
            break;
    default: m_y += 1;
    }
}

Esto hace que el caso predeterminado se ejecute cuando sostengo o presiono cualquier tecla, por lo que mi objeto se mueve de acuerdo con m_y + = 1. Si elimino el caso predeterminado e intento presionar w, a, s o d, no sucede nada. Si mantengo m_y + = 1, pero uso SDL_KEYDOWN en lugar de 771, no sucede nada. (Obtuve el código 771 imprimiendo el tipo de evento cada vez que se presiona una tecla).

Respuestas a la pregunta(1)

Su respuesta a la pregunta