code.witches.io/go/sdl2@v0.1.1/controller.go (about) 1 package sdl 2 3 // #include <SDL2/SDL_gamecontroller.h> 4 import "C" 5 import ( 6 "unsafe" 7 ) 8 9 type GameController = C.SDL_GameController 10 11 func GameControllerEventState(state int) int { 12 return int(C.SDL_GameControllerEventState(C.int(state))) 13 } 14 15 func GameControllerNumMappings() int { 16 return int(C.SDL_GameControllerNumMappings()) 17 } 18 19 func GameControllerMappingForIndex(mappingIndex int) string { 20 str := C.SDL_GameControllerMappingForIndex(C.int(mappingIndex)) 21 if str == nil { 22 return "" 23 } 24 defer C.SDL_free(unsafe.Pointer(str)) 25 return C.GoString(str) 26 } 27 28 func GameControllerMapping(gameController *GameController) (string, error) { 29 str := C.SDL_GameControllerMapping(gameController) 30 if str == nil { 31 return "", GetError() 32 } 33 defer C.SDL_free(unsafe.Pointer(str)) 34 return C.GoString(str), nil 35 } 36 37 func IsGameController(joystickIndex int) bool { 38 return C.SDL_IsGameController(C.int(joystickIndex)) == C.SDL_TRUE 39 } 40 41 func GameControllerOpen(joystickIndex int) (*GameController, error) { 42 ptr := C.SDL_GameControllerOpen(C.int(joystickIndex)) 43 if ptr == nil { 44 return nil, GetError() 45 } 46 return (*GameController)(unsafe.Pointer(ptr)), nil 47 } 48 49 func GameControllerClose(controller *GameController) { 50 C.SDL_GameControllerClose(controller) 51 } 52 53 func GameControllerFromInstanceID(joyID JoystickID) (*GameController, error) { 54 ptr := C.SDL_GameControllerFromInstanceID((C.SDL_JoystickID)(joyID)) 55 if ptr == nil { 56 return nil, GetError() 57 } 58 return (*GameController)(unsafe.Pointer(ptr)), nil 59 } 60 61 func GameControllerHasSensor(controller *GameController, typ SensorType) bool { 62 return C.SDL_GameControllerHasSensor(controller, (C.SDL_SensorType)(typ)) == C.SDL_TRUE 63 } 64 65 func GameControllerSetSensorEnabled(controller *GameController, typ SensorType, enabled bool) error { 66 _enabled := C.SDL_FALSE 67 if enabled { 68 _enabled = C.SDL_TRUE 69 } 70 if C.SDL_GameControllerSetSensorEnabled(controller, (C.SDL_SensorType)(typ), (C.SDL_bool)(_enabled)) != 0 { 71 return GetError() 72 } 73 return nil 74 } 75 76 func GameControllerIsSensorEnabled(controller *GameController, typ SensorType) bool { 77 return C.SDL_GameControllerIsSensorEnabled(controller, (C.SDL_SensorType)(typ)) == C.SDL_TRUE 78 }