# Show several gamepad inputs using the Python bindings for libSDL3.

import sdl3
import ctypes

sdl3.SDL_Init(sdl3.SDL_INIT_GAMEPAD)

if not sdl3.SDL_HasGamepad():
    print("no gamepad found.")

else:
    count = ctypes.c_int()
    pads = sdl3.SDL_GetGamepads(count)
    controller = sdl3.SDL_OpenGamepad(pads[0])

    try:
        while True:
            sdl3.SDL_UpdateGamepads()
            # for the axis identifiers, see https://wiki.libsdl.org/SDL3/SDL_GamepadAxis
            lx = sdl3.SDL_GetGamepadAxis(controller, sdl3.SDL_GAMEPAD_AXIS_LEFTX)
            ly = sdl3.SDL_GetGamepadAxis(controller, sdl3.SDL_GAMEPAD_AXIS_LEFTY)

            # button identifiers: https://wiki.libsdl.org/SDL3/SDL_GamepadButton
            lt = sdl3.SDL_GetGamepadButton(controller, sdl3.SDL_GAMEPAD_BUTTON_LEFT_SHOULDER)

            print("left stick:", lx, ly, "left button:", lt)

    except KeyboardInterrupt:
        print("User interrupt...")

sdl3.SDL_Quit()
