首页 文章

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

提问于
浏览
1

所以我有以下代码来监听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 ...几乎任何键,除了左控制键,程序将立即退出 .
But when I press the left control key, the program doesn't exit until I release the key.

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

Is there any way to disable this strange behavior for the left-control key?

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

1 回答

  • 1

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

相关问题