c++ - 如何在没有重复情况的情况下检测 SDL2 中按下了哪个键?
问题描述
我需要在 SDL 窗口中创建一个输入框。
由于没有功能,我将制作一个基本输入框,但我找不到如何检测 SDL 中按下了哪个键。
使用下面的这段代码,我可以在点击时打印,'A'
但我认为为每个字符制作这个代码会非常重复。如何检测按下了哪个键?
case: SDL_KEYDOWN:
switch (event.key.keysym.sym) {
case SDLK_a:
cout << "You Clicked \'A\'" << endl;
break;
}
解决方案
SDL_Keysym::sym
是一个SDL_Keycode
值。正如您在查找表中看到的那样,这些键码尽可能地对应于 ASCII 值。检查它是否在0x20
和0x7f
(包括)之间应该是一种很好的检测方法。
您还可以使用SDL_GetKeyName
以字符串形式获取键的名称。
请注意,不考虑 Shift 等修饰符。我认为这没关系,因为您要求检测按键,而不是输入的字符。否则,SDL_TextInputEvent
可能更接近您的需要。
推荐阅读
- .net - .Net ListView 似乎忽略了列设置
- php - 如何使用 PHP 从 VueJS 发布数据?
- python - Python 中的 Json 文件 - 输出摘要
- python - 函数中定义的变量不能被另一个函数调用?杰通
- javascript - 如何使用 jsdoc 记录解构变量
- amazon-web-services - Alexa“无法达到要求的技能”
- phpstorm - 如何在 PhpStorm 中最大化创建新项目的窗口
- hyperledger-fabric - Hyperledger Composer REST API 身份验证
- python - 在 Python 中的 format() 中应该如何传递变量?
- jestjs - 为什么不需要开玩笑?