4

SDL 2 で一度に複数のキーを検出する方法を検索しているときに、SDL 1.x の次のコードに出くわしました。

//author: Rob Loach
// Global key buffer
bool keys[256];

while(SDL_PollEvent(&mainEvent))
{
   if(mainEvent.type == SDL_KEYDOWN)
   {
       keys[mainEvent.key.keysym.sym] = true;
   }
   else if(mainEvent.type == SDL_KEYUP)
   {
       keys[mainEvent.key.keysym.sym] = false;
   }
}

SDL2とaで実装してみましstd::array<bool, 256>Segmentation fault: 11が、upボタンでありました。

それが私がこれを見たときです: https://wiki.libsdl.org/SDLKeycodeLookup

矢印、機能、記号などを含む「特別な」キーのほとんどは、10 億単位の 10 進数表現を持っています。

単純なコードprintf("%d\n", e.key.keysym.sym);をオンにしても、上ボタンで次のようになるとします。

1073741906
Segmentation fault: 11

エラーコードに違いがある場合、私はMacを使用しています。

では、SDL 2 にはどのような解決策があるのでしょうか?

4

1 に答える 1