sig
  type bind_type
  val bind_type_none : Tsdl.Sdl.Controller.bind_type
  val bind_type_button : Tsdl.Sdl.Controller.bind_type
  val bind_type_axis : Tsdl.Sdl.Controller.bind_type
  val bind_type_hat : Tsdl.Sdl.Controller.bind_type
  type axis
  val axis_invalid : Tsdl.Sdl.Controller.axis
  val axis_left_x : Tsdl.Sdl.Controller.axis
  val axis_left_y : Tsdl.Sdl.Controller.axis
  val axis_right_x : Tsdl.Sdl.Controller.axis
  val axis_right_y : Tsdl.Sdl.Controller.axis
  val axis_trigger_left : Tsdl.Sdl.Controller.axis
  val axis_trigger_right : Tsdl.Sdl.Controller.axis
  val axis_max : Tsdl.Sdl.Controller.axis
  type button
  val button_invalid : Tsdl.Sdl.Controller.button
  val button_a : Tsdl.Sdl.Controller.button
  val button_b : Tsdl.Sdl.Controller.button
  val button_x : Tsdl.Sdl.Controller.button
  val button_y : Tsdl.Sdl.Controller.button
  val button_back : Tsdl.Sdl.Controller.button
  val button_guide : Tsdl.Sdl.Controller.button
  val button_start : Tsdl.Sdl.Controller.button
  val button_left_stick : Tsdl.Sdl.Controller.button
  val button_right_stick : Tsdl.Sdl.Controller.button
  val button_left_shoulder : Tsdl.Sdl.Controller.button
  val button_right_shoulder : Tsdl.Sdl.Controller.button
  val button_dpad_up : Tsdl.Sdl.Controller.button
  val button_dpad_down : Tsdl.Sdl.Controller.button
  val button_dpad_left : Tsdl.Sdl.Controller.button
  val button_dpad_right : Tsdl.Sdl.Controller.button
  val button_max : Tsdl.Sdl.Controller.button
  type button_bind
  val bind_type :
    Tsdl.Sdl.Controller.button_bind -> Tsdl.Sdl.Controller.bind_type
  val bind_button_value : Tsdl.Sdl.Controller.button_bind -> int
  val bind_axis_value : Tsdl.Sdl.Controller.button_bind -> int
  val bind_hat_value : Tsdl.Sdl.Controller.button_bind -> int * int
end