SDL 2.0键盘输入问题

当我尝试在SDL 2.0中轮询keydown事件并按住某个键时,我会一个接一个地获得多个keydown事件.当我尝试使用SDL 1.2.15运行相同的程序时(由于SDL 1.2.15不支持SDL_Window而进行了微小的更改),我没有这个问题. keydown事件只发生一次,就像它应该的那样.我甚至尝试在另一台计算机上执行该程序,以确保它不是计算机特定的问题.

相关代码如下:

#include <iostream>
#include <SDL.h>
using namespace std;

SDL_Event event;
SDL_Window* screen = NULL;
int main(int argc, char* args[])
{
    if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
    {
        cout << "ERROR INIT";
        return 0;
    }
    screen = SDL_CreateWindow("My Game Window",
                          SDL_WINDOWPOS_UNDEFINED,
                          SDL_WINDOWPOS_UNDEFINED,
                          640, 480,
                          SDL_WINDOW_OPENGL);


    bool quit = false;
    while(!quit)
    {
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_KEYDOWN)
            {
                cout << "KEY PRESSED!" << endl;
            }
        }
    }
    return 0;
}

最佳答案 忽略event.key.repeat!= 0的SDL_KEYDOWN事件.

点赞