A library for Incr_dom keybinding and keyboard shortcut helpers
module Condition : sig ... end

A Condition.t is a condition based on a keyboard event (which importantly includes the event's focus). This is intended to be used in keyboard event handlers that look at the keyboard event to determine whether or not to take a certain action.

module Handler : sig ... end

A Handler.t handles a keyboard event by returning a Vdom.Event.t. These should be used as building blocks for keyboard event handlers, for instance to handle a specific set of keys.

module Command : sig ... end
module Action : sig ... end
type t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
val empty : t
val of_action_list_exn : Action.t list -> t

of_action_list_exn and of_command_list_exn create a keyboard event handler from a list of actions. If the same key appears in multiple actions, an exception is raised.

val of_command_list_exn : Command.t list -> t
val add_action_exn : t -> Action.t -> t

add_action_exn adds a new action to a keyboard event handler. If any key from the new action already exists in the handler, an exception is raised.

val add_command_exn : t -> Command.t -> t

Like add_action_exn, but restricted to command actions

val add_disabled_key_exn : t -> Keystroke.t -> t

Like add_action_exn, but restricted to disabled key actions

val set_action : t -> Action.t -> t

Like add_action_exn, but overrides old actions in the case of a conflict.

val set_command : t -> Command.t -> t

Like set_action, but restricted to command actions

val set_disabled_key : t -> Keystroke.t -> t

Like set_action, but restricted to disabled key actions

val merge : on_dup:[ `Override_with_right | `Both | `Throw ] -> t -> t -> t

merge t1 t2 ~on_dup creates new keyboard event handlers containing the actions from t1 and t2. on_dup dictates how to deal with keys that have actions in both t1 and t2:

  • `Override_with_right uses the action from t2.
  • `Both uses both actions, and combines them into a single line if used with get_help_text. Note that if the actions belong to different groups in the help text, it will use the first group.
  • `Throw raises.
val handle_event : t -> Keyboard_event.t -> Virtual_dom.Vdom.Event.t option
val get_help_text : ?include_disabled_keys:unit -> t -> Help_text.t
val get_grouped_help_text : ?include_disabled_keys:unit -> ?custom_group_order:Grouped_help_text.Group_name.t list -> t -> default_group:Grouped_help_text.Group_name.t -> Grouped_help_text.t
val get_grouped_help_text_exn : ?include_disabled_keys:unit -> ?custom_group_order:Grouped_help_text.Group_name.t list -> t -> Grouped_help_text.t