;; this file: ;; https://dataswamp.org/~incal/common-lisp/general-base/controller.lisp (require :sdl2) (defun controllers-init () (let ((controllers ()) (haptic ()) ) (loop :for i :upto (1- (sdl2:joystick-count)) :do (when (sdl2:game-controller-p i) (let*((gctrl (sdl2:game-controller-open i)) (joy (sdl2:game-controller-get-joystick gctrl)) ) (setf controllers (acons i gctrl controllers)) (when (sdl2:joystick-is-haptic-p joy) (let ((h (sdl2:haptic-open-from-joystick joy))) (setf haptic (acons i h haptic)) (sdl2:rumble-init h) ))))) (list controllers haptic) )) (defun controllers-deinit (controllers haptic) (loop :for (i . ctrler) :in controllers :do (sdl2:game-controller-close ctrler) (sdl2:haptic-close (cdr (assoc i haptic))) ))