sig
  type id =
      [ `Alt of [ `Left | `Right ]
      | `Arrow of [ `Down | `Left | `Right | `Up ]
      | `Backspace
      | `Ctrl of [ `Left | `Right ]
      | `Digit of int
      | `End
      | `Enter
      | `Escape
      | `Function of int
      | `Home
      | `Meta of [ `Left | `Right ]
      | `Page of [ `Down | `Up ]
      | `Return
      | `Shift of [ `Left | `Right ]
      | `Space
      | `Tab
      | `Uchar of int
      | `Unknown of int ]
  val uchar : char -> [> `Uchar of int ]
  val pp_id : Format.formatter -> Useri.Key.id -> unit
  val any_down : Useri.Key.id React.event
  val any_up : Useri.Key.id React.event
  val any_holds : bool React.signal
  val down : Useri.Key.id -> unit React.event
  val up : Useri.Key.id -> unit React.event
  val holds : Useri.Key.id -> bool React.signal
  val alt : bool React.signal
  val ctrl : bool React.signal
  val meta : bool React.signal
  val shift : bool React.signal
end