sig   module Sdl :     sig       type uint8 = int       type int16 = int       type uint16 = int       type uint32 = int32       type uint64 = int64       type ('a, 'b) bigarray = ('a, 'b, Bigarray.c_layout) Bigarray.Array1.t       type 'a result = ('a, [ `Msg of string ]) Result.result       module Init :         sig           type t           val ( + ) : Tsdl.Sdl.Init.t -> Tsdl.Sdl.Init.t -> Tsdl.Sdl.Init.t           val test : Tsdl.Sdl.Init.t -> Tsdl.Sdl.Init.t -> bool           val eq : Tsdl.Sdl.Init.t -> Tsdl.Sdl.Init.t -> bool           val timer : Tsdl.Sdl.Init.t           val audio : Tsdl.Sdl.Init.t           val video : Tsdl.Sdl.Init.t           val joystick : Tsdl.Sdl.Init.t           val haptic : Tsdl.Sdl.Init.t           val gamecontroller : Tsdl.Sdl.Init.t           val events : Tsdl.Sdl.Init.t           val everything : Tsdl.Sdl.Init.t           val noparachute : Tsdl.Sdl.Init.t         end       val init : Tsdl.Sdl.Init.t -> unit Tsdl.Sdl.result       val init_sub_system : Tsdl.Sdl.Init.t -> unit Tsdl.Sdl.result       val quit : unit -> unit       val quit_sub_system : Tsdl.Sdl.Init.t -> unit       val was_init : Tsdl.Sdl.Init.t option -> Tsdl.Sdl.Init.t       module Hint :         sig           type t = string           val framebuffer_acceleration : Tsdl.Sdl.Hint.t           val idle_timer_disabled : Tsdl.Sdl.Hint.t           val orientations : Tsdl.Sdl.Hint.t           val render_driver : Tsdl.Sdl.Hint.t           val render_opengl_shaders : Tsdl.Sdl.Hint.t           val render_scale_quality : Tsdl.Sdl.Hint.t           val render_vsync : Tsdl.Sdl.Hint.t           type priority           val default : Tsdl.Sdl.Hint.priority           val normal : Tsdl.Sdl.Hint.priority           val override : Tsdl.Sdl.Hint.priority         end       val clear_hints : unit -> unit       val get_hint : Tsdl.Sdl.Hint.t -> string option       val set_hint : Tsdl.Sdl.Hint.t -> string -> bool       val set_hint_with_priority :         Tsdl.Sdl.Hint.t -> string -> Tsdl.Sdl.Hint.priority -> bool       val clear_error : unit -> unit       val get_error : unit -> string       val set_error : ('b, Format.formatter, unit) Pervasives.format -> 'b       module Log :         sig           type category = int           val category_application : Tsdl.Sdl.Log.category           val category_error : Tsdl.Sdl.Log.category           val category_system : Tsdl.Sdl.Log.category           val category_audio : Tsdl.Sdl.Log.category           val category_video : Tsdl.Sdl.Log.category           val category_render : Tsdl.Sdl.Log.category           val category_input : Tsdl.Sdl.Log.category           type priority           val priority_compare :             Tsdl.Sdl.Log.priority -> Tsdl.Sdl.Log.priority -> int           val priority_verbose : Tsdl.Sdl.Log.priority           val priority_debug : Tsdl.Sdl.Log.priority           val priority_info : Tsdl.Sdl.Log.priority           val priority_warn : Tsdl.Sdl.Log.priority           val priority_error : Tsdl.Sdl.Log.priority           val priority_critical : Tsdl.Sdl.Log.priority         end       val log : ('b, Format.formatter, unit) Pervasives.format -> 'b       val log_critical :         Tsdl.Sdl.Log.category ->         ('b, Format.formatter, unit) Pervasives.format -> 'b       val log_debug :         Tsdl.Sdl.Log.category ->         ('b, Format.formatter, unit) Pervasives.format -> 'b       val log_error :         Tsdl.Sdl.Log.category ->         ('b, Format.formatter, unit) Pervasives.format -> 'b       val log_get_priority : Tsdl.Sdl.Log.category -> Tsdl.Sdl.Log.priority       val log_info :         Tsdl.Sdl.Log.category ->         ('b, Format.formatter, unit) Pervasives.format -> 'b       val log_message :         Tsdl.Sdl.Log.category ->         Tsdl.Sdl.Log.priority ->         ('b, Format.formatter, unit) Pervasives.format -> 'b       val log_reset_priorities : unit -> unit       val log_set_all_priority : Tsdl.Sdl.Log.priority -> unit       val log_set_priority :         Tsdl.Sdl.Log.category -> Tsdl.Sdl.Log.priority -> unit       val log_verbose :         Tsdl.Sdl.Log.category ->         ('b, Format.formatter, unit) Pervasives.format -> 'b       val log_warn :         Tsdl.Sdl.Log.category ->         ('b, Format.formatter, unit) Pervasives.format -> 'b       val get_version : unit -> int * int * int       val get_revision : unit -> string       val get_revision_number : unit -> int       type rw_ops       val rw_from_file : string -> string -> Tsdl.Sdl.rw_ops Tsdl.Sdl.result       val rw_close : Tsdl.Sdl.rw_ops -> unit Tsdl.Sdl.result       val unsafe_rw_ops_of_ptr : nativeint -> Tsdl.Sdl.rw_ops       val unsafe_ptr_of_rw_ops : Tsdl.Sdl.rw_ops -> nativeint       val get_base_path : unit -> string Tsdl.Sdl.result       val get_pref_path : org:string -> app:string -> string Tsdl.Sdl.result       type window       val unsafe_window_of_ptr : nativeint -> Tsdl.Sdl.window       val unsafe_ptr_of_window : Tsdl.Sdl.window -> nativeint       type color       module Color :         sig           val create :             r:Tsdl.Sdl.uint8 ->             g:Tsdl.Sdl.uint8 ->             b:Tsdl.Sdl.uint8 -> a:Tsdl.Sdl.uint8 -> Tsdl.Sdl.color           val r : Tsdl.Sdl.color -> Tsdl.Sdl.uint8           val g : Tsdl.Sdl.color -> Tsdl.Sdl.uint8           val b : Tsdl.Sdl.color -> Tsdl.Sdl.uint8           val a : Tsdl.Sdl.color -> Tsdl.Sdl.uint8           val set_r : Tsdl.Sdl.color -> Tsdl.Sdl.uint8 -> unit           val set_g : Tsdl.Sdl.color -> Tsdl.Sdl.uint8 -> unit           val set_b : Tsdl.Sdl.color -> Tsdl.Sdl.uint8 -> unit           val set_a : Tsdl.Sdl.color -> Tsdl.Sdl.uint8 -> unit         end       type point       module Point :         sig           val create : x:int -> y:int -> Tsdl.Sdl.point           val x : Tsdl.Sdl.point -> int           val y : Tsdl.Sdl.point -> int           val set_x : Tsdl.Sdl.point -> int -> unit           val set_y : Tsdl.Sdl.point -> int -> unit         end       type rect       module Rect :         sig           val create : x:int -> y:int -> w:int -> h:int -> Tsdl.Sdl.rect           val x : Tsdl.Sdl.rect -> int           val y : Tsdl.Sdl.rect -> int           val w : Tsdl.Sdl.rect -> int           val h : Tsdl.Sdl.rect -> int           val set_x : Tsdl.Sdl.rect -> int -> unit           val set_y : Tsdl.Sdl.rect -> int -> unit           val set_w : Tsdl.Sdl.rect -> int -> unit           val set_h : Tsdl.Sdl.rect -> int -> unit         end       val enclose_points :         ?clip:Tsdl.Sdl.rect -> Tsdl.Sdl.point list -> Tsdl.Sdl.rect option       val enclose_points_ba :         ?clip:Tsdl.Sdl.rect ->         (int32, Bigarray.int32_elt) Tsdl.Sdl.bigarray -> Tsdl.Sdl.rect option       val has_intersection : Tsdl.Sdl.rect -> Tsdl.Sdl.rect -> bool       val intersect_rect :         Tsdl.Sdl.rect -> Tsdl.Sdl.rect -> Tsdl.Sdl.rect option       val intersect_rect_and_line :         Tsdl.Sdl.rect ->         int -> int -> int -> int -> ((int * int) * (int * int)) option       val rect_empty : Tsdl.Sdl.rect -> bool       val rect_equals : Tsdl.Sdl.rect -> Tsdl.Sdl.rect -> bool       val union_rect : Tsdl.Sdl.rect -> Tsdl.Sdl.rect -> Tsdl.Sdl.rect       type palette       val alloc_palette : int -> Tsdl.Sdl.palette Tsdl.Sdl.result       val free_palette : Tsdl.Sdl.palette -> unit       val get_palette_ncolors : Tsdl.Sdl.palette -> int       val get_palette_colors : Tsdl.Sdl.palette -> Tsdl.Sdl.color list       val get_palette_colors_ba :         Tsdl.Sdl.palette ->         (int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray       val set_palette_colors :         Tsdl.Sdl.palette ->         Tsdl.Sdl.color list -> fst:int -> unit Tsdl.Sdl.result       val set_palette_colors_ba :         Tsdl.Sdl.palette ->         (int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray ->         fst:int -> unit Tsdl.Sdl.result       val unsafe_palette_of_ptr : nativeint -> Tsdl.Sdl.palette       val unsafe_ptr_of_palette : Tsdl.Sdl.palette -> nativeint       type gamma_ramp = (int, Bigarray.int16_unsigned_elt) Tsdl.Sdl.bigarray       val calculate_gamma_ramp : float -> Tsdl.Sdl.gamma_ramp       module Blend :         sig           type mode           val mode_none : Tsdl.Sdl.Blend.mode           val mode_blend : Tsdl.Sdl.Blend.mode           val mode_add : Tsdl.Sdl.Blend.mode           val mode_mod : Tsdl.Sdl.Blend.mode         end       module Pixel :         sig           type format_enum           val eq :             Tsdl.Sdl.Pixel.format_enum -> Tsdl.Sdl.Pixel.format_enum -> bool           val to_uint32 : Tsdl.Sdl.Pixel.format_enum -> Tsdl.Sdl.uint32           val format_unknown : Tsdl.Sdl.Pixel.format_enum           val format_index1lsb : Tsdl.Sdl.Pixel.format_enum           val format_index1msb : Tsdl.Sdl.Pixel.format_enum           val format_index4lsb : Tsdl.Sdl.Pixel.format_enum           val format_index4msb : Tsdl.Sdl.Pixel.format_enum           val format_index8 : Tsdl.Sdl.Pixel.format_enum           val format_rgb332 : Tsdl.Sdl.Pixel.format_enum           val format_rgb444 : Tsdl.Sdl.Pixel.format_enum           val format_rgb555 : Tsdl.Sdl.Pixel.format_enum           val format_bgr555 : Tsdl.Sdl.Pixel.format_enum           val format_argb4444 : Tsdl.Sdl.Pixel.format_enum           val format_rgba4444 : Tsdl.Sdl.Pixel.format_enum           val format_abgr4444 : Tsdl.Sdl.Pixel.format_enum           val format_bgra4444 : Tsdl.Sdl.Pixel.format_enum           val format_argb1555 : Tsdl.Sdl.Pixel.format_enum           val format_rgba5551 : Tsdl.Sdl.Pixel.format_enum           val format_abgr1555 : Tsdl.Sdl.Pixel.format_enum           val format_bgra5551 : Tsdl.Sdl.Pixel.format_enum           val format_rgb565 : Tsdl.Sdl.Pixel.format_enum           val format_bgr565 : Tsdl.Sdl.Pixel.format_enum           val format_rgb24 : Tsdl.Sdl.Pixel.format_enum           val format_bgr24 : Tsdl.Sdl.Pixel.format_enum           val format_rgb888 : Tsdl.Sdl.Pixel.format_enum           val format_rgbx8888 : Tsdl.Sdl.Pixel.format_enum           val format_bgr888 : Tsdl.Sdl.Pixel.format_enum           val format_bgrx8888 : Tsdl.Sdl.Pixel.format_enum           val format_argb8888 : Tsdl.Sdl.Pixel.format_enum           val format_rgba8888 : Tsdl.Sdl.Pixel.format_enum           val format_abgr8888 : Tsdl.Sdl.Pixel.format_enum           val format_bgra8888 : Tsdl.Sdl.Pixel.format_enum           val format_argb2101010 : Tsdl.Sdl.Pixel.format_enum           val format_yv12 : Tsdl.Sdl.Pixel.format_enum           val format_iyuv : Tsdl.Sdl.Pixel.format_enum           val format_yuy2 : Tsdl.Sdl.Pixel.format_enum           val format_uyvy : Tsdl.Sdl.Pixel.format_enum           val format_yvyu : Tsdl.Sdl.Pixel.format_enum         end       type pixel_format       val alloc_format :         Tsdl.Sdl.Pixel.format_enum -> Tsdl.Sdl.pixel_format Tsdl.Sdl.result       val free_format : Tsdl.Sdl.pixel_format -> unit       val get_pixel_format_name : Tsdl.Sdl.Pixel.format_enum -> string       val get_pixel_format_format :         Tsdl.Sdl.pixel_format -> Tsdl.Sdl.Pixel.format_enum       val get_pixel_format_bits_pp : Tsdl.Sdl.pixel_format -> int       val get_pixel_format_bytes_pp : Tsdl.Sdl.pixel_format -> int       val get_rgb :         Tsdl.Sdl.pixel_format ->         Tsdl.Sdl.uint32 -> Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8       val get_rgba :         Tsdl.Sdl.pixel_format ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8       val map_rgb :         Tsdl.Sdl.pixel_format ->         Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint32       val map_rgba :         Tsdl.Sdl.pixel_format ->         Tsdl.Sdl.uint8 ->         Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint32       val masks_to_pixel_format_enum :         int ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 -> Tsdl.Sdl.uint32 -> Tsdl.Sdl.Pixel.format_enum       val pixel_format_enum_to_masks :         Tsdl.Sdl.Pixel.format_enum ->         (int * Tsdl.Sdl.uint32 * Tsdl.Sdl.uint32 * Tsdl.Sdl.uint32 *          Tsdl.Sdl.uint32)         Tsdl.Sdl.result       val set_pixel_format_palette :         Tsdl.Sdl.pixel_format -> Tsdl.Sdl.palette -> unit Tsdl.Sdl.result       val unsafe_pixel_format_of_ptr : nativeint -> Tsdl.Sdl.pixel_format       val unsafe_ptr_of_pixel_format : Tsdl.Sdl.pixel_format -> nativeint       type surface       val blit_scaled :         src:Tsdl.Sdl.surface ->         Tsdl.Sdl.rect ->         dst:Tsdl.Sdl.surface -> Tsdl.Sdl.rect option -> unit Tsdl.Sdl.result       val blit_surface :         src:Tsdl.Sdl.surface ->         Tsdl.Sdl.rect option ->         dst:Tsdl.Sdl.surface -> Tsdl.Sdl.rect option -> unit Tsdl.Sdl.result       val convert_pixels :         w:int ->         h:int ->         src:Tsdl.Sdl.Pixel.format_enum ->         ('a, 'b) Tsdl.Sdl.bigarray ->         int ->         dst:Tsdl.Sdl.Pixel.format_enum ->         ('c, 'd) Tsdl.Sdl.bigarray -> int -> unit Tsdl.Sdl.result       val convert_surface :         Tsdl.Sdl.surface ->         Tsdl.Sdl.pixel_format -> Tsdl.Sdl.surface Tsdl.Sdl.result       val convert_surface_format :         Tsdl.Sdl.surface ->         Tsdl.Sdl.Pixel.format_enum -> Tsdl.Sdl.surface Tsdl.Sdl.result       val create_rgb_surface :         w:int ->         h:int ->         depth:int ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 -> Tsdl.Sdl.surface Tsdl.Sdl.result       val create_rgb_surface_from :         ('a, 'b) Tsdl.Sdl.bigarray ->         w:int ->         h:int ->         depth:int ->         pitch:int ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 ->         Tsdl.Sdl.uint32 -> Tsdl.Sdl.surface Tsdl.Sdl.result       val fill_rect :         Tsdl.Sdl.surface ->         Tsdl.Sdl.rect option -> Tsdl.Sdl.uint32 -> unit Tsdl.Sdl.result       val fill_rects :         Tsdl.Sdl.surface ->         Tsdl.Sdl.rect list -> Tsdl.Sdl.uint32 -> unit Tsdl.Sdl.result       val fill_rects_ba :         Tsdl.Sdl.surface ->         (int32, Bigarray.int32_elt) Tsdl.Sdl.bigarray ->         Tsdl.Sdl.uint32 -> unit Tsdl.Sdl.result       val free_surface : Tsdl.Sdl.surface -> unit       val get_clip_rect : Tsdl.Sdl.surface -> Tsdl.Sdl.rect       val get_color_key : Tsdl.Sdl.surface -> Tsdl.Sdl.uint32 Tsdl.Sdl.result       val get_surface_alpha_mod :         Tsdl.Sdl.surface -> Tsdl.Sdl.uint8 Tsdl.Sdl.result       val get_surface_blend_mode :         Tsdl.Sdl.surface -> Tsdl.Sdl.Blend.mode Tsdl.Sdl.result       val get_surface_color_mod :         Tsdl.Sdl.surface -> (int * int * int) Tsdl.Sdl.result       val get_surface_format_enum :         Tsdl.Sdl.surface -> Tsdl.Sdl.Pixel.format_enum       val get_surface_pitch : Tsdl.Sdl.surface -> int       val get_surface_pixels :         Tsdl.Sdl.surface ->         ('a, 'b) Bigarray.kind -> ('a, 'b) Tsdl.Sdl.bigarray       val get_surface_size : Tsdl.Sdl.surface -> int * int       val load_bmp : string -> Tsdl.Sdl.surface Tsdl.Sdl.result       val load_bmp_rw :         Tsdl.Sdl.rw_ops -> close:bool -> Tsdl.Sdl.surface Tsdl.Sdl.result       val lock_surface : Tsdl.Sdl.surface -> unit Tsdl.Sdl.result       val lower_blit :         src:Tsdl.Sdl.surface ->         Tsdl.Sdl.rect ->         dst:Tsdl.Sdl.surface -> Tsdl.Sdl.rect -> unit Tsdl.Sdl.result       val lower_blit_scaled :         src:Tsdl.Sdl.surface ->         Tsdl.Sdl.rect ->         dst:Tsdl.Sdl.surface -> Tsdl.Sdl.rect -> unit Tsdl.Sdl.result       val save_bmp : Tsdl.Sdl.surface -> string -> unit Tsdl.Sdl.result       val save_bmp_rw :         Tsdl.Sdl.surface ->         Tsdl.Sdl.rw_ops -> close:bool -> unit Tsdl.Sdl.result       val set_clip_rect : Tsdl.Sdl.surface -> Tsdl.Sdl.rect -> bool       val set_color_key :         Tsdl.Sdl.surface -> bool -> Tsdl.Sdl.uint32 -> unit Tsdl.Sdl.result       val set_surface_alpha_mod :         Tsdl.Sdl.surface -> Tsdl.Sdl.uint8 -> unit Tsdl.Sdl.result       val set_surface_blend_mode :         Tsdl.Sdl.surface -> Tsdl.Sdl.Blend.mode -> unit Tsdl.Sdl.result       val set_surface_color_mod :         Tsdl.Sdl.surface ->         Tsdl.Sdl.uint8 ->         Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint8 -> unit Tsdl.Sdl.result       val set_surface_palette :         Tsdl.Sdl.surface -> Tsdl.Sdl.palette -> unit Tsdl.Sdl.result       val set_surface_rle : Tsdl.Sdl.surface -> bool -> unit Tsdl.Sdl.result       val unlock_surface : Tsdl.Sdl.surface -> unit       val unsafe_surface_of_ptr : nativeint -> Tsdl.Sdl.surface       val unsafe_ptr_of_surface : Tsdl.Sdl.surface -> nativeint       type flip       module Flip :         sig           val ( + ) : Tsdl.Sdl.flip -> Tsdl.Sdl.flip -> Tsdl.Sdl.flip           val none : Tsdl.Sdl.flip           val horizontal : Tsdl.Sdl.flip           val vertical : Tsdl.Sdl.flip         end       type texture       val unsafe_texture_of_ptr : nativeint -> Tsdl.Sdl.texture       val unsafe_ptr_of_texture : Tsdl.Sdl.texture -> nativeint       type renderer       val unsafe_renderer_of_ptr : nativeint -> Tsdl.Sdl.renderer       val unsafe_ptr_of_renderer : Tsdl.Sdl.renderer -> nativeint       module Renderer :         sig           type flags           val ( + ) :             Tsdl.Sdl.Renderer.flags ->             Tsdl.Sdl.Renderer.flags -> Tsdl.Sdl.Renderer.flags           val test :             Tsdl.Sdl.Renderer.flags -> Tsdl.Sdl.Renderer.flags -> bool           val eq : Tsdl.Sdl.Renderer.flags -> Tsdl.Sdl.Renderer.flags -> bool           val software : Tsdl.Sdl.Renderer.flags           val accelerated : Tsdl.Sdl.Renderer.flags           val presentvsync : Tsdl.Sdl.Renderer.flags           val targettexture : Tsdl.Sdl.Renderer.flags         end       type renderer_info = {         ri_name : string;         ri_flags : Tsdl.Sdl.Renderer.flags;         ri_texture_formats : Tsdl.Sdl.Pixel.format_enum list;         ri_max_texture_width : int;         ri_max_texture_height : int;       }       val create_renderer :         ?index:int ->         ?flags:Tsdl.Sdl.Renderer.flags ->         Tsdl.Sdl.window -> Tsdl.Sdl.renderer Tsdl.Sdl.result       val create_software_renderer :         Tsdl.Sdl.surface -> Tsdl.Sdl.renderer Tsdl.Sdl.result       val destroy_renderer : Tsdl.Sdl.renderer -> unit       val get_num_render_drivers : unit -> int Tsdl.Sdl.result       val get_render_draw_blend_mode :         Tsdl.Sdl.renderer -> Tsdl.Sdl.Blend.mode Tsdl.Sdl.result       val get_render_draw_color :         Tsdl.Sdl.renderer ->         (Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8)         Tsdl.Sdl.result       val get_render_driver_info :         int -> Tsdl.Sdl.renderer_info Tsdl.Sdl.result       val get_render_target : Tsdl.Sdl.renderer -> Tsdl.Sdl.texture option       val get_renderer : Tsdl.Sdl.window -> Tsdl.Sdl.renderer Tsdl.Sdl.result       val get_renderer_info :         Tsdl.Sdl.renderer -> Tsdl.Sdl.renderer_info Tsdl.Sdl.result       val get_renderer_output_size :         Tsdl.Sdl.renderer -> (int * int) Tsdl.Sdl.result       val render_clear : Tsdl.Sdl.renderer -> unit Tsdl.Sdl.result       val render_copy :         ?src:Tsdl.Sdl.rect ->         ?dst:Tsdl.Sdl.rect ->         Tsdl.Sdl.renderer -> Tsdl.Sdl.texture -> unit Tsdl.Sdl.result       val render_copy_ex :         ?src:Tsdl.Sdl.rect ->         ?dst:Tsdl.Sdl.rect ->         Tsdl.Sdl.renderer ->         Tsdl.Sdl.texture ->         float ->         Tsdl.Sdl.point option -> Tsdl.Sdl.flip -> unit Tsdl.Sdl.result       val render_draw_line :         Tsdl.Sdl.renderer -> int -> int -> int -> int -> unit Tsdl.Sdl.result       val render_draw_lines :         Tsdl.Sdl.renderer -> Tsdl.Sdl.point list -> unit Tsdl.Sdl.result       val render_draw_lines_ba :         Tsdl.Sdl.renderer ->         (int32, Bigarray.int32_elt) Tsdl.Sdl.bigarray -> unit Tsdl.Sdl.result       val render_draw_point :         Tsdl.Sdl.renderer -> int -> int -> unit Tsdl.Sdl.result       val render_draw_points :         Tsdl.Sdl.renderer -> Tsdl.Sdl.point list -> unit Tsdl.Sdl.result       val render_draw_points_ba :         Tsdl.Sdl.renderer ->         (int32, Bigarray.int32_elt) Tsdl.Sdl.bigarray -> unit Tsdl.Sdl.result       val render_draw_rect :         Tsdl.Sdl.renderer -> Tsdl.Sdl.rect option -> unit Tsdl.Sdl.result       val render_draw_rects :         Tsdl.Sdl.renderer -> Tsdl.Sdl.rect list -> unit Tsdl.Sdl.result       val render_draw_rects_ba :         Tsdl.Sdl.renderer ->         (int32, Bigarray.int32_elt) Tsdl.Sdl.bigarray -> unit Tsdl.Sdl.result       val render_fill_rect :         Tsdl.Sdl.renderer -> Tsdl.Sdl.rect option -> unit Tsdl.Sdl.result       val render_fill_rects :         Tsdl.Sdl.renderer -> Tsdl.Sdl.rect list -> unit Tsdl.Sdl.result       val render_fill_rects_ba :         Tsdl.Sdl.renderer ->         (int32, Bigarray.int32_elt) Tsdl.Sdl.bigarray -> unit Tsdl.Sdl.result       val render_get_clip_rect : Tsdl.Sdl.renderer -> Tsdl.Sdl.rect       val render_get_logical_size : Tsdl.Sdl.renderer -> int * int       val render_get_scale : Tsdl.Sdl.renderer -> float * float       val render_get_viewport : Tsdl.Sdl.renderer -> Tsdl.Sdl.rect       val render_present : Tsdl.Sdl.renderer -> unit       val render_read_pixels :         Tsdl.Sdl.renderer ->         Tsdl.Sdl.rect option ->         Tsdl.Sdl.Pixel.format_enum option ->         ('a, 'b) Tsdl.Sdl.bigarray -> int -> unit Tsdl.Sdl.result       val render_set_clip_rect :         Tsdl.Sdl.renderer -> Tsdl.Sdl.rect option -> unit Tsdl.Sdl.result       val render_set_logical_size :         Tsdl.Sdl.renderer -> int -> int -> unit Tsdl.Sdl.result       val render_set_scale :         Tsdl.Sdl.renderer -> float -> float -> unit Tsdl.Sdl.result       val render_set_viewport :         Tsdl.Sdl.renderer -> Tsdl.Sdl.rect option -> unit Tsdl.Sdl.result       val render_target_supported : Tsdl.Sdl.renderer -> bool       val set_render_draw_blend_mode :         Tsdl.Sdl.renderer -> Tsdl.Sdl.Blend.mode -> unit Tsdl.Sdl.result       val set_render_draw_color :         Tsdl.Sdl.renderer ->         Tsdl.Sdl.uint8 ->         Tsdl.Sdl.uint8 ->         Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint8 -> unit Tsdl.Sdl.result       val set_render_target :         Tsdl.Sdl.renderer -> Tsdl.Sdl.texture option -> unit Tsdl.Sdl.result       module Texture :         sig           type access           val access_static : Tsdl.Sdl.Texture.access           val access_streaming : Tsdl.Sdl.Texture.access           val access_target : Tsdl.Sdl.Texture.access           type modulate           val modulate_none : Tsdl.Sdl.Texture.modulate           val modulate_color : Tsdl.Sdl.Texture.modulate           val modulate_alpha : Tsdl.Sdl.Texture.modulate         end       val create_texture :         Tsdl.Sdl.renderer ->         Tsdl.Sdl.Pixel.format_enum ->         Tsdl.Sdl.Texture.access ->         w:int -> h:int -> Tsdl.Sdl.texture Tsdl.Sdl.result       val create_texture_from_surface :         Tsdl.Sdl.renderer ->         Tsdl.Sdl.surface -> Tsdl.Sdl.texture Tsdl.Sdl.result       val destroy_texture : Tsdl.Sdl.texture -> unit       val get_texture_alpha_mod :         Tsdl.Sdl.texture -> Tsdl.Sdl.uint8 Tsdl.Sdl.result       val get_texture_blend_mode :         Tsdl.Sdl.texture -> Tsdl.Sdl.Blend.mode Tsdl.Sdl.result       val get_texture_color_mod :         Tsdl.Sdl.texture ->         (Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8 * Tsdl.Sdl.uint8) Tsdl.Sdl.result       val lock_texture :         Tsdl.Sdl.texture ->         Tsdl.Sdl.rect option ->         ('a, 'b) Bigarray.kind ->         (('a, 'b) Tsdl.Sdl.bigarray * int) Tsdl.Sdl.result       val query_texture :         Tsdl.Sdl.texture ->         (Tsdl.Sdl.Pixel.format_enum * Tsdl.Sdl.Texture.access * (int * int))         Tsdl.Sdl.result       val set_texture_alpha_mod :         Tsdl.Sdl.texture -> Tsdl.Sdl.uint8 -> unit Tsdl.Sdl.result       val set_texture_blend_mode :         Tsdl.Sdl.texture -> Tsdl.Sdl.Blend.mode -> unit Tsdl.Sdl.result       val set_texture_color_mod :         Tsdl.Sdl.texture ->         Tsdl.Sdl.uint8 ->         Tsdl.Sdl.uint8 -> Tsdl.Sdl.uint8 -> unit Tsdl.Sdl.result       val unlock_texture : Tsdl.Sdl.texture -> unit       val update_texture :         Tsdl.Sdl.texture ->         Tsdl.Sdl.rect option ->         ('a, 'b) Tsdl.Sdl.bigarray -> int -> unit Tsdl.Sdl.result       val update_yuv_texture :         Tsdl.Sdl.texture ->         Tsdl.Sdl.rect option ->         y:(int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray ->         int ->         u:(int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray ->         int ->         v:(int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray ->         int -> unit Tsdl.Sdl.result       val get_current_video_driver : unit -> string option       val get_num_video_drivers : unit -> int Tsdl.Sdl.result       val get_video_driver : int -> string Tsdl.Sdl.result       val video_init : string option -> unit Tsdl.Sdl.result       val video_quit : unit -> unit       type driverdata       type display_mode = {         dm_format : Tsdl.Sdl.Pixel.format_enum;         dm_w : int;         dm_h : int;         dm_refresh_rate : int option;         dm_driverdata : Tsdl.Sdl.driverdata option;       }       val get_closest_display_mode :         int -> Tsdl.Sdl.display_mode -> Tsdl.Sdl.display_mode option       val get_current_display_mode :         int -> Tsdl.Sdl.display_mode Tsdl.Sdl.result       val get_desktop_display_mode :         int -> Tsdl.Sdl.display_mode Tsdl.Sdl.result       val get_display_bounds : int -> Tsdl.Sdl.rect Tsdl.Sdl.result       val get_display_mode :         int -> int -> Tsdl.Sdl.display_mode Tsdl.Sdl.result       val get_display_name : int -> string Tsdl.Sdl.result       val get_num_display_modes : int -> int Tsdl.Sdl.result       val get_num_video_displays : unit -> int Tsdl.Sdl.result       module Window :         sig           val pos_undefined : int           val pos_centered : int           type flags           val ( + ) :             Tsdl.Sdl.Window.flags ->             Tsdl.Sdl.Window.flags -> Tsdl.Sdl.Window.flags           val test : Tsdl.Sdl.Window.flags -> Tsdl.Sdl.Window.flags -> bool           val eq : Tsdl.Sdl.Window.flags -> Tsdl.Sdl.Window.flags -> bool           val windowed : Tsdl.Sdl.Window.flags           val fullscreen : Tsdl.Sdl.Window.flags           val fullscreen_desktop : Tsdl.Sdl.Window.flags           val opengl : Tsdl.Sdl.Window.flags           val shown : Tsdl.Sdl.Window.flags           val hidden : Tsdl.Sdl.Window.flags           val borderless : Tsdl.Sdl.Window.flags           val resizable : Tsdl.Sdl.Window.flags           val minimized : Tsdl.Sdl.Window.flags           val maximized : Tsdl.Sdl.Window.flags           val input_grabbed : Tsdl.Sdl.Window.flags           val input_focus : Tsdl.Sdl.Window.flags           val mouse_focus : Tsdl.Sdl.Window.flags           val foreign : Tsdl.Sdl.Window.flags           val allow_highdpi : Tsdl.Sdl.Window.flags         end       val create_window :         string ->         ?x:int ->         ?y:int ->         w:int ->         h:int -> Tsdl.Sdl.Window.flags -> Tsdl.Sdl.window Tsdl.Sdl.result       val create_window_and_renderer :         w:int ->         h:int ->         Tsdl.Sdl.Window.flags ->         (Tsdl.Sdl.window * Tsdl.Sdl.renderer) Tsdl.Sdl.result       val destroy_window : Tsdl.Sdl.window -> unit       val get_window_brightness : Tsdl.Sdl.window -> float       val get_window_display_index : Tsdl.Sdl.window -> int Tsdl.Sdl.result       val get_window_display_mode :         Tsdl.Sdl.window -> Tsdl.Sdl.display_mode Tsdl.Sdl.result       val get_window_flags : Tsdl.Sdl.window -> Tsdl.Sdl.Window.flags       val get_window_from_id : int -> Tsdl.Sdl.window Tsdl.Sdl.result       val get_window_gamma_ramp :         Tsdl.Sdl.window ->         (Tsdl.Sdl.gamma_ramp * Tsdl.Sdl.gamma_ramp * Tsdl.Sdl.gamma_ramp)         Tsdl.Sdl.result       val get_window_grab : Tsdl.Sdl.window -> bool       val get_window_id : Tsdl.Sdl.window -> int       val get_window_maximum_size : Tsdl.Sdl.window -> int * int       val get_window_minimum_size : Tsdl.Sdl.window -> int * int       val get_window_pixel_format :         Tsdl.Sdl.window -> Tsdl.Sdl.Pixel.format_enum       val get_window_position : Tsdl.Sdl.window -> int * int       val get_window_size : Tsdl.Sdl.window -> int * int       val get_window_surface :         Tsdl.Sdl.window -> Tsdl.Sdl.surface Tsdl.Sdl.result       val get_window_title : Tsdl.Sdl.window -> string       val hide_window : Tsdl.Sdl.window -> unit       val maximize_window : Tsdl.Sdl.window -> unit       val minimize_window : Tsdl.Sdl.window -> unit       val raise_window : Tsdl.Sdl.window -> unit       val restore_window : Tsdl.Sdl.window -> unit       val set_window_bordered : Tsdl.Sdl.window -> bool -> unit       val set_window_brightness :         Tsdl.Sdl.window -> float -> unit Tsdl.Sdl.result       val set_window_display_mode :         Tsdl.Sdl.window -> Tsdl.Sdl.display_mode -> unit Tsdl.Sdl.result       val set_window_fullscreen :         Tsdl.Sdl.window -> Tsdl.Sdl.Window.flags -> unit Tsdl.Sdl.result       val set_window_gamma_ramp :         Tsdl.Sdl.window ->         Tsdl.Sdl.gamma_ramp ->         Tsdl.Sdl.gamma_ramp -> Tsdl.Sdl.gamma_ramp -> unit Tsdl.Sdl.result       val set_window_grab : Tsdl.Sdl.window -> bool -> unit       val set_window_icon : Tsdl.Sdl.window -> Tsdl.Sdl.surface -> unit       val set_window_maximum_size : Tsdl.Sdl.window -> w:int -> h:int -> unit       val set_window_minimum_size : Tsdl.Sdl.window -> w:int -> h:int -> unit       val set_window_position : Tsdl.Sdl.window -> x:int -> y:int -> unit       val set_window_size : Tsdl.Sdl.window -> w:int -> h:int -> unit       val set_window_title : Tsdl.Sdl.window -> string -> unit       val show_window : Tsdl.Sdl.window -> unit       val update_window_surface : Tsdl.Sdl.window -> unit Tsdl.Sdl.result       val update_window_surface_rects :         Tsdl.Sdl.window -> Tsdl.Sdl.rect list -> unit Tsdl.Sdl.result       val update_window_surface_rects_ba :         Tsdl.Sdl.window ->         (int32, Bigarray.int32_elt) Tsdl.Sdl.bigarray -> unit Tsdl.Sdl.result       type gl_context       val unsafe_gl_context_of_ptr : nativeint -> Tsdl.Sdl.gl_context       val unsafe_ptr_of_gl_context : Tsdl.Sdl.gl_context -> nativeint       module Gl :         sig           type context_flags = int           val context_debug_flag : Tsdl.Sdl.Gl.context_flags           val context_forward_compatible_flag : Tsdl.Sdl.Gl.context_flags           val context_robust_access_flag : Tsdl.Sdl.Gl.context_flags           val context_reset_isolation_flag : Tsdl.Sdl.Gl.context_flags           type profile = int           val context_profile_core : Tsdl.Sdl.Gl.profile           val context_profile_compatibility : Tsdl.Sdl.Gl.profile           val context_profile_es : Tsdl.Sdl.Gl.profile           type attr           val red_size : Tsdl.Sdl.Gl.attr           val green_size : Tsdl.Sdl.Gl.attr           val blue_size : Tsdl.Sdl.Gl.attr           val alpha_size : Tsdl.Sdl.Gl.attr           val buffer_size : Tsdl.Sdl.Gl.attr           val doublebuffer : Tsdl.Sdl.Gl.attr           val depth_size : Tsdl.Sdl.Gl.attr           val stencil_size : Tsdl.Sdl.Gl.attr           val accum_red_size : Tsdl.Sdl.Gl.attr           val accum_green_size : Tsdl.Sdl.Gl.attr           val accum_blue_size : Tsdl.Sdl.Gl.attr           val accum_alpha_size : Tsdl.Sdl.Gl.attr           val stereo : Tsdl.Sdl.Gl.attr           val multisamplebuffers : Tsdl.Sdl.Gl.attr           val multisamplesamples : Tsdl.Sdl.Gl.attr           val accelerated_visual : Tsdl.Sdl.Gl.attr           val context_major_version : Tsdl.Sdl.Gl.attr           val context_minor_version : Tsdl.Sdl.Gl.attr           val context_egl : Tsdl.Sdl.Gl.attr           val context_flags : Tsdl.Sdl.Gl.attr           val context_profile_mask : Tsdl.Sdl.Gl.attr           val share_with_current_context : Tsdl.Sdl.Gl.attr           val framebuffer_srgb_capable : Tsdl.Sdl.Gl.attr         end       val gl_create_context :         Tsdl.Sdl.window -> Tsdl.Sdl.gl_context Tsdl.Sdl.result       val gl_bind_texture :         Tsdl.Sdl.texture -> (float * float) Tsdl.Sdl.result       val gl_delete_context : Tsdl.Sdl.gl_context -> unit       val gl_extension_supported : string -> bool       val gl_get_attribute : Tsdl.Sdl.Gl.attr -> int Tsdl.Sdl.result       val gl_get_current_context :         unit -> Tsdl.Sdl.gl_context Tsdl.Sdl.result       val gl_get_drawable_size : Tsdl.Sdl.window -> int * int       val gl_get_swap_interval : unit -> int Tsdl.Sdl.result       val gl_make_current :         Tsdl.Sdl.window -> Tsdl.Sdl.gl_context -> unit Tsdl.Sdl.result       val gl_set_attribute : Tsdl.Sdl.Gl.attr -> int -> unit Tsdl.Sdl.result       val gl_set_swap_interval : int -> unit Tsdl.Sdl.result       val gl_swap_window : Tsdl.Sdl.window -> unit       val gl_reset_attributes : unit -> unit       val gl_unbind_texture : Tsdl.Sdl.texture -> unit Tsdl.Sdl.result       val disable_screen_saver : unit -> unit       val enable_screen_saver : unit -> unit       val is_screen_saver_enabled : unit -> bool       module Message_box :         sig           type button_flags           val button_returnkey_default : Tsdl.Sdl.Message_box.button_flags           val button_escapekey_default : Tsdl.Sdl.Message_box.button_flags           type button_data = {             button_flags : Tsdl.Sdl.Message_box.button_flags;             button_id : int;             button_text : string;           }           type flags           val error : Tsdl.Sdl.Message_box.flags           val warning : Tsdl.Sdl.Message_box.flags           val information : Tsdl.Sdl.Message_box.flags           type color = int * int * int           type color_scheme = {             color_background : Tsdl.Sdl.Message_box.color;             color_text : Tsdl.Sdl.Message_box.color;             color_button_border : Tsdl.Sdl.Message_box.color;             color_button_background : Tsdl.Sdl.Message_box.color;             color_button_selected : Tsdl.Sdl.Message_box.color;           }           type data = {             flags : Tsdl.Sdl.Message_box.flags;             window : Tsdl.Sdl.window option;             title : string;             message : string;             buttons : Tsdl.Sdl.Message_box.button_data list;             color_scheme : Tsdl.Sdl.Message_box.color_scheme option;           }         end       val show_message_box : Tsdl.Sdl.Message_box.data -> int Tsdl.Sdl.result       val show_simple_message_box :         Tsdl.Sdl.Message_box.flags ->         title:string ->         string -> Tsdl.Sdl.window option -> unit Tsdl.Sdl.result       val get_clipboard_text : unit -> string Tsdl.Sdl.result       val has_clipboard_text : unit -> bool       val set_clipboard_text : string -> unit Tsdl.Sdl.result       type button_state       val pressed : Tsdl.Sdl.button_state       val released : Tsdl.Sdl.button_state       type toggle_state       val disable : Tsdl.Sdl.toggle_state       val enable : Tsdl.Sdl.toggle_state       type scancode = int       module Scancode :         sig           val enum :             Tsdl.Sdl.scancode ->             [ `A             | `Ac_back             | `Ac_bookmarks             | `Ac_forward             | `Ac_home             | `Ac_refresh             | `Ac_search             | `Ac_stop             | `Again             | `Alterase             | `Apostrophe             | `App1             | `App2             | `Application             | `Audiomute             | `Audionext             | `Audioplay             | `Audioprev             | `Audiostop             | `B             | `Backslash             | `Backspace             | `Brightnessdown             | `Brightnessup             | `C             | `Calculator             | `Cancel             | `Capslock             | `Clear             | `Clearagain             | `Comma             | `Computer             | `Copy             | `Crsel             | `Currencysubunit             | `Currencyunit             | `Cut             | `D             | `Decimalseparator             | `Delete             | `Displayswitch             | `Down             | `E             | `Eject             | `End             | `Equals             | `Escape             | `Execute             | `Exsel             | `F             | `F1             | `F10             | `F11             | `F12             | `F13             | `F14             | `F15             | `F16             | `F17             | `F18             | `F19             | `F2             | `F20             | `F21             | `F22             | `F23             | `F24             | `F3             | `F4             | `F5             | `F6             | `F7             | `F8             | `F9             | `Find             | `G             | `Grave             | `H             | `Help             | `Home             | `I             | `Insert             | `International1             | `International2             | `International3             | `International4             | `International5             | `International6             | `International7             | `International8             | `International9             | `J             | `K             | `K0             | `K1             | `K2             | `K3             | `K4             | `K5             | `K6             | `K7             | `K8             | `K9             | `Kbdillumdown             | `Kbdillumtoggle             | `Kbdillumup             | `Kp_0             | `Kp_00             | `Kp_000             | `Kp_1             | `Kp_2             | `Kp_3             | `Kp_4             | `Kp_5             | `Kp_6             | `Kp_7             | `Kp_8             | `Kp_9             | `Kp_a             | `Kp_ampersand             | `Kp_at             | `Kp_b             | `Kp_backspace             | `Kp_binary             | `Kp_c             | `Kp_clear             | `Kp_clearentry             | `Kp_colon             | `Kp_comma             | `Kp_d             | `Kp_dblampersand             | `Kp_dblverticalbar             | `Kp_decimal             | `Kp_divide             | `Kp_e             | `Kp_enter             | `Kp_equals             | `Kp_equalsas400             | `Kp_exclam             | `Kp_f             | `Kp_greater             | `Kp_hash             | `Kp_hexadecimal             | `Kp_leftbrace             | `Kp_leftparen             | `Kp_less             | `Kp_memadd             | `Kp_memclear             | `Kp_memdivide             | `Kp_memmultiply             | `Kp_memrecall             | `Kp_memstore             | `Kp_memsubtract             | `Kp_minus             | `Kp_multiply             | `Kp_octal             | `Kp_percent             | `Kp_period             | `Kp_plus             | `Kp_plusminus             | `Kp_power             | `Kp_rightbrace             | `Kp_rightparen             | `Kp_space             | `Kp_tab             | `Kp_verticalbar             | `Kp_xor             | `L             | `Lalt             | `Lang1             | `Lang2             | `Lang3             | `Lang4             | `Lang5             | `Lang6             | `Lang7             | `Lang8             | `Lang9             | `Lctrl             | `Left             | `Leftbracket             | `Lgui             | `Lshift             | `M             | `Mail             | `Mediaselect             | `Menu             | `Minus             | `Mode             | `Mute             | `N             | `Nonusbackslash             | `Nonushash             | `Numlockclear             | `O             | `Oper             | `Out             | `P             | `Pagedown             | `Pageup             | `Paste             | `Pause             | `Period             | `Power             | `Printscreen             | `Prior             | `Q             | `R             | `Ralt             | `Rctrl             | `Return             | `Return2             | `Rgui             | `Right             | `Rightbracket             | `Rshift             | `S             | `Scrolllock             | `Select             | `Semicolon             | `Separator             | `Slash             | `Sleep             | `Space             | `Stop             | `Sysreq             | `T             | `Tab             | `Thousandsseparator             | `U             | `Undo             | `Unknown             | `Up             | `V             | `Volumedown             | `Volumeup             | `W             | `Www             | `X             | `Y             | `Z ]           val num_scancodes : int           val unknown : Tsdl.Sdl.scancode           val a : Tsdl.Sdl.scancode           val b : Tsdl.Sdl.scancode           val c : Tsdl.Sdl.scancode           val d : Tsdl.Sdl.scancode           val e : Tsdl.Sdl.scancode           val f : Tsdl.Sdl.scancode           val g : Tsdl.Sdl.scancode           val h : Tsdl.Sdl.scancode           val i : Tsdl.Sdl.scancode           val j : Tsdl.Sdl.scancode           val k : Tsdl.Sdl.scancode           val l : Tsdl.Sdl.scancode           val m : Tsdl.Sdl.scancode           val n : Tsdl.Sdl.scancode           val o : Tsdl.Sdl.scancode           val p : Tsdl.Sdl.scancode           val q : Tsdl.Sdl.scancode           val r : Tsdl.Sdl.scancode           val s : Tsdl.Sdl.scancode           val t : Tsdl.Sdl.scancode           val u : Tsdl.Sdl.scancode           val v : Tsdl.Sdl.scancode           val w : Tsdl.Sdl.scancode           val x : Tsdl.Sdl.scancode           val y : Tsdl.Sdl.scancode           val z : Tsdl.Sdl.scancode           val k1 : Tsdl.Sdl.scancode           val k2 : Tsdl.Sdl.scancode           val k3 : Tsdl.Sdl.scancode           val k4 : Tsdl.Sdl.scancode           val k5 : Tsdl.Sdl.scancode           val k6 : Tsdl.Sdl.scancode           val k7 : Tsdl.Sdl.scancode           val k8 : Tsdl.Sdl.scancode           val k9 : Tsdl.Sdl.scancode           val k0 : Tsdl.Sdl.scancode           val return : Tsdl.Sdl.scancode           val escape : Tsdl.Sdl.scancode           val backspace : Tsdl.Sdl.scancode           val tab : Tsdl.Sdl.scancode           val space : Tsdl.Sdl.scancode           val minus : Tsdl.Sdl.scancode           val equals : Tsdl.Sdl.scancode           val leftbracket : Tsdl.Sdl.scancode           val rightbracket : Tsdl.Sdl.scancode           val backslash : Tsdl.Sdl.scancode           val nonushash : Tsdl.Sdl.scancode           val semicolon : Tsdl.Sdl.scancode           val apostrophe : Tsdl.Sdl.scancode           val grave : Tsdl.Sdl.scancode           val comma : Tsdl.Sdl.scancode           val period : Tsdl.Sdl.scancode           val slash : Tsdl.Sdl.scancode           val capslock : Tsdl.Sdl.scancode           val f1 : Tsdl.Sdl.scancode           val f2 : Tsdl.Sdl.scancode           val f3 : Tsdl.Sdl.scancode           val f4 : Tsdl.Sdl.scancode           val f5 : Tsdl.Sdl.scancode           val f6 : Tsdl.Sdl.scancode           val f7 : Tsdl.Sdl.scancode           val f8 : Tsdl.Sdl.scancode           val f9 : Tsdl.Sdl.scancode           val f10 : Tsdl.Sdl.scancode           val f11 : Tsdl.Sdl.scancode           val f12 : Tsdl.Sdl.scancode           val printscreen : Tsdl.Sdl.scancode           val scrolllock : Tsdl.Sdl.scancode           val pause : Tsdl.Sdl.scancode           val insert : Tsdl.Sdl.scancode           val home : Tsdl.Sdl.scancode           val pageup : Tsdl.Sdl.scancode           val delete : Tsdl.Sdl.scancode           val kend : Tsdl.Sdl.scancode           val pagedown : Tsdl.Sdl.scancode           val right : Tsdl.Sdl.scancode           val left : Tsdl.Sdl.scancode           val down : Tsdl.Sdl.scancode           val up : Tsdl.Sdl.scancode           val numlockclear : Tsdl.Sdl.scancode           val kp_divide : Tsdl.Sdl.scancode           val kp_multiply : Tsdl.Sdl.scancode           val kp_minus : Tsdl.Sdl.scancode           val kp_plus : Tsdl.Sdl.scancode           val kp_enter : Tsdl.Sdl.scancode           val kp_1 : Tsdl.Sdl.scancode           val kp_2 : Tsdl.Sdl.scancode           val kp_3 : Tsdl.Sdl.scancode           val kp_4 : Tsdl.Sdl.scancode           val kp_5 : Tsdl.Sdl.scancode           val kp_6 : Tsdl.Sdl.scancode           val kp_7 : Tsdl.Sdl.scancode           val kp_8 : Tsdl.Sdl.scancode           val kp_9 : Tsdl.Sdl.scancode           val kp_0 : Tsdl.Sdl.scancode           val kp_period : Tsdl.Sdl.scancode           val nonusbackslash : Tsdl.Sdl.scancode           val application : Tsdl.Sdl.scancode           val kp_equals : Tsdl.Sdl.scancode           val f13 : Tsdl.Sdl.scancode           val f14 : Tsdl.Sdl.scancode           val f15 : Tsdl.Sdl.scancode           val f16 : Tsdl.Sdl.scancode           val f17 : Tsdl.Sdl.scancode           val f18 : Tsdl.Sdl.scancode           val f19 : Tsdl.Sdl.scancode           val f20 : Tsdl.Sdl.scancode           val f21 : Tsdl.Sdl.scancode           val f22 : Tsdl.Sdl.scancode           val f23 : Tsdl.Sdl.scancode           val f24 : Tsdl.Sdl.scancode           val execute : Tsdl.Sdl.scancode           val help : Tsdl.Sdl.scancode           val menu : Tsdl.Sdl.scancode           val select : Tsdl.Sdl.scancode           val stop : Tsdl.Sdl.scancode           val again : Tsdl.Sdl.scancode           val undo : Tsdl.Sdl.scancode           val cut : Tsdl.Sdl.scancode           val copy : Tsdl.Sdl.scancode           val paste : Tsdl.Sdl.scancode           val find : Tsdl.Sdl.scancode           val mute : Tsdl.Sdl.scancode           val volumeup : Tsdl.Sdl.scancode           val volumedown : Tsdl.Sdl.scancode           val kp_comma : Tsdl.Sdl.scancode           val kp_equalsas400 : Tsdl.Sdl.scancode           val international1 : Tsdl.Sdl.scancode           val international2 : Tsdl.Sdl.scancode           val international3 : Tsdl.Sdl.scancode           val international4 : Tsdl.Sdl.scancode           val international5 : Tsdl.Sdl.scancode           val international6 : Tsdl.Sdl.scancode           val international7 : Tsdl.Sdl.scancode           val international8 : Tsdl.Sdl.scancode           val international9 : Tsdl.Sdl.scancode           val lang1 : Tsdl.Sdl.scancode           val lang2 : Tsdl.Sdl.scancode           val lang3 : Tsdl.Sdl.scancode           val lang4 : Tsdl.Sdl.scancode           val lang5 : Tsdl.Sdl.scancode           val lang6 : Tsdl.Sdl.scancode           val lang7 : Tsdl.Sdl.scancode           val lang8 : Tsdl.Sdl.scancode           val lang9 : Tsdl.Sdl.scancode           val alterase : Tsdl.Sdl.scancode           val sysreq : Tsdl.Sdl.scancode           val cancel : Tsdl.Sdl.scancode           val clear : Tsdl.Sdl.scancode           val prior : Tsdl.Sdl.scancode           val return2 : Tsdl.Sdl.scancode           val separator : Tsdl.Sdl.scancode           val out : Tsdl.Sdl.scancode           val oper : Tsdl.Sdl.scancode           val clearagain : Tsdl.Sdl.scancode           val crsel : Tsdl.Sdl.scancode           val exsel : Tsdl.Sdl.scancode           val kp_00 : Tsdl.Sdl.scancode           val kp_000 : Tsdl.Sdl.scancode           val thousandsseparator : Tsdl.Sdl.scancode           val decimalseparator : Tsdl.Sdl.scancode           val currencyunit : Tsdl.Sdl.scancode           val currencysubunit : Tsdl.Sdl.scancode           val kp_leftparen : Tsdl.Sdl.scancode           val kp_rightparen : Tsdl.Sdl.scancode           val kp_leftbrace : Tsdl.Sdl.scancode           val kp_rightbrace : Tsdl.Sdl.scancode           val kp_tab : Tsdl.Sdl.scancode           val kp_backspace : Tsdl.Sdl.scancode           val kp_a : Tsdl.Sdl.scancode           val kp_b : Tsdl.Sdl.scancode           val kp_c : Tsdl.Sdl.scancode           val kp_d : Tsdl.Sdl.scancode           val kp_e : Tsdl.Sdl.scancode           val kp_f : Tsdl.Sdl.scancode           val kp_xor : Tsdl.Sdl.scancode           val kp_power : Tsdl.Sdl.scancode           val kp_percent : Tsdl.Sdl.scancode           val kp_less : Tsdl.Sdl.scancode           val kp_greater : Tsdl.Sdl.scancode           val kp_ampersand : Tsdl.Sdl.scancode           val kp_dblampersand : Tsdl.Sdl.scancode           val kp_verticalbar : Tsdl.Sdl.scancode           val kp_dblverticalbar : Tsdl.Sdl.scancode           val kp_colon : Tsdl.Sdl.scancode           val kp_hash : Tsdl.Sdl.scancode           val kp_space : Tsdl.Sdl.scancode           val kp_at : Tsdl.Sdl.scancode           val kp_exclam : Tsdl.Sdl.scancode           val kp_memstore : Tsdl.Sdl.scancode           val kp_memrecall : Tsdl.Sdl.scancode           val kp_memclear : Tsdl.Sdl.scancode           val kp_memadd : Tsdl.Sdl.scancode           val kp_memsubtract : Tsdl.Sdl.scancode           val kp_memmultiply : Tsdl.Sdl.scancode           val kp_memdivide : Tsdl.Sdl.scancode           val kp_plusminus : Tsdl.Sdl.scancode           val kp_clear : Tsdl.Sdl.scancode           val kp_clearentry : Tsdl.Sdl.scancode           val kp_binary : Tsdl.Sdl.scancode           val kp_octal : Tsdl.Sdl.scancode           val kp_decimal : Tsdl.Sdl.scancode           val kp_hexadecimal : Tsdl.Sdl.scancode           val lctrl : Tsdl.Sdl.scancode           val lshift : Tsdl.Sdl.scancode           val lalt : Tsdl.Sdl.scancode           val lgui : Tsdl.Sdl.scancode           val rctrl : Tsdl.Sdl.scancode           val rshift : Tsdl.Sdl.scancode           val ralt : Tsdl.Sdl.scancode           val rgui : Tsdl.Sdl.scancode           val mode : Tsdl.Sdl.scancode           val audionext : Tsdl.Sdl.scancode           val audioprev : Tsdl.Sdl.scancode           val audiostop : Tsdl.Sdl.scancode           val audioplay : Tsdl.Sdl.scancode           val audiomute : Tsdl.Sdl.scancode           val mediaselect : Tsdl.Sdl.scancode           val www : Tsdl.Sdl.scancode           val mail : Tsdl.Sdl.scancode           val calculator : Tsdl.Sdl.scancode           val computer : Tsdl.Sdl.scancode           val ac_search : Tsdl.Sdl.scancode           val ac_home : Tsdl.Sdl.scancode           val ac_back : Tsdl.Sdl.scancode           val ac_forward : Tsdl.Sdl.scancode           val ac_stop : Tsdl.Sdl.scancode           val ac_refresh : Tsdl.Sdl.scancode           val ac_bookmarks : Tsdl.Sdl.scancode           val brightnessdown : Tsdl.Sdl.scancode           val brightnessup : Tsdl.Sdl.scancode           val displayswitch : Tsdl.Sdl.scancode           val kbdillumtoggle : Tsdl.Sdl.scancode           val kbdillumdown : Tsdl.Sdl.scancode           val kbdillumup : Tsdl.Sdl.scancode           val eject : Tsdl.Sdl.scancode           val sleep : Tsdl.Sdl.scancode           val app1 : Tsdl.Sdl.scancode           val app2 : Tsdl.Sdl.scancode         end       type keycode = int       module K :         sig           val scancode_mask : int           val unknown : Tsdl.Sdl.keycode           val return : Tsdl.Sdl.keycode           val escape : Tsdl.Sdl.keycode           val backspace : Tsdl.Sdl.keycode           val tab : Tsdl.Sdl.keycode           val space : Tsdl.Sdl.keycode           val exclaim : Tsdl.Sdl.keycode           val quotedbl : Tsdl.Sdl.keycode           val hash : Tsdl.Sdl.keycode           val percent : Tsdl.Sdl.keycode           val dollar : Tsdl.Sdl.keycode           val ampersand : Tsdl.Sdl.keycode           val quote : Tsdl.Sdl.keycode           val leftparen : Tsdl.Sdl.keycode           val rightparen : Tsdl.Sdl.keycode           val asterisk : Tsdl.Sdl.keycode           val plus : Tsdl.Sdl.keycode           val comma : Tsdl.Sdl.keycode           val minus : Tsdl.Sdl.keycode           val period : Tsdl.Sdl.keycode           val slash : Tsdl.Sdl.keycode           val k0 : Tsdl.Sdl.keycode           val k1 : Tsdl.Sdl.keycode           val k2 : Tsdl.Sdl.keycode           val k3 : Tsdl.Sdl.keycode           val k4 : Tsdl.Sdl.keycode           val k5 : Tsdl.Sdl.keycode           val k6 : Tsdl.Sdl.keycode           val k7 : Tsdl.Sdl.keycode           val k8 : Tsdl.Sdl.keycode           val k9 : Tsdl.Sdl.keycode           val colon : Tsdl.Sdl.keycode           val semicolon : Tsdl.Sdl.keycode           val less : Tsdl.Sdl.keycode           val equals : Tsdl.Sdl.keycode           val greater : Tsdl.Sdl.keycode           val question : Tsdl.Sdl.keycode           val at : Tsdl.Sdl.keycode           val leftbracket : Tsdl.Sdl.keycode           val backslash : Tsdl.Sdl.keycode           val rightbracket : Tsdl.Sdl.keycode           val caret : Tsdl.Sdl.keycode           val underscore : Tsdl.Sdl.keycode           val backquote : Tsdl.Sdl.keycode           val a : Tsdl.Sdl.keycode           val b : Tsdl.Sdl.keycode           val c : Tsdl.Sdl.keycode           val d : Tsdl.Sdl.keycode           val e : Tsdl.Sdl.keycode           val f : Tsdl.Sdl.keycode           val g : Tsdl.Sdl.keycode           val h : Tsdl.Sdl.keycode           val i : Tsdl.Sdl.keycode           val j : Tsdl.Sdl.keycode           val k : Tsdl.Sdl.keycode           val l : Tsdl.Sdl.keycode           val m : Tsdl.Sdl.keycode           val n : Tsdl.Sdl.keycode           val o : Tsdl.Sdl.keycode           val p : Tsdl.Sdl.keycode           val q : Tsdl.Sdl.keycode           val r : Tsdl.Sdl.keycode           val s : Tsdl.Sdl.keycode           val t : Tsdl.Sdl.keycode           val u : Tsdl.Sdl.keycode           val v : Tsdl.Sdl.keycode           val w : Tsdl.Sdl.keycode           val x : Tsdl.Sdl.keycode           val y : Tsdl.Sdl.keycode           val z : Tsdl.Sdl.keycode           val capslock : Tsdl.Sdl.keycode           val f1 : Tsdl.Sdl.keycode           val f2 : Tsdl.Sdl.keycode           val f3 : Tsdl.Sdl.keycode           val f4 : Tsdl.Sdl.keycode           val f5 : Tsdl.Sdl.keycode           val f6 : Tsdl.Sdl.keycode           val f7 : Tsdl.Sdl.keycode           val f8 : Tsdl.Sdl.keycode           val f9 : Tsdl.Sdl.keycode           val f10 : Tsdl.Sdl.keycode           val f11 : Tsdl.Sdl.keycode           val f12 : Tsdl.Sdl.keycode           val printscreen : Tsdl.Sdl.keycode           val scrolllock : Tsdl.Sdl.keycode           val pause : Tsdl.Sdl.keycode           val insert : Tsdl.Sdl.keycode           val home : Tsdl.Sdl.keycode           val pageup : Tsdl.Sdl.keycode           val delete : Tsdl.Sdl.keycode           val kend : Tsdl.Sdl.keycode           val pagedown : Tsdl.Sdl.keycode           val right : Tsdl.Sdl.keycode           val left : Tsdl.Sdl.keycode           val down : Tsdl.Sdl.keycode           val up : Tsdl.Sdl.keycode           val numlockclear : Tsdl.Sdl.keycode           val kp_divide : Tsdl.Sdl.keycode           val kp_multiply : Tsdl.Sdl.keycode           val kp_minus : Tsdl.Sdl.keycode           val kp_plus : Tsdl.Sdl.keycode           val kp_enter : Tsdl.Sdl.keycode           val kp_1 : Tsdl.Sdl.keycode           val kp_2 : Tsdl.Sdl.keycode           val kp_3 : Tsdl.Sdl.keycode           val kp_4 : Tsdl.Sdl.keycode           val kp_5 : Tsdl.Sdl.keycode           val kp_6 : Tsdl.Sdl.keycode           val kp_7 : Tsdl.Sdl.keycode           val kp_8 : Tsdl.Sdl.keycode           val kp_9 : Tsdl.Sdl.keycode           val kp_0 : Tsdl.Sdl.keycode           val kp_period : Tsdl.Sdl.keycode           val application : Tsdl.Sdl.keycode           val power : Tsdl.Sdl.keycode           val kp_equals : Tsdl.Sdl.keycode           val f13 : Tsdl.Sdl.keycode           val f14 : Tsdl.Sdl.keycode           val f15 : Tsdl.Sdl.keycode           val f16 : Tsdl.Sdl.keycode           val f17 : Tsdl.Sdl.keycode           val f18 : Tsdl.Sdl.keycode           val f19 : Tsdl.Sdl.keycode           val f20 : Tsdl.Sdl.keycode           val f21 : Tsdl.Sdl.keycode           val f22 : Tsdl.Sdl.keycode           val f23 : Tsdl.Sdl.keycode           val f24 : Tsdl.Sdl.keycode           val execute : Tsdl.Sdl.keycode           val help : Tsdl.Sdl.keycode           val menu : Tsdl.Sdl.keycode           val select : Tsdl.Sdl.keycode           val stop : Tsdl.Sdl.keycode           val again : Tsdl.Sdl.keycode           val undo : Tsdl.Sdl.keycode           val cut : Tsdl.Sdl.keycode           val copy : Tsdl.Sdl.keycode           val paste : Tsdl.Sdl.keycode           val find : Tsdl.Sdl.keycode           val mute : Tsdl.Sdl.keycode           val volumeup : Tsdl.Sdl.keycode           val volumedown : Tsdl.Sdl.keycode           val kp_comma : Tsdl.Sdl.keycode           val kp_equalsas400 : Tsdl.Sdl.keycode           val alterase : Tsdl.Sdl.keycode           val sysreq : Tsdl.Sdl.keycode           val cancel : Tsdl.Sdl.keycode           val clear : Tsdl.Sdl.keycode           val prior : Tsdl.Sdl.keycode           val return2 : Tsdl.Sdl.keycode           val separator : Tsdl.Sdl.keycode           val out : Tsdl.Sdl.keycode           val oper : Tsdl.Sdl.keycode           val clearagain : Tsdl.Sdl.keycode           val crsel : Tsdl.Sdl.keycode           val exsel : Tsdl.Sdl.keycode           val kp_00 : Tsdl.Sdl.keycode           val kp_000 : Tsdl.Sdl.keycode           val thousandsseparator : Tsdl.Sdl.keycode           val decimalseparator : Tsdl.Sdl.keycode           val currencyunit : Tsdl.Sdl.keycode           val currencysubunit : Tsdl.Sdl.keycode           val kp_leftparen : Tsdl.Sdl.keycode           val kp_rightparen : Tsdl.Sdl.keycode           val kp_leftbrace : Tsdl.Sdl.keycode           val kp_rightbrace : Tsdl.Sdl.keycode           val kp_tab : Tsdl.Sdl.keycode           val kp_backspace : Tsdl.Sdl.keycode           val kp_a : Tsdl.Sdl.keycode           val kp_b : Tsdl.Sdl.keycode           val kp_c : Tsdl.Sdl.keycode           val kp_d : Tsdl.Sdl.keycode           val kp_e : Tsdl.Sdl.keycode           val kp_f : Tsdl.Sdl.keycode           val kp_xor : Tsdl.Sdl.keycode           val kp_power : Tsdl.Sdl.keycode           val kp_percent : Tsdl.Sdl.keycode           val kp_less : Tsdl.Sdl.keycode           val kp_greater : Tsdl.Sdl.keycode           val kp_ampersand : Tsdl.Sdl.keycode           val kp_dblampersand : Tsdl.Sdl.keycode           val kp_verticalbar : Tsdl.Sdl.keycode           val kp_dblverticalbar : Tsdl.Sdl.keycode           val kp_colon : Tsdl.Sdl.keycode           val kp_hash : Tsdl.Sdl.keycode           val kp_space : Tsdl.Sdl.keycode           val kp_at : Tsdl.Sdl.keycode           val kp_exclam : Tsdl.Sdl.keycode           val kp_memstore : Tsdl.Sdl.keycode           val kp_memrecall : Tsdl.Sdl.keycode           val kp_memclear : Tsdl.Sdl.keycode           val kp_memadd : Tsdl.Sdl.keycode           val kp_memsubtract : Tsdl.Sdl.keycode           val kp_memmultiply : Tsdl.Sdl.keycode           val kp_memdivide : Tsdl.Sdl.keycode           val kp_plusminus : Tsdl.Sdl.keycode           val kp_clear : Tsdl.Sdl.keycode           val kp_clearentry : Tsdl.Sdl.keycode           val kp_binary : Tsdl.Sdl.keycode           val kp_octal : Tsdl.Sdl.keycode           val kp_decimal : Tsdl.Sdl.keycode           val kp_hexadecimal : Tsdl.Sdl.keycode           val lctrl : Tsdl.Sdl.keycode           val lshift : Tsdl.Sdl.keycode           val lalt : Tsdl.Sdl.keycode           val lgui : Tsdl.Sdl.keycode           val rctrl : Tsdl.Sdl.keycode           val rshift : Tsdl.Sdl.keycode           val ralt : Tsdl.Sdl.keycode           val rgui : Tsdl.Sdl.keycode           val mode : Tsdl.Sdl.keycode           val audionext : Tsdl.Sdl.keycode           val audioprev : Tsdl.Sdl.keycode           val audiostop : Tsdl.Sdl.keycode           val audioplay : Tsdl.Sdl.keycode           val audiomute : Tsdl.Sdl.keycode           val mediaselect : Tsdl.Sdl.keycode           val www : Tsdl.Sdl.keycode           val mail : Tsdl.Sdl.keycode           val calculator : Tsdl.Sdl.keycode           val computer : Tsdl.Sdl.keycode           val ac_search : Tsdl.Sdl.keycode           val ac_home : Tsdl.Sdl.keycode           val ac_back : Tsdl.Sdl.keycode           val ac_forward : Tsdl.Sdl.keycode           val ac_stop : Tsdl.Sdl.keycode           val ac_refresh : Tsdl.Sdl.keycode           val ac_bookmarks : Tsdl.Sdl.keycode           val brightnessdown : Tsdl.Sdl.keycode           val brightnessup : Tsdl.Sdl.keycode           val displayswitch : Tsdl.Sdl.keycode           val kbdillumtoggle : Tsdl.Sdl.keycode           val kbdillumdown : Tsdl.Sdl.keycode           val kbdillumup : Tsdl.Sdl.keycode           val eject : Tsdl.Sdl.keycode           val sleep : Tsdl.Sdl.keycode         end       type keymod = int       module Kmod :         sig           val none : Tsdl.Sdl.keymod           val lshift : Tsdl.Sdl.keymod           val rshift : Tsdl.Sdl.keymod           val lctrl : Tsdl.Sdl.keymod           val rctrl : Tsdl.Sdl.keymod           val lalt : Tsdl.Sdl.keymod           val ralt : Tsdl.Sdl.keymod           val lgui : Tsdl.Sdl.keymod           val rgui : Tsdl.Sdl.keymod           val num : Tsdl.Sdl.keymod           val caps : Tsdl.Sdl.keymod           val mode : Tsdl.Sdl.keymod           val reserved : Tsdl.Sdl.keymod           val ctrl : Tsdl.Sdl.keymod           val shift : Tsdl.Sdl.keymod           val alt : Tsdl.Sdl.keymod           val gui : Tsdl.Sdl.keymod         end       val get_keyboard_focus : unit -> Tsdl.Sdl.window option       val get_keyboard_state :         unit -> (int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray       val get_key_from_name : string -> Tsdl.Sdl.keycode       val get_key_from_scancode : Tsdl.Sdl.scancode -> Tsdl.Sdl.keycode       val get_key_name : Tsdl.Sdl.keycode -> string       val get_mod_state : unit -> Tsdl.Sdl.keymod       val get_scancode_from_key : Tsdl.Sdl.keycode -> Tsdl.Sdl.scancode       val get_scancode_from_name : string -> Tsdl.Sdl.scancode       val get_scancode_name : Tsdl.Sdl.scancode -> string       val has_screen_keyboard_support : unit -> bool       val is_screen_keyboard_shown : Tsdl.Sdl.window -> bool       val is_text_input_active : unit -> bool       val set_mod_state : Tsdl.Sdl.keymod -> unit       val set_text_input_rect : Tsdl.Sdl.rect option -> unit       val start_text_input : unit -> unit       val stop_text_input : unit -> unit       type cursor       val unsafe_cursor_of_ptr : nativeint -> Tsdl.Sdl.cursor       val unsafe_ptr_of_cursor : Tsdl.Sdl.cursor -> nativeint       module System_cursor :         sig           type t           val arrow : Tsdl.Sdl.System_cursor.t           val ibeam : Tsdl.Sdl.System_cursor.t           val wait : Tsdl.Sdl.System_cursor.t           val crosshair : Tsdl.Sdl.System_cursor.t           val waitarrow : Tsdl.Sdl.System_cursor.t           val size_nw_se : Tsdl.Sdl.System_cursor.t           val size_ne_sw : Tsdl.Sdl.System_cursor.t           val size_we : Tsdl.Sdl.System_cursor.t           val size_ns : Tsdl.Sdl.System_cursor.t           val size_all : Tsdl.Sdl.System_cursor.t           val no : Tsdl.Sdl.System_cursor.t           val hand : Tsdl.Sdl.System_cursor.t         end       module Button :         sig           val left : int           val middle : int           val right : int           val x1 : int           val x2 : int           val lmask : Tsdl.Sdl.uint32           val mmask : Tsdl.Sdl.uint32           val rmask : Tsdl.Sdl.uint32           val x1mask : Tsdl.Sdl.uint32           val x2mask : Tsdl.Sdl.uint32         end       val create_color_cursor :         Tsdl.Sdl.surface ->         hot_x:int -> hot_y:int -> Tsdl.Sdl.cursor Tsdl.Sdl.result       val create_cursor :         (int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray ->         (int, Bigarray.int8_unsigned_elt) Tsdl.Sdl.bigarray ->         w:int ->         h:int -> hot_x:int -> hot_y:int -> Tsdl.Sdl.cursor Tsdl.Sdl.result       val create_system_cursor :         Tsdl.Sdl.System_cursor.t -> Tsdl.Sdl.cursor Tsdl.Sdl.result       val free_cursor : Tsdl.Sdl.cursor -> unit       val get_cursor : unit -> Tsdl.Sdl.cursor option       val get_default_cursor : unit -> Tsdl.Sdl.cursor option       val get_mouse_focus : unit -> Tsdl.Sdl.window option       val get_mouse_state : unit -> Tsdl.Sdl.uint32 * (int * int)       val get_relative_mouse_mode : unit -> bool       val get_relative_mouse_state : unit -> Tsdl.Sdl.uint32 * (int * int)       val get_cursor_shown : unit -> bool Tsdl.Sdl.result       val set_cursor : Tsdl.Sdl.cursor option -> unit       val set_relative_mouse_mode : bool -> unit Tsdl.Sdl.result       val show_cursor : bool -> bool Tsdl.Sdl.result       val warp_mouse_in_window :         Tsdl.Sdl.window option -> x:int -> y:int -> unit       type touch_id = int64       val touch_mouse_id : Tsdl.Sdl.touch_id       type gesture_id = int64       type finger_id = int64       type finger       module Finger :         sig           val id : Tsdl.Sdl.finger -> Tsdl.Sdl.finger_id           val x : Tsdl.Sdl.finger -> float           val y : Tsdl.Sdl.finger -> float           val pressure : Tsdl.Sdl.finger -> float         end       val get_num_touch_devices : unit -> int       val get_num_touch_fingers : Tsdl.Sdl.touch_id -> int       val get_touch_device : int -> Tsdl.Sdl.touch_id Tsdl.Sdl.result       val get_touch_finger :         Tsdl.Sdl.touch_id -> int -> Tsdl.Sdl.finger option       val load_dollar_templates :         Tsdl.Sdl.touch_id -> Tsdl.Sdl.rw_ops -> unit Tsdl.Sdl.result       val record_gesture : Tsdl.Sdl.touch_id -> unit Tsdl.Sdl.result       val save_dollar_template :         Tsdl.Sdl.gesture_id -> Tsdl.Sdl.rw_ops -> unit Tsdl.Sdl.result       val save_all_dollar_templates : Tsdl.Sdl.rw_ops -> unit Tsdl.Sdl.result       type joystick_guid       type joystick_id = int32       type joystick       val unsafe_joystick_of_ptr : nativeint -> Tsdl.Sdl.joystick       val unsafe_ptr_of_joystick : Tsdl.Sdl.joystick -> nativeint       module Hat :         sig           type t = int           val centered : int           val up : int           val right : int           val down : int           val left : int           val rightup : int           val rightdown : int           val leftup : int           val leftdown : int         end       val joystick_close : Tsdl.Sdl.joystick -> unit       val joystick_get_event_state :         unit -> Tsdl.Sdl.toggle_state Tsdl.Sdl.result       val joystick_set_event_state :         Tsdl.Sdl.toggle_state -> Tsdl.Sdl.toggle_state Tsdl.Sdl.result       val joystick_get_attached : Tsdl.Sdl.joystick -> bool       val joystick_get_axis : Tsdl.Sdl.joystick -> int -> Tsdl.Sdl.int16       val joystick_get_ball :         Tsdl.Sdl.joystick -> int -> (int * int) Tsdl.Sdl.result       val joystick_get_button : Tsdl.Sdl.joystick -> int -> Tsdl.Sdl.uint8       val joystick_get_device_guid : int -> Tsdl.Sdl.joystick_guid       val joystick_get_guid : Tsdl.Sdl.joystick -> Tsdl.Sdl.joystick_guid       val joystick_get_guid_from_string : string -> Tsdl.Sdl.joystick_guid       val joystick_get_guid_string : Tsdl.Sdl.joystick_guid -> string       val joystick_get_hat : Tsdl.Sdl.joystick -> int -> Tsdl.Sdl.Hat.t       val joystick_instance_id :         Tsdl.Sdl.joystick -> Tsdl.Sdl.joystick_id Tsdl.Sdl.result       val joystick_name : Tsdl.Sdl.joystick -> string Tsdl.Sdl.result       val joystick_name_for_index : int -> string Tsdl.Sdl.result       val joystick_num_axes : Tsdl.Sdl.joystick -> int Tsdl.Sdl.result       val joystick_num_balls : Tsdl.Sdl.joystick -> int Tsdl.Sdl.result       val joystick_num_buttons : Tsdl.Sdl.joystick -> int Tsdl.Sdl.result       val joystick_num_hats : Tsdl.Sdl.joystick -> int Tsdl.Sdl.result       val joystick_open : int -> Tsdl.Sdl.joystick Tsdl.Sdl.result       val joystick_update : unit -> unit       val num_joysticks : unit -> int Tsdl.Sdl.result       type game_controller       val unsafe_game_controller_of_ptr :         nativeint -> Tsdl.Sdl.game_controller       val unsafe_ptr_of_game_controller :         Tsdl.Sdl.game_controller -> nativeint       module Controller :         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       val game_controller_add_mapping : string -> bool Tsdl.Sdl.result       val game_controller_add_mapping_from_file :         string -> int Tsdl.Sdl.result       val game_controller_add_mapping_from_rw :         Tsdl.Sdl.rw_ops -> bool -> int Tsdl.Sdl.result       val game_controller_close : Tsdl.Sdl.game_controller -> unit       val game_controller_get_event_state :         unit -> Tsdl.Sdl.toggle_state Tsdl.Sdl.result       val game_controller_set_event_state :         Tsdl.Sdl.toggle_state -> Tsdl.Sdl.toggle_state Tsdl.Sdl.result       val game_controller_get_attached : Tsdl.Sdl.game_controller -> bool       val game_controller_get_axis :         Tsdl.Sdl.game_controller ->         Tsdl.Sdl.Controller.axis -> Tsdl.Sdl.int16       val game_controller_get_axis_from_string :         string -> Tsdl.Sdl.Controller.axis       val game_controller_get_bind_for_axis :         Tsdl.Sdl.game_controller ->         Tsdl.Sdl.Controller.axis -> Tsdl.Sdl.Controller.button_bind       val game_controller_get_bind_for_button :         Tsdl.Sdl.game_controller ->         Tsdl.Sdl.Controller.button -> Tsdl.Sdl.Controller.button_bind       val game_controller_get_button :         Tsdl.Sdl.game_controller ->         Tsdl.Sdl.Controller.button -> Tsdl.Sdl.uint8       val game_controller_get_button_from_string :         string -> Tsdl.Sdl.Controller.button       val game_controller_get_joystick :         Tsdl.Sdl.game_controller -> Tsdl.Sdl.joystick Tsdl.Sdl.result       val game_controller_get_string_for_axis :         Tsdl.Sdl.Controller.axis -> string option       val game_controller_get_string_for_button :         Tsdl.Sdl.Controller.button -> string option       val game_controller_mapping :         Tsdl.Sdl.game_controller -> string Tsdl.Sdl.result       val game_controller_mapping_for_guid :         Tsdl.Sdl.joystick_guid -> string Tsdl.Sdl.result       val game_controller_name :         Tsdl.Sdl.game_controller -> string Tsdl.Sdl.result       val game_controller_name_for_index : int -> string Tsdl.Sdl.result       val game_controller_open :         int -> Tsdl.Sdl.game_controller Tsdl.Sdl.result       val game_controller_update : unit -> unit       val is_game_controller : int -> bool       type event_type = int       type event       module Event :         sig           type 'b field           val create : unit -> Tsdl.Sdl.event           val get : Tsdl.Sdl.event -> 'Tsdl.Sdl.Event.field -> 'b           val set : Tsdl.Sdl.event -> 'Tsdl.Sdl.Event.field -> '-> unit           val first_event : Tsdl.Sdl.event_type           val last_event : Tsdl.Sdl.event_type           val typ : Tsdl.Sdl.event_type Tsdl.Sdl.Event.field           val timestamp : Tsdl.Sdl.uint32 Tsdl.Sdl.Event.field           val app_did_enter_background : Tsdl.Sdl.event_type           val app_did_enter_foreground : Tsdl.Sdl.event_type           val app_low_memory : Tsdl.Sdl.event_type           val app_terminating : Tsdl.Sdl.event_type           val app_will_enter_background : Tsdl.Sdl.event_type           val app_will_enter_foreground : Tsdl.Sdl.event_type           val clipboard_update : Tsdl.Sdl.event_type           val controller_axis_motion : Tsdl.Sdl.event_type           val controller_button_down : Tsdl.Sdl.event_type           val controller_button_up : Tsdl.Sdl.event_type           val controller_device_added : Tsdl.Sdl.event_type           val controller_device_remapped : Tsdl.Sdl.event_type           val controller_device_removed : Tsdl.Sdl.event_type           val controller_axis_which :             Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val controller_axis_axis : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val controller_axis_value : Tsdl.Sdl.int16 Tsdl.Sdl.Event.field           val controller_button_which :             Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val controller_button_button : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val controller_button_state :             Tsdl.Sdl.button_state Tsdl.Sdl.Event.field           val controller_device_which :             Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val dollar_gesture : Tsdl.Sdl.event_type           val dollar_record : Tsdl.Sdl.event_type           val dollar_gesture_touch_id :             Tsdl.Sdl.touch_id Tsdl.Sdl.Event.field           val dollar_gesture_gesture_id :             Tsdl.Sdl.gesture_id Tsdl.Sdl.Event.field           val dollar_gesture_num_fingers : int Tsdl.Sdl.Event.field           val dollar_gesture_error : float Tsdl.Sdl.Event.field           val dollar_gesture_x : float Tsdl.Sdl.Event.field           val dollar_gesture_y : float Tsdl.Sdl.Event.field           val drop_file : Tsdl.Sdl.event_type           val drop_text : Tsdl.Sdl.event_type           val drop_begin : Tsdl.Sdl.event_type           val drop_complete : Tsdl.Sdl.event_type           val drop_file_free : Tsdl.Sdl.event -> unit           val drop_file_file : Tsdl.Sdl.event -> string           val finger_down : Tsdl.Sdl.event_type           val finger_motion : Tsdl.Sdl.event_type           val finger_up : Tsdl.Sdl.event_type           val touch_finger_touch_id : Tsdl.Sdl.touch_id Tsdl.Sdl.Event.field           val touch_finger_finger_id :             Tsdl.Sdl.finger_id Tsdl.Sdl.Event.field           val touch_finger_x : float Tsdl.Sdl.Event.field           val touch_finger_y : float Tsdl.Sdl.Event.field           val touch_finger_dx : float Tsdl.Sdl.Event.field           val touch_finger_dy : float Tsdl.Sdl.Event.field           val touch_finger_pressure : float Tsdl.Sdl.Event.field           val joy_axis_motion : Tsdl.Sdl.event_type           val joy_ball_motion : Tsdl.Sdl.event_type           val joy_button_down : Tsdl.Sdl.event_type           val joy_button_up : Tsdl.Sdl.event_type           val joy_device_added : Tsdl.Sdl.event_type           val joy_device_removed : Tsdl.Sdl.event_type           val joy_hat_motion : Tsdl.Sdl.event_type           val joy_axis_which : Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val joy_axis_axis : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val joy_axis_value : Tsdl.Sdl.int16 Tsdl.Sdl.Event.field           val joy_ball_which : Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val joy_ball_ball : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val joy_ball_xrel : int Tsdl.Sdl.Event.field           val joy_ball_yrel : int Tsdl.Sdl.Event.field           val joy_button_which : Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val joy_button_button : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val joy_button_state : Tsdl.Sdl.button_state Tsdl.Sdl.Event.field           val joy_device_which : Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val joy_hat_which : Tsdl.Sdl.joystick_id Tsdl.Sdl.Event.field           val joy_hat_hat : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val joy_hat_value : Tsdl.Sdl.Hat.t Tsdl.Sdl.Event.field           val key_down : Tsdl.Sdl.event_type           val key_up : Tsdl.Sdl.event_type           val keymap_changed : Tsdl.Sdl.event_type           val keyboard_window_id : int Tsdl.Sdl.Event.field           val keyboard_state : Tsdl.Sdl.button_state Tsdl.Sdl.Event.field           val keyboard_repeat : int Tsdl.Sdl.Event.field           val keyboard_scancode : Tsdl.Sdl.scancode Tsdl.Sdl.Event.field           val keyboard_keycode : Tsdl.Sdl.keycode Tsdl.Sdl.Event.field           val keyboard_keymod : Tsdl.Sdl.keymod Tsdl.Sdl.Event.field           val mouse_button_down : Tsdl.Sdl.event_type           val mouse_button_up : Tsdl.Sdl.event_type           val mouse_motion : Tsdl.Sdl.event_type           val mouse_wheel : Tsdl.Sdl.event_type           val mouse_button_window_id : int Tsdl.Sdl.Event.field           val mouse_button_which : Tsdl.Sdl.uint32 Tsdl.Sdl.Event.field           val mouse_button_button : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val mouse_button_state : Tsdl.Sdl.button_state Tsdl.Sdl.Event.field           val mouse_button_clicks : Tsdl.Sdl.uint8 Tsdl.Sdl.Event.field           val mouse_button_x : int Tsdl.Sdl.Event.field           val mouse_button_y : int Tsdl.Sdl.Event.field           val mouse_motion_window_id : int Tsdl.Sdl.Event.field           val mouse_motion_which : Tsdl.Sdl.uint32 Tsdl.Sdl.Event.field           val mouse_motion_state : Tsdl.Sdl.uint32 Tsdl.Sdl.Event.field           val mouse_motion_x : int Tsdl.Sdl.Event.field           val mouse_motion_y : int Tsdl.Sdl.Event.field           val mouse_motion_xrel : int Tsdl.Sdl.Event.field           val mouse_motion_yrel : int Tsdl.Sdl.Event.field           val mouse_wheel_window_id : int Tsdl.Sdl.Event.field           val mouse_wheel_which : Tsdl.Sdl.uint32 Tsdl.Sdl.Event.field           val mouse_wheel_x : int Tsdl.Sdl.Event.field           val mouse_wheel_y : int Tsdl.Sdl.Event.field           val multi_gesture : Tsdl.Sdl.event_type           val multi_gesture_touch_id : Tsdl.Sdl.touch_id Tsdl.Sdl.Event.field           val multi_gesture_dtheta : float Tsdl.Sdl.Event.field           val multi_gesture_ddist : float Tsdl.Sdl.Event.field           val multi_gesture_x : float Tsdl.Sdl.Event.field           val multi_gesture_y : float Tsdl.Sdl.Event.field           val multi_gesture_num_fingers : int Tsdl.Sdl.Event.field           val quit : Tsdl.Sdl.event_type           val sys_wm_event : Tsdl.Sdl.event_type           val text_editing : Tsdl.Sdl.event_type           val text_input : Tsdl.Sdl.event_type           val text_editing_window_id : int Tsdl.Sdl.Event.field           val text_editing_text : string Tsdl.Sdl.Event.field           val text_editing_start : int Tsdl.Sdl.Event.field           val text_editing_length : int Tsdl.Sdl.Event.field           val text_input_window_id : int Tsdl.Sdl.Event.field           val text_input_text : string Tsdl.Sdl.Event.field           val user_event : Tsdl.Sdl.event_type           val user_window_id : int Tsdl.Sdl.Event.field           val user_code : int Tsdl.Sdl.Event.field           val window_event : Tsdl.Sdl.event_type           type window_event_id = int           val window_event_enum :             Tsdl.Sdl.Event.window_event_id ->             [ `Close             | `Enter             | `Exposed             | `Focus_gained             | `Focus_lost             | `Hidden             | `Hit_test             | `Leave             | `Maximized             | `Minimized             | `Moved             | `Resized             | `Restored             | `Shown             | `Size_changed             | `Take_focus             | `Unknown of Tsdl.Sdl.Event.window_event_id ]           val window_event_shown : Tsdl.Sdl.Event.window_event_id           val window_event_hidden : Tsdl.Sdl.Event.window_event_id           val window_event_exposed : Tsdl.Sdl.Event.window_event_id           val window_event_moved : Tsdl.Sdl.Event.window_event_id           val window_event_resized : Tsdl.Sdl.Event.window_event_id           val window_event_size_changed : Tsdl.Sdl.Event.window_event_id           val window_event_minimized : Tsdl.Sdl.Event.window_event_id           val window_event_maximized : Tsdl.Sdl.Event.window_event_id           val window_event_restored : Tsdl.Sdl.Event.window_event_id           val window_event_enter : Tsdl.Sdl.Event.window_event_id           val window_event_leave : Tsdl.Sdl.Event.window_event_id           val window_event_focus_gained : Tsdl.Sdl.Event.window_event_id           val window_event_focus_lost : Tsdl.Sdl.Event.window_event_id           val window_event_close : Tsdl.Sdl.Event.window_event_id           val window_event_take_focus : Tsdl.Sdl.Event.window_event_id           val window_event_hit_test : Tsdl.Sdl.Event.window_event_id           val window_window_id : int Tsdl.Sdl.Event.field           val window_event_id :             Tsdl.Sdl.Event.window_event_id Tsdl.Sdl.Event.field           val window_data1 : int32 Tsdl.Sdl.Event.field           val window_data2 : int32 Tsdl.Sdl.Event.field           val render_targets_reset : Tsdl.Sdl.event_type           val render_device_reset : Tsdl.Sdl.event_type           val audio_device_added : Tsdl.Sdl.event_type           val audio_device_removed : Tsdl.Sdl.event_type           val audio_device_timestamp : Tsdl.Sdl.uint32 Tsdl.Sdl.Event.field           val audio_device_which : Tsdl.Sdl.uint32 Tsdl.Sdl.Event.field           val audio_device_is_capture : int Tsdl.Sdl.Event.field           val enum :             Tsdl.Sdl.event_type ->             [ `App_did_enter_background             | `App_did_enter_foreground             | `App_low_memory             | `App_terminating             | `App_will_enter_background             | `App_will_enter_foreground             | `Clipboard_update             | `Controller_axis_motion             | `Controller_button_down             | `Controller_button_up             | `Controller_device_added             | `Controller_device_remapped             | `Controller_device_removed             | `Dollar_gesture             | `Dollar_record             | `Drop_file             | `Finger_down             | `Finger_motion             | `Finger_up             | `Joy_axis_motion             | `Joy_ball_motion             | `Joy_button_down             | `Joy_button_up             | `Joy_device_added             | `Joy_device_removed             | `Joy_hat_motion             | `Key_down             | `Key_up             | `Mouse_button_down             | `Mouse_button_up             | `Mouse_motion             | `Mouse_wheel             | `Multi_gesture             | `Quit             | `Sys_wm_event             | `Text_editing             | `Text_input             | `Unknown of int             | `User_event             | `Window_event ]         end       val get_event_state : Tsdl.Sdl.event_type -> Tsdl.Sdl.toggle_state       val set_event_state :         Tsdl.Sdl.event_type -> Tsdl.Sdl.toggle_state -> unit       val flush_event : Tsdl.Sdl.event_type -> unit       val flush_events : Tsdl.Sdl.event_type -> Tsdl.Sdl.event_type -> unit       val has_event : Tsdl.Sdl.event_type -> bool       val has_events : Tsdl.Sdl.event_type -> Tsdl.Sdl.event_type -> bool       val poll_event : Tsdl.Sdl.event option -> bool       val pump_events : unit -> unit       val push_event : Tsdl.Sdl.event -> bool Tsdl.Sdl.result       val register_event : unit -> Tsdl.Sdl.event_type option       val wait_event : Tsdl.Sdl.event option -> unit Tsdl.Sdl.result       val wait_event_timeout : Tsdl.Sdl.event option -> int -> bool       type haptic       type haptic_effect       type haptic_effect_id       module Haptic :         sig           val infinity : Tsdl.Sdl.uint32           type feature = int           val gain : Tsdl.Sdl.Haptic.feature           val autocenter : Tsdl.Sdl.Haptic.feature           val status : Tsdl.Sdl.Haptic.feature           val pause : Tsdl.Sdl.Haptic.feature           type direction_type = int           val polar : Tsdl.Sdl.Haptic.direction_type           val cartesian : Tsdl.Sdl.Haptic.direction_type           val spherical : Tsdl.Sdl.Haptic.direction_type           module Direction :             sig               type t               val create :                 int -> int32 -> int32 -> int32 -> Tsdl.Sdl.Haptic.Direction.t               val typ :                 Tsdl.Sdl.Haptic.Direction.t -> Tsdl.Sdl.Haptic.direction_type               val dir_0 : Tsdl.Sdl.Haptic.Direction.t -> int32               val dir_1 : Tsdl.Sdl.Haptic.Direction.t -> int32               val dir_2 : Tsdl.Sdl.Haptic.Direction.t -> int32             end           type effect_type = int           type 'a field           val create_effect : unit -> Tsdl.Sdl.haptic_effect           val get : Tsdl.Sdl.haptic_effect -> 'Tsdl.Sdl.Haptic.field -> 'a           val set :             Tsdl.Sdl.haptic_effect -> 'Tsdl.Sdl.Haptic.field -> '-> unit           val typ : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field           val constant : Tsdl.Sdl.Haptic.effect_type           val constant_type :             Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field           val constant_direction :             Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field           val constant_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field           val constant_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val constant_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val constant_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val constant_level : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val constant_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val constant_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val constant_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val constant_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val sine : Tsdl.Sdl.Haptic.effect_type           val left_right : Tsdl.Sdl.Haptic.effect_type           val triangle : Tsdl.Sdl.Haptic.effect_type           val sawtooth_up : Tsdl.Sdl.Haptic.effect_type           val sawtooth_down : Tsdl.Sdl.Haptic.effect_type           val periodic_type :             Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field           val periodic_direction :             Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field           val periodic_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field           val periodic_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_period : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_magnitude : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val periodic_offset : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val periodic_phase : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val periodic_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val spring : Tsdl.Sdl.Haptic.effect_type           val damper : Tsdl.Sdl.Haptic.effect_type           val inertia : Tsdl.Sdl.Haptic.effect_type           val friction : Tsdl.Sdl.Haptic.effect_type           val condition_type :             Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field           val condition_direction :             Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field           val condition_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field           val condition_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_right_sat_0 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_right_sat_1 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_right_sat_2 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_left_sat_0 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_left_sat_1 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_left_sat_2 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_right_coeff_0 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_right_coeff_1 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_right_coeff_2 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_left_coeff_0 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_left_coeff_1 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_left_coeff_2 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_deadband_0 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_deadband_1 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_deadband_2 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val condition_center_0 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_center_1 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val condition_center_2 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val ramp : Tsdl.Sdl.Haptic.effect_type           val ramp_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field           val ramp_direction :             Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field           val ramp_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field           val ramp_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val ramp_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val ramp_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val ramp_start : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val ramp_end : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field           val ramp_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val ramp_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val ramp_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val ramp_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val left_right_type :             Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field           val left_right_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field           val left_right_large_magnitude :             Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val left_right_small_magnitude :             Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom : Tsdl.Sdl.Haptic.effect_type           val custom_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field           val custom_direction :             Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field           val custom_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field           val custom_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_channels : Tsdl.Sdl.uint8 Tsdl.Sdl.Haptic.field           val custom_period : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_samples : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_data : Tsdl.Sdl.uint16 list Tsdl.Sdl.Haptic.field           val custom_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field           val custom_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field         end       val haptic_close : Tsdl.Sdl.haptic -> unit       val haptic_destroy_effect :         Tsdl.Sdl.haptic -> Tsdl.Sdl.haptic_effect_id -> unit       val haptic_effect_supported :         Tsdl.Sdl.haptic -> Tsdl.Sdl.haptic_effect -> bool Tsdl.Sdl.result       val haptic_get_effect_status :         Tsdl.Sdl.haptic -> Tsdl.Sdl.haptic_effect_id -> bool Tsdl.Sdl.result       val haptic_index : Tsdl.Sdl.haptic -> int Tsdl.Sdl.result       val haptic_name : int -> string Tsdl.Sdl.result       val haptic_new_effect :         Tsdl.Sdl.haptic ->         Tsdl.Sdl.haptic_effect -> Tsdl.Sdl.haptic_effect_id Tsdl.Sdl.result       val haptic_num_axes : Tsdl.Sdl.haptic -> int Tsdl.Sdl.result       val haptic_num_effects : Tsdl.Sdl.haptic -> int Tsdl.Sdl.result       val haptic_num_effects_playing : Tsdl.Sdl.haptic -> int Tsdl.Sdl.result       val haptic_open : int -> Tsdl.Sdl.haptic Tsdl.Sdl.result       val haptic_open_from_joystick :         Tsdl.Sdl.joystick -> Tsdl.Sdl.haptic Tsdl.Sdl.result       val haptic_open_from_mouse : unit -> Tsdl.Sdl.haptic Tsdl.Sdl.result       val haptic_opened : int -> bool       val haptic_pause : Tsdl.Sdl.haptic -> unit Tsdl.Sdl.result       val haptic_query : Tsdl.Sdl.haptic -> int       val haptic_rumble_init : Tsdl.Sdl.haptic -> unit Tsdl.Sdl.result       val haptic_rumble_play :         Tsdl.Sdl.haptic -> float -> Tsdl.Sdl.uint32 -> unit Tsdl.Sdl.result       val haptic_rumble_stop : Tsdl.Sdl.haptic -> unit Tsdl.Sdl.result       val haptic_rumble_supported : Tsdl.Sdl.haptic -> bool Tsdl.Sdl.result       val haptic_run_effect :         Tsdl.Sdl.haptic ->         Tsdl.Sdl.haptic_effect_id -> Tsdl.Sdl.uint32 -> unit Tsdl.Sdl.result       val haptic_set_autocenter :         Tsdl.Sdl.haptic -> int -> unit Tsdl.Sdl.result       val haptic_set_gain : Tsdl.Sdl.haptic -> int -> unit Tsdl.Sdl.result       val haptic_stop_all : Tsdl.Sdl.haptic -> unit Tsdl.Sdl.result       val haptic_stop_effect :         Tsdl.Sdl.haptic -> Tsdl.Sdl.haptic_effect_id -> unit Tsdl.Sdl.result       val haptic_unpause : Tsdl.Sdl.haptic -> unit Tsdl.Sdl.result       val haptic_update_effect :         Tsdl.Sdl.haptic ->         Tsdl.Sdl.haptic_effect_id ->         Tsdl.Sdl.haptic_effect -> unit Tsdl.Sdl.result       val joystick_is_haptic : Tsdl.Sdl.joystick -> bool Tsdl.Sdl.result       val mouse_is_haptic : unit -> bool Tsdl.Sdl.result       val num_haptics : unit -> int Tsdl.Sdl.result       module Audio :         sig           type status = int           val stopped : Tsdl.Sdl.Audio.status           val playing : Tsdl.Sdl.Audio.status           val paused : Tsdl.Sdl.Audio.status           type format = int           val s8 : Tsdl.Sdl.Audio.format           val u8 : Tsdl.Sdl.Audio.format           val s16_msb : Tsdl.Sdl.Audio.format           val s16_sys : Tsdl.Sdl.Audio.format           val s16 : Tsdl.Sdl.Audio.format           val s16_lsb : Tsdl.Sdl.Audio.format           val u16_msb : Tsdl.Sdl.Audio.format           val u16_sys : Tsdl.Sdl.Audio.format           val u16 : Tsdl.Sdl.Audio.format           val u16_lsb : Tsdl.Sdl.Audio.format           val s32_msb : Tsdl.Sdl.Audio.format           val s32_sys : Tsdl.Sdl.Audio.format           val s32 : Tsdl.Sdl.Audio.format           val s32_lsb : Tsdl.Sdl.Audio.format           val f32_lsb : Tsdl.Sdl.Audio.format           val f32_msb : Tsdl.Sdl.Audio.format           val f32_sys : Tsdl.Sdl.Audio.format           val f32 : Tsdl.Sdl.Audio.format           type allow = int           val allow_frequency_change : int           val allow_format_change : int           val allow_channels_change : int           val allow_any_change : int         end       val audio_init : string option -> unit Tsdl.Sdl.result       val audio_quit : unit -> unit       val get_audio_driver : int -> string Tsdl.Sdl.result       val get_current_audio_driver : unit -> string option       val get_num_audio_drivers : unit -> int Tsdl.Sdl.result       type audio_device_id = Tsdl.Sdl.uint32       type ('a, 'b) audio_spec = {         as_freq : int;         as_format : Tsdl.Sdl.Audio.format;         as_channels : Tsdl.Sdl.uint8;         as_silence : Tsdl.Sdl.uint8;         as_samples : Tsdl.Sdl.uint8;         as_size : Tsdl.Sdl.uint32;         as_ba_kind : ('a, 'b) Bigarray.kind;         as_callback : (('a, 'b) Tsdl.Sdl.bigarray -> unit) option;       }       val close_audio_device : Tsdl.Sdl.audio_device_id -> unit       val free_wav : ('a, 'b) Tsdl.Sdl.bigarray -> unit       val get_audio_device_name : int -> bool -> string Tsdl.Sdl.result       val get_audio_device_status :         Tsdl.Sdl.audio_device_id -> Tsdl.Sdl.Audio.status       val get_num_audio_devices : bool -> int Tsdl.Sdl.result       val load_wav_rw :         Tsdl.Sdl.rw_ops ->         ('a, 'b) Tsdl.Sdl.audio_spec ->         (('a, 'b) Tsdl.Sdl.audio_spec * ('a, 'b) Tsdl.Sdl.bigarray)         Tsdl.Sdl.result       val lock_audio_device : Tsdl.Sdl.audio_device_id -> unit       val open_audio_device :         string option ->         bool ->         ('a, 'b) Tsdl.Sdl.audio_spec ->         Tsdl.Sdl.Audio.allow ->         (Tsdl.Sdl.audio_device_id * ('a, 'b) Tsdl.Sdl.audio_spec)         Tsdl.Sdl.result       val pause_audio_device : Tsdl.Sdl.audio_device_id -> bool -> unit       val unlock_audio_device : Tsdl.Sdl.audio_device_id -> unit       val delay : Tsdl.Sdl.uint32 -> unit       val get_ticks : unit -> Tsdl.Sdl.uint32       val get_performance_counter : unit -> Tsdl.Sdl.uint64       val get_performance_frequency : unit -> Tsdl.Sdl.uint64       val get_platform : unit -> string       val get_cpu_cache_line_size : unit -> int Tsdl.Sdl.result       val get_cpu_count : unit -> int       val get_system_ram : unit -> int       val has_3d_now : unit -> bool       val has_altivec : unit -> bool       val has_avx : unit -> bool       val has_mmx : unit -> bool       val has_rdtsc : unit -> bool       val has_sse : unit -> bool       val has_sse2 : unit -> bool       val has_sse3 : unit -> bool       val has_sse41 : unit -> bool       val has_sse42 : unit -> bool       type power_state =           [ `Charged | `Charging | `No_battery | `On_battery | `Unknown ]       type power_info = {         pi_state : Tsdl.Sdl.power_state;         pi_secs : int option;         pi_pct : int option;       }       val get_power_info : unit -> Tsdl.Sdl.power_info     end end