sig
  type button =
      Button_Left
    | Button_Middle
    | Button_Right
    | Button_X1
    | Button_X2
    | Button_X3
    | Button_X4
    | Button_X5
  type pos = int * int
  external get_state : unit -> Sdlmouse.pos * Sdlmouse.button list
    = "caml_SDL_GetMouseState"
  external get_buttons : unit -> Sdlmouse.button list
    = "caml_SDL_GetMouseButtons"
  external get_pos : unit -> Sdlmouse.pos = "caml_SDL_GetMousePos"
  external warp_in_window : Sdlwindow.t -> x:int -> y:int -> unit
    = "caml_SDL_WarpMouseInWindow"
  external set_relative_mode : enabled:bool -> unit
    = "caml_SDL_SetRelativeMouseMode"
  external show_cursor : toggle:bool -> unit = "caml_SDL_ShowCursor"
  external cursor_is_shown : unit -> bool = "caml_SDL_ShowCursor_Query"
  val to_string : Sdlmouse.button -> string
  val of_string : string -> Sdlmouse.button
end