sig
  type t
  type kind =
      No_key
    | Pressed
    | Released
    | Doubleclick
    | Pointer_moved
    | Axis_moved
    | Proximity_change
  external init : unit -> CL_InputEvent.t = "caml_CL_InputEvent_init"
  external delete : CL_InputEvent.t -> unit = "caml_CL_InputEvent_delete"
  external id : CL_InputEvent.t -> int = "caml_CL_InputEvent_id"
  external str : CL_InputEvent.t -> string = "caml_CL_InputEvent_str"
  external get_key : CL_InputEvent.t -> CL_Key.keycode
    = "caml_CL_InputEvent_get_key"
  external get_mouse : CL_InputEvent.t -> CL_Mouse.t
    = "caml_CL_InputEvent_get_mouse"
  external get_type : CL_InputEvent.t -> CL_InputEvent.kind
    = "caml_CL_InputEvent_get_type"
  external mouse_pos : CL_InputEvent.t -> CL_Point.t
    = "caml_CL_InputEvent_mouse_pos"
  external axis_pos : CL_InputEvent.t -> float
    = "caml_CL_InputEvent_axis_pos"
  external repeat_count : CL_InputEvent.t -> int
    = "caml_CL_InputEvent_repeat_count"
  external alt : CL_InputEvent.t -> bool = "caml_CL_InputEvent_alt"
  external shift : CL_InputEvent.t -> bool = "caml_CL_InputEvent_shift"
  external ctrl : CL_InputEvent.t -> bool = "caml_CL_InputEvent_ctrl"
end