Перечисление jbutton SDL2?

У меня возникли проблемы с выяснением того, какие перечисления я могу/должен использовать для поддержки геймпада/джойстика SDL2. Я попытался использовать "SDL_CONTROLLER_*", но в итоге получил странные результаты. Например:

  SDL_Event e;
    while (SDL_PollEvent(&e) != 0)
    {
       if (e.type == SDL_JOYBUTTONDOWN)
       {
            printf("%d\n", e.jbutton.button);
            if (e.jbutton.button == SDL_CONTROLLER_BUTTON_B)
            {
                printf("HI\n");
            }
        }
    }

У меня был этот код в основном цикле моей функции, и второй оператор печати срабатывает, когда я нажимаю кнопку DOWN на крестовине, а не когда я нажимаю кнопку B. Я использую контроллер XBOX 360, и он не доставляет мне никаких проблем, когда я играю в другие игры. Я даже использую правильное перечисление?


person SpikeMF    schedule 07.07.2014    source источник


Ответы (1)


Контроллер имеет другую обработку ввода, чем джойстик.

Вам нужно использовать события контроллера:

SDL_CONTROLLERAXISMOTION: controller axis motion
SDL_CONTROLLERBUTTONDOWN: controller button pressed
SDL_CONTROLLERBUTTONUP: controller button released
SDL_CONTROLLERDEVICEADDED: controller connected
SDL_CONTROLLERDEVICEREMOVED: controller disconnected
SDL_CONTROLLERDEVICEREMAPPED: controller mapping updated

Как вы можете видеть на этой странице https://wiki.libsdl.org/SDL_EventType.

person jofra    schedule 07.07.2014