sig
  type joystick_axis =
      JoystickX
    | JoystickY
    | JoystickZ
    | JoystickR
    | JoystickU
    | JoystickV
    | JoystickPovX
    | JoystickPovY
  type t =
      Closed
    | MouseMoved of int * int
    | Resized of int * int
    | MouseButtonPressed of SFMouse.mouse_button * int * int
    | MouseButtonReleased of SFMouse.mouse_button * int * int
    | MouseWheelMoved of int * int * int
    | KeyPressed of SFKey.t * bool * bool * bool * bool
    | KeyReleased of SFKey.t * bool * bool * bool * bool
    | TextEntered of int32
    | MouseEntered
    | MouseLeft
    | LostFocus
    | GainedFocus
    | JoystickMoved of int * SFEvent.joystick_axis * float
    | JoystickButtonPressed of int * int
    | JoystickButtonReleased of int * int
    | JoystickConnected of int
    | JoystickDisconnected of int
end