如何在没有重复案例的情况下检测 SDL2 中按下了哪个键?

Ogu*_*han 0 c++ sdl sdl-2

我需要在 SDL 窗口中创建一个输入框。

由于没有功能,我将制作一个基本的输入框,但我找不到如何检测在 SDL 中按下了哪个键。

使用下面的代码,我可以在点击时打印,'A'但我认为为每个角色制作这个代码会非常重复。如何检测按下了哪个键?

case: SDL_KEYDOWN:
    switch (event.key.keysym.sym) {
        case SDLK_a:
            cout << "You Clicked \'A\'" << endl;
            break;
    }
Run Code Online (Sandbox Code Playgroud)

Tho*_*mas 7

SDL_Keysym::sym是一个SDL_Keycode值。正如您在查找表中所见,这些键码在可能的情况下仅对应于 ASCII 值。检查它是否在0x200x7f(包括)之间应该是检测它的好方法。

您还可以使用SDL_GetKeyName以字符串形式获取键的名称。

请注意,不考虑 Shift 等修饰符。我认为这没问题,因为您要求检测按键,而不是键入的字符。否则,SDL_TextInputEvent可能更接近您的需要。