SDL 2.0 でキーダウン イベントをポーリングしてキーを押し続けると、複数のキーダウン イベントが次々と発生します。SDL 1.2.15 を使用して同じプログラムを実行しようとすると (SDL 1.2.15 は SDL_Window をサポートしていないため、小さな変更を加えて)、この問題は発生しません。keydown イベントは、想定どおりに 1 回だけ発生します。別のコンピューターでプログラムを実行して、コンピューター固有の問題ではないことを確認しました。
関連するコードは次のとおりです。
#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;
}