Событие нажатия левой кнопки управления SDL запускается при отпускании клавиши - PullRequest
1 голос
/ 09 августа 2011

Итак, у меня есть следующий код, который прослушивает событие нажатия клавиш, а затем завершает работу, как только получает его:

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. Я не проверял это поведение с другими компиляторами / операционными системами.

1 Ответ

1 голос
/ 09 августа 2011

Получается, что я забыл поместить sdl.dll в тот же каталог, что и мой исполняемый файл.Он загружал какой-то другой sdl.dll, который оказался в переменной окружения path.Я поместил файл sdl.dll, который соответствовал версии, которую я компилировал (1.2.14), в каталог моего приложения, и теперь он работает нормально.

...