sig
  exception SDLjoystick_exception of string
  type t
  val num_joysticks : unit -> int
  val name : int -> string
  val open_joystick : int -> Sdljoystick.t
  val opened : int -> bool
  val index : Sdljoystick.t -> int
  val num_axes : Sdljoystick.t -> int
  val num_balls : Sdljoystick.t -> int
  val num_hats : Sdljoystick.t -> int
  val num_buttons : Sdljoystick.t -> int
  val update : Sdljoystick.t -> unit
  val set_event_state : bool -> unit
  val get_event_state : unit -> bool
  type hat_value = int
  val hat_centered : Sdljoystick.hat_value
  val hat_up : Sdljoystick.hat_value
  val hat_right : Sdljoystick.hat_value
  val hat_down : Sdljoystick.hat_value
  val hat_left : Sdljoystick.hat_value
  val hat_rightup : Sdljoystick.hat_value
  val hat_rightdown : Sdljoystick.hat_value
  val hat_leftup : Sdljoystick.hat_value
  val hat_leftdown : Sdljoystick.hat_value
  val get_axis : Sdljoystick.t -> int -> int
  val get_hat : Sdljoystick.t -> int -> Sdljoystick.hat_value
  val get_ball : Sdljoystick.t -> int -> int * int
  val get_button : Sdljoystick.t -> int -> bool
  val close : Sdljoystick.t -> unit
end