allegro_sys/
joystick.rs

1// Copyright (c) 2014 by SiegeLord
2//
3// All rights reserved. Distributed under ZLib. For full terms see the file LICENSE.
4
5use crate::events::ALLEGRO_EVENT_SOURCE;
6#[cfg(all(feature = "unstable", allegro_5_2_11))]
7use crate::file::ALLEGRO_FILE;
8
9use allegro_util::c_bool;
10use libc::*;
11
12allegro_util::opaque!(ALLEGRO_JOYSTICK);
13
14#[repr(C)]
15#[derive(Copy, Clone)]
16pub struct ALLEGRO_JOYSTICK_STATE
17{
18	pub stick: [Stick; 8],
19	pub button: [c_int; 32],
20}
21
22#[repr(C)]
23#[derive(Copy, Clone)]
24pub struct Stick
25{
26	pub axis: [c_float; 3],
27}
28
29pub const ALLEGRO_JOYFLAG_DIGITAL: c_int = 1;
30pub const ALLEGRO_JOYFLAG_ANALOGUE: c_int = 2;
31
32#[cfg(all(feature = "unstable", allegro_5_2_11))]
33pub const ALLEGRO_GAMEPAD_BUTTON_A: c_int = 0;
34#[cfg(all(feature = "unstable", allegro_5_2_11))]
35pub const ALLEGRO_GAMEPAD_BUTTON_B: c_int = 1;
36#[cfg(all(feature = "unstable", allegro_5_2_11))]
37pub const ALLEGRO_GAMEPAD_BUTTON_X: c_int = 2;
38#[cfg(all(feature = "unstable", allegro_5_2_11))]
39pub const ALLEGRO_GAMEPAD_BUTTON_Y: c_int = 3;
40#[cfg(all(feature = "unstable", allegro_5_2_11))]
41pub const ALLEGRO_GAMEPAD_BUTTON_LEFT_SHOULDER: c_int = 4;
42#[cfg(all(feature = "unstable", allegro_5_2_11))]
43pub const ALLEGRO_GAMEPAD_BUTTON_RIGHT_SHOULDER: c_int = 5;
44#[cfg(all(feature = "unstable", allegro_5_2_11))]
45pub const ALLEGRO_GAMEPAD_BUTTON_BACK: c_int = 6;
46#[cfg(all(feature = "unstable", allegro_5_2_11))]
47pub const ALLEGRO_GAMEPAD_BUTTON_START: c_int = 7;
48#[cfg(all(feature = "unstable", allegro_5_2_11))]
49pub const ALLEGRO_GAMEPAD_BUTTON_GUIDE: c_int = 8;
50#[cfg(all(feature = "unstable", allegro_5_2_11))]
51pub const ALLEGRO_GAMEPAD_BUTTON_LEFT_THUMB: c_int = 9;
52#[cfg(all(feature = "unstable", allegro_5_2_11))]
53pub const ALLEGRO_GAMEPAD_BUTTON_RIGHT_THUMB: c_int = 10;
54
55#[cfg(all(feature = "unstable", allegro_5_2_11))]
56pub const ALLEGRO_GAMEPAD_STICK_DPAD: c_int = 0;
57#[cfg(all(feature = "unstable", allegro_5_2_11))]
58pub const ALLEGRO_GAMEPAD_STICK_LEFT_THUMB: c_int = 1;
59#[cfg(all(feature = "unstable", allegro_5_2_11))]
60pub const ALLEGRO_GAMEPAD_STICK_RIGHT_THUMB: c_int = 2;
61#[cfg(all(feature = "unstable", allegro_5_2_11))]
62pub const ALLEGRO_GAMEPAD_STICK_LEFT_TRIGGER: c_int = 3;
63#[cfg(all(feature = "unstable", allegro_5_2_11))]
64pub const ALLEGRO_GAMEPAD_STICK_RIGHT_TRIGGER: c_int = 4;
65
66#[cfg(all(feature = "unstable", allegro_5_2_11))]
67pub const ALLEGRO_JOYSTICK_TYPE_UNKNOWN: c_int = 0;
68#[cfg(all(feature = "unstable", allegro_5_2_11))]
69pub const ALLEGRO_JOYSTICK_TYPE_GAMEPAD: c_int = 1;
70
71#[cfg(all(feature = "unstable", allegro_5_2_11))]
72#[derive(Copy, Clone)]
73#[repr(C)]
74#[derive(Debug)]
75pub struct ALLEGRO_JOYSTICK_GUID
76{
77	pub val: [u8; 16],
78}
79
80unsafe extern "C" {
81	pub fn al_install_joystick() -> c_bool;
82	pub fn al_uninstall_joystick();
83	pub fn al_is_joystick_installed() -> c_bool;
84	pub fn al_reconfigure_joysticks() -> c_bool;
85	pub fn al_get_num_joysticks() -> c_int;
86	pub fn al_get_joystick(joyn: c_int) -> *mut ALLEGRO_JOYSTICK;
87	pub fn al_release_joystick(arg1: *mut ALLEGRO_JOYSTICK);
88	pub fn al_get_joystick_active(arg1: *mut ALLEGRO_JOYSTICK) -> c_bool;
89	pub fn al_get_joystick_name(arg1: *mut ALLEGRO_JOYSTICK) -> *const c_char;
90	pub fn al_get_joystick_num_sticks(arg1: *mut ALLEGRO_JOYSTICK) -> c_int;
91	pub fn al_get_joystick_stick_flags(arg1: *mut ALLEGRO_JOYSTICK, stick: c_int) -> c_int;
92	pub fn al_get_joystick_stick_name(arg1: *mut ALLEGRO_JOYSTICK, stick: c_int) -> *const c_char;
93	pub fn al_get_joystick_num_axes(arg1: *mut ALLEGRO_JOYSTICK, stick: c_int) -> c_int;
94	pub fn al_get_joystick_axis_name(
95		arg1: *mut ALLEGRO_JOYSTICK, stick: c_int, axis: c_int,
96	) -> *const c_char;
97	pub fn al_get_joystick_num_buttons(arg1: *mut ALLEGRO_JOYSTICK) -> c_int;
98	pub fn al_get_joystick_button_name(
99		arg1: *mut ALLEGRO_JOYSTICK, buttonn: c_int,
100	) -> *const c_char;
101	pub fn al_get_joystick_state(
102		arg1: *mut ALLEGRO_JOYSTICK, ret_state: *mut ALLEGRO_JOYSTICK_STATE,
103	);
104	pub fn al_get_joystick_event_source() -> *mut ALLEGRO_EVENT_SOURCE;
105}
106
107#[cfg(all(feature = "unstable", allegro_5_2_11))]
108unsafe extern "C" {
109	pub fn al_get_joystick_guid(joy: *mut ALLEGRO_JOYSTICK) -> ALLEGRO_JOYSTICK_GUID;
110	pub fn al_get_joystick_type(joy: *mut ALLEGRO_JOYSTICK) -> c_int;
111	pub fn al_set_joystick_mappings(filename: *const c_char) -> c_bool;
112	pub fn al_set_joystick_mappings_f(file: *mut ALLEGRO_FILE) -> c_bool;
113}