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