释放钥匙时触发SDL left control keydown事件

释放钥匙时触发SDL left control keydown事件,c,events,sdl,keydown,C,Events,Sdl,Keydown,因此,我有以下代码侦听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(&a

因此,我有以下代码侦听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。我没有在任何其他编译器/操作系统上测试过这种行为。

因此,我忘记将sdl.dll与可执行文件放在同一个目录中。它正在加载另一个sdl.dll,恰好位于path环境变量上。我将sdl.dll(它与我编译时使用的版本(1.2.14)相匹配)放入我的应用程序目录中,现在可以正常工作了

结果是,我忘了将sdl.dll放入与可执行文件相同的目录中。它正在加载另一个sdl.dll,恰好位于path环境变量上。我将sdl.dll(它与我编译时使用的版本(1.2.14)相匹配)放入我的应用程序目录中,现在可以正常工作了

你试过了吗?@Banthar我试过了,但它所做的只是诱捕老鼠。你试过了吗?@Banthar我试过了,但它所做的只是诱捕老鼠。