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_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 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         | `Leave         | `Maximized         | `Minimized         | `Moved         | `Resized         | `Restored         | `Shown         | `Size_changed ]       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_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 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         | `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   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