sig
  type t
  external get_keyboard_count : ic:CL_InputContext.t -> int
    = "caml_CL_InputContext_get_keyboard_count" [@@noalloc]
  external get_mouse_count : ic:CL_InputContext.t -> int
    = "caml_CL_InputContext_get_mouse_count" [@@noalloc]
  external get_joystick_count : ic:CL_InputContext.t -> int
    = "caml_CL_InputContext_get_joystick_count" [@@noalloc]
  external get_tablet_count : ic:CL_InputContext.t -> int
    = "caml_CL_InputContext_get_tablet_count" [@@noalloc]
  external get_keyboard :
    ic:CL_InputContext.t -> ?keyboard:int -> unit -> CL_InputDevice.t
    = "caml_CL_InputContext_get_keyboard"
  external get_mouse :
    ic:CL_InputContext.t -> ?mouse:int -> unit -> CL_InputDevice.t
    = "caml_CL_InputContext_get_mouse"
  external get_joystick :
    ic:CL_InputContext.t -> ?joystick:int -> unit -> CL_InputDevice.t
    = "caml_CL_InputContext_get_joystick"
  external get_tablet :
    ic:CL_InputContext.t -> ?tablet:int -> unit -> CL_InputDevice.t
    = "caml_CL_InputContext_get_tablet"
  external get_device :
    ic:CL_InputContext.t -> device_name:string -> CL_InputDevice.t
    = "caml_CL_InputContext_get_device"
end