sig
  type t
  type kind = Keyboard | Pointer | Joystick | Tablet | Unknown
  external get_keycode : CL_InputDevice.t -> key:CL_Key.keycode -> bool
    = "caml_CL_InputDevice_get_keycode"
  external get_position : CL_InputDevice.t -> CL_Point.t
    = "caml_CL_InputDevice_get_position"
  external get_name : CL_InputDevice.t -> string
    = "caml_CL_InputDevice_get_name"
  external get_device_name : CL_InputDevice.t -> string
    = "caml_CL_InputDevice_get_device_name"
  external get_axis_count : CL_InputDevice.t -> int
    = "caml_CL_InputDevice_get_axis_count"
  external get_button_count : CL_InputDevice.t -> int
    = "caml_CL_InputDevice_get_button_count"
  external in_proximity : CL_InputDevice.t -> bool
    = "caml_CL_InputDevice_in_proximity"
  external get_axis : CL_InputDevice.t -> index:int -> float
    = "caml_CL_InputDevice_get_axis"
  external delete : CL_InputDevice.t -> unit = "caml_CL_InputDevice_delete"
end