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  }