Итак, у меня есть следующий код, который прослушивает событие нажатия клавиш, а затем завершает работу, как только получает его:
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) приводит к запуску события отсутствующего нажатия клавиши управления (наряду со вторым событием, которое говорит «s»). был нажат).
Есть ли способ отключить это странное поведение для левой клавиши управления?
Кстати, это в Windows, используя mingw. Я не проверял это поведение с другими компиляторами / операционными системами.