sig
  type mouse_button =
      ButtonLeft
    | ButtonRight
    | ButtonMiddle
    | ButtonX1
    | ButtonX2
  type joy_axis =
      JoyAxisX
    | JoyAxisY
    | JoyAxisZ
    | JoyAxisR
    | JoyAxisU
    | JoyAxisV
    | JoyAxisPOV
  type t =
      Closed
    | MouseMoved of int * int
    | Resized of int * int
    | MouseButtonPressed of SFEvent.mouse_button * int * int
    | MouseButtonReleased of SFEvent.mouse_button * int * int
    | MouseWheelMoved of int
    | KeyPressed of SFKey.t * bool * bool * bool
    | KeyReleased of SFKey.t * bool * bool * bool
    | TextEntered of int32
    | MouseEntered
    | MouseLeft
    | LostFocus
    | GainedFocus
    | JoyMoved of int * SFEvent.joy_axis * float
    | JoyButtonPressed of int * int
    | JoyButtonReleased of int * int
end