(use-modules (sdl2) (sdl2 events) (sdl2 video) (sdl2 input game-controller) (sdl2 input joystick)) (sdl-init) (if (not (game-controller-index? 0)) (begin (display "sorry, there are no controllers available!\n") (exit 1)) (display "connecting to controller 0\n")) (define controller (open-game-controller 0)) (define window (make-window #:opengl? #t)) (define running? #t) (define last-power-check 0) (while running? (let ((time (sdl-ticks))) (when (and (zero? (modulo time 2000)) (not (= time last-power-check))) (set! last-power-check time) (display "controller power level: ") (display (joystick-power-level (game-controller-joystick controller))) (newline))) (let ((event (poll-event))) (when event (cond ((quit-event? event) (display "bye!\n") (set! running? #f)) ((controller-device-event? event) (display "controller ") (display (controller-device-event-which event)) (display " ") (display (controller-device-event-action event)) (newline)) ((controller-button-event? event) (display (if (controller-button-event-pressed? event) "pressed" "released")) (display " button ") (display (controller-button-event-button event)) (display " on controller ") (display (controller-button-event-which event)) (newline)) ((controller-axis-event? event) (display "moved ") (display (controller-axis-event-axis event)) (display " to ") (display (controller-axis-event-value event)) (display " on controller ") (display (controller-axis-event-which event)) (newline))))))