释放密钥时会触发SDL左控制keydown事件

时间:2011-08-08 21:10:32

标签: c events sdl keydown

所以我有以下代码来监听keydown事件,然后在收到一个事件后立即退出:

int main(int argc, char** argv) {
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_DOUBLEBUF);
    SDL_Event _event;
    while (1) {
        while (SDL_PollEvent(&_event)) {
            if (_event.type == SDL_KEYDOWN) {
                return 0;
            }
        }
        SDL_GL_SwapBuffers();
    }
}

当我运行它时,我可以按任意箭头键,字母,数字,F1-F12 ...除了左控制键之外几乎任何键,程序将立即退出。
但是当我按左控制键时,程序不会退出,直到我释放键。

虽然示例没有显示,但在按住左控制时按下另一个键(例如ctrl + s)会导致丢失的控制keydown事件被触发(以及第二个表示's'的事件被压了。)

有没有办法为左控制键禁用这种奇怪的行为?

顺便说一句,这是在Windows上使用mingw。我没有使用任何其他编译器/操作系统测试此行为。

1 个答案:

答案 0 :(得分:1)

事实证明,我忘了将sdl.dll放入与我的可执行文件相同的目录中。它正在加载一些恰好在路径环境变量上的其他sdl.dll。我将与我编译的版本(1.2.14)匹配的sdl.dll放入我的应用程序目录中,现在它工作正常。