sig
  type modifier = Gdk.Tags.modifier
  val set_default_modifiers : Okey.modifier list -> unit
  val set_default_mask : Okey.modifier list -> unit
  val add :
    < connect : < destroy : callback:(unit -> unit) -> GtkSignal.id; .. >;
      event : GObj.event_ops; get_oid : int; .. > ->
    ?cond:(unit -> bool) ->
    ?mods:Okey.modifier list ->
    ?mask:Okey.modifier list -> Gdk.keysym -> (unit -> unit) -> unit
  val add_list :
    < connect : < destroy : callback:(unit -> unit) -> GtkSignal.id; .. >;
      event : GObj.event_ops; get_oid : int; .. > ->
    ?cond:(unit -> bool) ->
    ?mods:Okey.modifier list ->
    ?mask:Okey.modifier list -> Gdk.keysym list -> (unit -> unit) -> unit
  val set :
    < connect : < destroy : callback:(unit -> unit) -> GtkSignal.id; .. >;
      event : GObj.event_ops; get_oid : int; .. > ->
    ?cond:(unit -> bool) ->
    ?mods:Okey.modifier list ->
    ?mask:Okey.modifier list -> Gdk.keysym -> (unit -> unit) -> unit
  val set_list :
    < connect : < destroy : callback:(unit -> unit) -> GtkSignal.id; .. >;
      event : GObj.event_ops; get_oid : int; .. > ->
    ?cond:(unit -> bool) ->
    ?mods:Okey.modifier list ->
    ?mask:Okey.modifier list -> Gdk.keysym list -> (unit -> unit) -> unit
  val remove_widget :
    < connect : < destroy : callback:(unit -> unit) -> GtkSignal.id; .. >;
      event : GObj.event_ops; get_oid : int; .. > ->
    unit -> unit
  type handler
  type keyhit_spec
  type keyhit_state = (Okey.modifier list * Gdk.keysym) list
  val ignored_keys : Gdk.keysym list Pervasives.ref
  type handler_tree_node =
      Handler of Okey.handler
    | Node of Okey.handler_tree list
  and handler_tree = {
    mutable hst_spec : Okey.keyhit_spec;
    mutable hst_v : Okey.handler_tree_node;
  }
  val set_handler_trees :
    ?stop:Okey.modifier list * Gdk.keysym ->
    (unit -> Okey.handler_tree list) ->
    ?f_display_state:(after_handler:bool -> Okey.keyhit_state -> unit) ->
    < event : GObj.event_ops; misc : GObj.misc_ops; .. > -> unit
  val handler : ?cond:(unit -> bool) -> (unit -> unit) -> Okey.handler
  val keyhit_spec :
    ?mods:Okey.modifier list ->
    ?mask:Okey.modifier list -> Gdk.keysym -> Okey.keyhit_spec
  val handler_tree :
    ?mods:Okey.modifier list ->
    ?mask:Okey.modifier list ->
    Gdk.keysym -> Okey.handler_tree_node -> Okey.handler_tree
  val reset_state : < misc : GObj.misc_ops; .. > -> unit
  val trees_of_list :
    (Okey.keyhit_state * (unit -> unit)) list -> Okey.handler_tree list
end