diff options
| author | Drew DeVault <sir@cmpwn.com> | 2021-12-09 16:46:37 +0100 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2021-12-09 16:46:37 +0100 |
| commit | 81bac10cd7c26cf1ca1c0fcb9ee3dcccd7710f22 (patch) | |
| tree | 649b0c5e3977041def1245d61ada75036410f809 /sdl2/gamecontroller.ha | |
| parent | timer: correct naming convention (diff) | |
| download | hare-chip8-81bac10cd7c26cf1ca1c0fcb9ee3dcccd7710f22.tar.gz | |
Initial gamecontroller support
Diffstat (limited to 'sdl2/gamecontroller.ha')
| -rw-r--r-- | sdl2/gamecontroller.ha | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/sdl2/gamecontroller.ha b/sdl2/gamecontroller.ha new file mode 100644 index 0000000..3b752e1 --- /dev/null +++ b/sdl2/gamecontroller.ha @@ -0,0 +1,43 @@ +// TODO: Flesh me out + +// The gamecontroller structure used to identify an SDL game controller. +// (Opaque) +export type gamecontroller = void; + +// The list of axes available from a controller +// +// Thumbstick axis values range from [[JOYSTICK_AXIS_MIN]] to +// [[JOYSTICK_AXIS_MAX]], and are centered within ~8000 of zero, though advanced +// UI will allow users to set or autodetect the dead zone, which varies between +// controllers. +// +// Trigger axis values range from 0 to [[JOYSTICK_AXIS_MAX]]. +export type controller_axis = enum u8 { + LEFTX, + LEFTY, + RIGHTX, + RIGHTY, + TRIGGERLEFT, + TRIGGERRIGHT, + INVALID = 255, +}; + +// Check if the given joystick is supported by the game controller interface. +// +// 'joystick_index' is the same as the 'device_index' passed to +// [[joystick_open]]. +// +// Returns SDL_TRUE if the given joystick is supported by the game controller +// interface, SDL_FALSE if it isn't or it's an invalid index. +export @symbol("SDL_IsGameController") fn is_game_controller( + joystick_index: int) bool; + +// Get the SDL_GameController associated with an instance id. +// +// Returns a [[controller]] on success or NULL on failure. +export @symbol("SDL_GameControllerOpen") fn game_controller_open( + joystick_index: int) *gamecontroller; + +// Close a game controller previously opened with [[game_controller_open]]. +export @symbol("SDL_GameControllerClose") fn game_controller_close( + gamecontroller: *gamecontroller) void; |
