summaryrefslogtreecommitdiff
path: root/sdl2/input/game-controller.scm
diff options
context:
space:
mode:
Diffstat (limited to 'sdl2/input/game-controller.scm')
-rw-r--r--sdl2/input/game-controller.scm20
1 files changed, 19 insertions, 1 deletions
diff --git a/sdl2/input/game-controller.scm b/sdl2/input/game-controller.scm
index 66441a9..120cc53 100644
--- a/sdl2/input/game-controller.scm
+++ b/sdl2/input/game-controller.scm
@@ -30,7 +30,8 @@
#:use-module (system foreign)
#:use-module ((sdl2 bindings) #:prefix ffi:)
#:use-module (sdl2)
- #:export (open-game-controller
+ #:export (load-game-controller-mappings!
+ open-game-controller
close-game-controller
game-controller?
game-controller-attached?
@@ -60,6 +61,23 @@
(define wrap-joystick (@@ (sdl2 input joystick) wrap-joystick))
+(define (load-game-controller-mappings! file)
+ "Load game controller mappings from FILE and return the number of
+mappings added this way.
+
+See
+https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
+for a community maintained controller mapping file."
+ (let ((count (ffi:sdl-game-controller-add-mappings-from-rw
+ (ffi:sdl-rw-from-file (string->pointer file)
+ (string->pointer "rb"))
+ 1)))
+ (if (= count -1)
+ (sdl-error "load-game-controller-mappings!"
+ (string-append "failed to load game controller mappings from file "
+ file))
+ count)))
+
(define (open-game-controller joystick-index)
"Return a game controller object for the physical joystick device
associated with ."