gpt4 book ai didi

c++ - 在 SDL 和 C++ 中处理关键事件

转载 作者:太空狗 更新时间:2023-10-29 20:46:40 25 4
gpt4 key购买 nike

我正在将程序从 GLUT 迁移到 SDL。在我当前的程序中,按下 a 键会产生与按下 A 键不同的响应。这在 GLUT 中非常简单,因为键盘函数回调传入按下的键的 ASCII 值。

void keyPressedFn(unsigned char key, int x, int y){
switch(key){
case 'a':
// do work for a
break;
case 'A':
// do work for A
break;
}
}

我正在努力在 SDL 中复制类似的功能,因为无论是否同时按下 SHIFT 或 CAPS LOCK,按下 a 键都会产生相同的响应。

是否有一种简单的方法可以在 SDL 中复制上述功能?

编辑:在上面的示例中,我只展示了如何处理一个键,但在实践中,我将有一个包含大约 15 个键的列表,如果切换键也被按下。

最佳答案

检查当您收到按键事件时出现的键盘修饰符。例如:

while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_KEYDOWN:
if(event.key.keysym.sym == SDLK_a)
{
if(event.key.keysym.mod & KMOD_SHIFT)
{
// Handle 'A'
}
else
{
// Handle 'a'
}
}
break;

...

}
}

关于c++ - 在 SDL 和 C++ 中处理关键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com