当前正在处理一个学校项目,我们需要在SDL窗口中创建一个输入框。 由于没有该功能,因此我将创建基本输入框,但找不到如何检测SDL中按下了哪个键。
使用此代码,当我按下“ A”时我可以打印,但是我认为为每个字符设置代码确实很愚蠢,因此如何检测按下了哪个键?
case: SDL_KEYDOWN:
switch(event.key.keysym.sym){
case SDLK_a:
cout << "You Clicked \'A\' << endl;
break;
}
答案 0 :(得分:7)
SDL_Keysym::sym
是一个SDL_Keycode
值。如您在lookup table中所见,这些键码在可能的情况下仅对应于ASCII值。检查它是否在0x20
和0x7f
(包括)之间是一种不错的检测方法。
您还可以使用SDL_GetKeyName
来获取密钥的名称作为字符串。
请注意,不考虑Shift等修饰符。我认为可以,因为您要求检测按键,而不是键入的字符。否则,SDL_TextInputEvent
可能更接近您的需求。