是否可以检测到SDL2中按下了哪个键?

时间:2020-01-15 14:15:34

标签: c++ sdl sdl-2

当前正在处理一个学校项目,我们需要在SDL窗口中创建一个输入框。 由于没有该功能,因此我将创建基本输入框,但找不到如何检测SDL中按下了哪个键。

使用此代码,当我按下“ A”时我可以打印,但是我认为为每个字符设置代码确实很愚蠢,因此如何检测按下了哪个键?

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

1 个答案:

答案 0 :(得分:7)

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

您还可以使用SDL_GetKeyName来获取密钥的名称作为字符串。

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