@opentui/keymap
Every export of @opentui/keymap in the main-branch source, from its type declarations. A version names the release that added an export after the module's first release.
Functions#
function stringifyKeySequence(input: readonly KeyStringifyInput[], options?: StringifyOptions): stringfunction stringifyKeyStroke(input: KeyStringifyInput, options?: StringifyOptions): string
Classes#
class Keymap<TTarget extends object, TEvent extends KeymapEvent = KeymapEvent>constructor Keymap(host: KeymapHost<TTarget, TEvent>)method Keymap.[KEYMAP_EXTENSION_CONTEXT](): KeymapExtensionContext<TTarget, TEvent>method Keymap.acquireResource(key: symbol, setup: () => () => void): () => voidmethod Keymap.appendBindingExpander(expander: BindingExpander): () => voidmethod Keymap.appendBindingParser(parser: BindingParser): () => voidmethod Keymap.appendBindingTransformer(transformer: BindingTransformer<TTarget, TEvent>): () => voidmethod Keymap.appendCommandResolver(resolver: CommandResolver<TTarget, TEvent>): () => voidmethod Keymap.appendCommandTransformer(transformer: CommandTransformer<TTarget, TEvent>): () => voidmethod Keymap.appendDisambiguationResolver(resolver: KeyDisambiguationResolver<TTarget, TEvent>): () => voidmethod Keymap.appendEventMatchResolver(resolver: EventMatchResolver<TEvent>): () => voidmethod Keymap.appendLayerAnalyzer(analyzer: LayerAnalyzer<TTarget, TEvent>): () => voidmethod Keymap.appendLayerBindingsTransformer(transformer: LayerBindingsTransformer<TTarget, TEvent>): () => voidmethod Keymap.clearBindingExpanders(): voidmethod Keymap.clearBindingParsers(): voidmethod Keymap.clearBindingTransformers(): voidmethod Keymap.clearCommandResolvers(): voidmethod Keymap.clearCommandTransformers(): voidmethod Keymap.clearDisambiguationResolvers(): voidmethod Keymap.clearEventMatchResolvers(): voidmethod Keymap.clearLayerAnalyzers(): voidmethod Keymap.clearLayerBindingsTransformers(): voidmethod Keymap.clearPendingSequence(): voidmethod Keymap.createKeyMatcher(key: KeyLike): (input: KeyStringifyInput | null | undefined) => booleanmethod Keymap.dispatchCommand(cmd: string, options?: RunCommandOptions<TTarget, TEvent>): RunCommandResult<TTarget, TEvent>method Keymap.formatKey(key: KeyLike, options?: StringifyOptions): stringmethod Keymap.getCommandBindings(query: CommandBindingsQuery<TTarget>): ReadonlyMap<string, readonly ActiveBinding<TTarget, TEvent>[]>method Keymap.getCommandEntries(query?: CommandQuery<TTarget, TEvent>): readonly CommandEntry<TTarget, TEvent>[]method Keymap.getCommands(query?: CommandQuery<TTarget, TEvent>): readonly Command<TTarget, TEvent>[]method Keymap.getData(name: string): unknownmethod Keymap.getHostMetadata(): Readonly<HostMetadata>method Keymap.hasPendingSequence(): booleanmethod Keymap.intercept(name: "key", fn: (ctx: KeyInputContext<TEvent>) => void, options?: KeyInterceptOptions): () => voidmethod Keymap.intercept(name: "key:after", fn: (ctx: KeyAfterInputContext<TTarget, TEvent>) => void, options?: KeyInterceptOptions): () => voidmethod Keymap.intercept(name: "raw", fn: (ctx: RawInputContext) => void, options?: RawInterceptOptions): () => voidmethod Keymap.on(name: "dispatch", fn: Listener<Events<TTarget, TEvent>["dispatch"]>): () => voidmethod Keymap.on(name: "error", fn: Listener<Events<TTarget, TEvent>["error"]>): () => voidmethod Keymap.on(name: "pendingSequence", fn: Listener<Events<TTarget, TEvent>["pendingSequence"]>): () => voidmethod Keymap.on(name: "state", fn: Listener<Events<TTarget, TEvent>["state"]>): () => voidmethod Keymap.on(name: "warning", fn: Listener<Events<TTarget, TEvent>["warning"]>): () => voidmethod Keymap.parseKeySequence(key: KeyLike): readonly KeySequencePart[]method Keymap.popPendingSequence(): booleanmethod Keymap.prependBindingExpander(expander: BindingExpander): () => voidmethod Keymap.prependBindingParser(parser: BindingParser): () => voidmethod Keymap.prependBindingTransformer(transformer: BindingTransformer<TTarget, TEvent>): () => voidmethod Keymap.prependCommandResolver(resolver: CommandResolver<TTarget, TEvent>): () => voidmethod Keymap.prependCommandTransformer(transformer: CommandTransformer<TTarget, TEvent>): () => voidmethod Keymap.prependDisambiguationResolver(resolver: KeyDisambiguationResolver<TTarget, TEvent>): () => voidmethod Keymap.prependEventMatchResolver(resolver: EventMatchResolver<TEvent>): () => voidmethod Keymap.prependLayerAnalyzer(analyzer: LayerAnalyzer<TTarget, TEvent>): () => voidmethod Keymap.prependLayerBindingsTransformer(transformer: LayerBindingsTransformer<TTarget, TEvent>): () => voidmethod Keymap.registerBindingFields(fields: Record<string, BindingFieldCompiler>): () => voidmethod Keymap.registerCommandFields(fields: Record<string, CommandFieldCompiler>): () => voidmethod Keymap.registerLayer(layer: Layer<TTarget, TEvent>): () => voidmethod Keymap.registerLayerFields(fields: Record<string, LayerFieldCompiler>): () => voidmethod Keymap.registerSequencePattern(pattern: SequencePattern<TEvent>): () => voidmethod Keymap.registerToken(token: KeyToken): () => voidmethod Keymap.runCommand(cmd: string, options?: RunCommandOptions<TTarget, TEvent>): RunCommandResult<TTarget, TEvent>method Keymap.setData(name: string, value: unknown): voidproperty Keymap.getActiveKeys: (options?: ActiveKeyOptions) => readonly ActiveKey<TTarget, TEvent>[]property Keymap.getPendingSequence: () => readonly KeySequencePart[]
Interfaces#
interface ActiveBinding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property ActiveBinding.attrs?: Readonly<Attributes>property ActiveBinding.command?: BindingCommand<TTarget, TEvent>property ActiveBinding.commandAttrs?: Readonly<Attributes>property ActiveBinding.event: BindingEventproperty ActiveBinding.fallthrough: booleanproperty ActiveBinding.preventDefault: booleanproperty ActiveBinding.sequence: KeySequencePart[]
interface ActiveKey<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property ActiveKey.bindingAttrs?: Readonly<Attributes>property ActiveKey.bindings?: ActiveBinding<TTarget, TEvent>[]property ActiveKey.command?: BindingCommand<TTarget, TEvent>property ActiveKey.commandAttrs?: Readonly<Attributes>property ActiveKey.continues: booleanproperty ActiveKey.display: stringproperty ActiveKey.stroke: NormalizedKeyStrokeproperty ActiveKey.tokenName?: string
interface ActiveKeyOptionsproperty ActiveKeyOptions.includeBindings?: booleanproperty ActiveKeyOptions.includeMetadata?: boolean
interface BindingExpanderContextproperty BindingExpanderContext.displays?: readonly string[]property BindingExpanderContext.input: stringproperty BindingExpanderContext.layer: Readonly<Record<string, unknown>>
interface BindingExpansionproperty BindingExpansion.displays?: readonly string[]property BindingExpansion.key: string
interface BindingFieldContextmethod BindingFieldContext.activeWhen(matcher: (() => boolean) | ReactiveMatcher): voidmethod BindingFieldContext.attr(name: string, value: unknown): voidmethod BindingFieldContext.require(name: string, value: unknown): void
interface BindingParserContextmethod BindingParserContext.createMatch(id: string): KeyMatchmethod BindingParserContext.normalizeTokenName(token: string): stringmethod BindingParserContext.parseObjectKey(key: KeyStrokeInput, options?: { display?: string; match?: KeyMatch; tokenName?: string; }): KeySequencePartproperty BindingParserContext.index: numberproperty BindingParserContext.input: stringproperty BindingParserContext.layer: Readonly<Record<string, unknown>>property BindingParserContext.patterns: ReadonlyMap<string, ResolvedSequencePattern>property BindingParserContext.tokens: ReadonlyMap<string, ResolvedKeyToken>
interface BindingParserResultproperty BindingParserResult.nextIndex: numberproperty BindingParserResult.parts: KeySequencePart[]property BindingParserResult.unknownTokens?: readonly string[]property BindingParserResult.usedTokens?: readonly string[]
interface BindingTransformerContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>method BindingTransformerContext.add(binding: ParsedBinding<TTarget, TEvent>): voidmethod BindingTransformerContext.parseKey(key: KeyLike): KeySequencePartmethod BindingTransformerContext.skipOriginal(): voidproperty BindingTransformerContext.layer: Readonly<Record<string, unknown>>
interface CommandBindingsQuery<TTarget extends object = object>property CommandBindingsQuery.commands: readonly string[]property CommandBindingsQuery.focused?: TTarget | nullproperty CommandBindingsQuery.visibility?: "reachable" | "active" | "registered"
interface CommandContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent, TPayload = unknown>property CommandContext.command?: Command<TTarget, TEvent, TPayload>property CommandContext.data: Readonly<EventData>property CommandContext.event: TEventproperty CommandContext.focused: TTarget | nullproperty CommandContext.input: stringproperty CommandContext.keymap: Keymap<TTarget, TEvent>property CommandContext.payload: TPayloadproperty CommandContext.target: TTarget | null
interface CommandEntry<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property CommandEntry.bindings: readonly ActiveBinding<TTarget, TEvent>[]property CommandEntry.command: Command<TTarget, TEvent>
interface CommandFieldContextmethod CommandFieldContext.activeWhen(matcher: (() => boolean) | ReactiveMatcher): voidmethod CommandFieldContext.attr(name: string, value: unknown): voidmethod CommandFieldContext.require(name: string, value: unknown): void
interface CommandQuery<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property CommandQuery.filter?: CommandFilter<TTarget, TEvent>property CommandQuery.focused?: TTarget | nullproperty CommandQuery.limit?: numberproperty CommandQuery.namespace?: string | readonly string[]property CommandQuery.search?: stringproperty CommandQuery.searchIn?: readonly string[]property CommandQuery.visibility?: "reachable" | "active" | "registered"
interface CommandResolverContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>method CommandResolverContext.getCommand(name: string): Command<TTarget, TEvent> | undefinedmethod CommandResolverContext.setInput(input: string): voidmethod CommandResolverContext.setPayload(payload: unknown): voidreadonly property CommandResolverContext.input: stringreadonly property CommandResolverContext.payload: unknown
interface CommandTransformerContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>method CommandTransformerContext.add(command: Command<TTarget, TEvent>): voidmethod CommandTransformerContext.skipOriginal(): voidproperty CommandTransformerContext.layer: Readonly<Layer<TTarget, TEvent>>
interface DispatchBinding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> extends ActiveBinding<TTarget, TEvent>property DispatchBinding.bindingIndex: numberproperty DispatchBinding.sourceLayerOrder: number
interface DispatchEvent<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property DispatchEvent.binding?: DispatchBinding<TTarget, TEvent>property DispatchEvent.command?: BindingCommand<TTarget, TEvent>property DispatchEvent.event: BindingEventproperty DispatchEvent.focused: TTarget | nullproperty DispatchEvent.layer?: DispatchLayer<TTarget>property DispatchEvent.phase: DispatchPhaseproperty DispatchEvent.sequence: readonly KeySequencePart[]
interface DispatchLayer<TTarget extends object = object>property DispatchLayer.order: numberproperty DispatchLayer.priority: numberproperty DispatchLayer.target?: TTargetproperty DispatchLayer.targetMode?: TargetMode
interface ErrorEventproperty ErrorEvent.code: stringproperty ErrorEvent.error: unknownproperty ErrorEvent.message: string
interface EventMatchResolverContextmethod EventMatchResolverContext.resolveKey(key: KeyLike): KeyMatch
interface HostMetadataproperty HostMetadata.modifiers: Record<HostModifier, HostCapability>property HostMetadata.platform: HostPlatformproperty HostMetadata.primaryModifier: "ctrl" | "super" | "unknown"
interface KeyAfterInputContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property KeyAfterInputContext.consume: (options?: { preventDefault?: boolean; stopPropagation?: boolean; }) => voidproperty KeyAfterInputContext.event: TEventproperty KeyAfterInputContext.eventType: BindingEventproperty KeyAfterInputContext.focused: TTarget | nullproperty KeyAfterInputContext.getData: (name: string) => unknownproperty KeyAfterInputContext.handled: booleanproperty KeyAfterInputContext.pendingSequence: readonly KeySequencePart[]property KeyAfterInputContext.reason: KeyAfterReasonproperty KeyAfterInputContext.sequence: readonly KeySequencePart[]property KeyAfterInputContext.setData: (name: string, value: unknown) => void
interface KeyDeferredDisambiguationContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>method KeyDeferredDisambiguationContext.clear(): KeyDeferredDisambiguationDecisionmethod KeyDeferredDisambiguationContext.continueSequence(): KeyDeferredDisambiguationDecisionmethod KeyDeferredDisambiguationContext.runExact(): KeyDeferredDisambiguationDecisionmethod KeyDeferredDisambiguationContext.sleep(ms: number): Promise<boolean>readonly property KeyDeferredDisambiguationContext.focused: TTarget | nullreadonly property KeyDeferredDisambiguationContext.sequence: readonly KeySequencePart[]readonly property KeyDeferredDisambiguationContext.signal: AbortSignal
interface KeyDeferredDisambiguationDecisionreadonly property KeyDeferredDisambiguationDecision.[KEY_DEFERRED_DISAMBIGUATION_DECISION]: true
interface KeyDisambiguationContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>method KeyDisambiguationContext.clear(): KeyDisambiguationDecisionmethod KeyDisambiguationContext.continueSequence(): KeyDisambiguationDecisionmethod KeyDisambiguationContext.defer(run: KeyDeferredDisambiguationHandler<TTarget, TEvent>): KeyDisambiguationDecisionmethod KeyDisambiguationContext.getData(name: string): unknownmethod KeyDisambiguationContext.runExact(): KeyDisambiguationDecisionmethod KeyDisambiguationContext.setData(name: string, value: unknown): voidreadonly property KeyDisambiguationContext.continuations: readonly ActiveKey<TTarget, TEvent>[]readonly property KeyDisambiguationContext.event: Readonly<Omit<TEvent, "preventDefault" | "stopPropagation">>readonly property KeyDisambiguationContext.exact: readonly ActiveBinding<TTarget, TEvent>[]readonly property KeyDisambiguationContext.focused: TTarget | nullreadonly property KeyDisambiguationContext.sequence: readonly KeySequencePart[]readonly property KeyDisambiguationContext.stroke: KeySequencePart
interface KeyDisambiguationDecisionreadonly property KeyDisambiguationDecision.[KEY_DISAMBIGUATION_DECISION]: true
interface KeyInputContext<TEvent extends KeymapEvent = KeymapEvent>property KeyInputContext.consume: (options?: { preventDefault?: boolean; stopPropagation?: boolean; }) => voidproperty KeyInputContext.event: TEventproperty KeyInputContext.getData: (name: string) => unknownproperty KeyInputContext.setData: (name: string, value: unknown) => void
interface KeyInterceptOptionsproperty KeyInterceptOptions.priority?: numberproperty KeyInterceptOptions.release?: boolean
interface KeymapEventmethod KeymapEvent.preventDefault(): voidmethod KeymapEvent.stopPropagation(): voidproperty KeymapEvent.ctrl: booleanproperty KeymapEvent.hyper?: booleanproperty KeymapEvent.meta: booleanproperty KeymapEvent.name: stringproperty KeymapEvent.shift: booleanproperty KeymapEvent.super?: booleanreadonly property KeymapEvent.propagationStopped: boolean
interface KeymapExtensionContext<TTarget extends object, TEvent extends KeymapEvent>property KeymapExtensionContext.activation: ActivationService<TTarget, TEvent>property KeymapExtensionContext.catalog: CommandCatalogService<TTarget, TEvent>property KeymapExtensionContext.conditions: ConditionService<TTarget, TEvent>property KeymapExtensionContext.host: KeymapHost<TTarget, TEvent>property KeymapExtensionContext.state: State<TTarget, TEvent>
interface KeymapExtensionProvider<TTarget extends object, TEvent extends KeymapEvent>method KeymapExtensionProvider.[KEYMAP_EXTENSION_CONTEXT](): KeymapExtensionContext<TTarget, TEvent>
interface KeymapHost<TTarget extends object, TEvent extends KeymapEvent = KeymapEvent>method KeymapHost.createCommandEvent(): TEventmethod KeymapHost.getFocusedTarget(): TTarget | nullmethod KeymapHost.getParentTarget(target: TTarget): TTarget | nullmethod KeymapHost.isTargetDestroyed(target: TTarget): booleanmethod KeymapHost.onDestroy?(listener: () => void): () => voidmethod KeymapHost.onFocusChange(listener: (target: TTarget | null) => void): () => voidmethod KeymapHost.onKeyPress(listener: (event: TEvent) => void): () => voidmethod KeymapHost.onKeyRelease(listener: (event: TEvent) => void): () => voidmethod KeymapHost.onRawInput?(listener: (sequence: string) => boolean): () => voidmethod KeymapHost.onTargetDestroy(target: TTarget, listener: () => void): () => voidreadonly property KeymapHost.isDestroyed: booleanreadonly property KeymapHost.metadata: HostMetadatareadonly property KeymapHost.rootTarget: TTarget
interface KeySequencePartproperty KeySequencePart.display: stringproperty KeySequencePart.match: KeyMatchproperty KeySequencePart.patternName?: stringproperty KeySequencePart.payloadKey?: stringproperty KeySequencePart.stroke: NormalizedKeyStrokeproperty KeySequencePart.tokenName?: string
interface KeyStrokeInputproperty KeyStrokeInput.ctrl?: booleanproperty KeyStrokeInput.hyper?: booleanproperty KeyStrokeInput.meta?: booleanproperty KeyStrokeInput.name: stringproperty KeyStrokeInput.shift?: booleanproperty KeyStrokeInput.super?: boolean
interface KeyTokenproperty KeyToken.key: KeyLikeproperty KeyToken.name: string
interface LayerAnalysisContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>method LayerAnalysisContext.checkCommandResolution(command: string): CommandResolutionStatusmethod LayerAnalysisContext.error(code: string, error: unknown, message: string): voidmethod LayerAnalysisContext.warn(code: string, warning: unknown, message: string): voidmethod LayerAnalysisContext.warnOnce(key: string, code: string, warning: unknown, message: string): voidproperty LayerAnalysisContext.bindings: readonly LayerBindingAnalysis<TTarget, TEvent>[]property LayerAnalysisContext.hasTokenBindings: booleanproperty LayerAnalysisContext.order: numberproperty LayerAnalysisContext.sourceBindings: readonly Binding<TTarget, TEvent>[]property LayerAnalysisContext.target?: TTarget
interface LayerBindingAnalysis<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property LayerBindingAnalysis.attrs?: Readonly<Attributes>property LayerBindingAnalysis.bindingIndex: numberproperty LayerBindingAnalysis.command?: BindingCommand<TTarget, TEvent>property LayerBindingAnalysis.event: BindingEventproperty LayerBindingAnalysis.fallthrough: booleanproperty LayerBindingAnalysis.hasCommandAtSequence: booleanproperty LayerBindingAnalysis.hasContinuations: booleanproperty LayerBindingAnalysis.parsedBinding: ParsedBinding<TTarget, TEvent>property LayerBindingAnalysis.preventDefault: booleanproperty LayerBindingAnalysis.sequence: KeySequencePart[]property LayerBindingAnalysis.sourceLayerOrder: numberproperty LayerBindingAnalysis.sourceTarget?: TTarget
interface LayerBindingsTransformerContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>method LayerBindingsTransformerContext.validateBindings(bindings: unknown): BindingsValidationResultproperty LayerBindingsTransformerContext.layer: Readonly<Layer<TTarget, TEvent>>
interface LayerFieldContextmethod LayerFieldContext.activeWhen(matcher: (() => boolean) | ReactiveMatcher): voidmethod LayerFieldContext.attr(name: string, value: unknown): voidmethod LayerFieldContext.require(name: string, value: unknown): void
interface NormalizedKeyStroke extends KeyStrokeInputproperty NormalizedKeyStroke.ctrl: booleanproperty NormalizedKeyStroke.meta: booleanproperty NormalizedKeyStroke.shift: booleanproperty NormalizedKeyStroke.super: boolean
interface ParsedCommandproperty ParsedCommand.args: string[]property ParsedCommand.input: stringproperty ParsedCommand.name: string
interface RawInputContextproperty RawInputContext.sequence: stringproperty RawInputContext.stop: () => void
interface RawInterceptOptionsproperty RawInterceptOptions.priority?: number
interface ReactiveMatchermethod ReactiveMatcher.get(): booleanmethod ReactiveMatcher.subscribe(onChange: () => void): () => void
interface ResolvedKeyTokenproperty ResolvedKeyToken.match: KeyMatchproperty ResolvedKeyToken.stroke: NormalizedKeyStroke
interface ResolvedSequencePattern<TEvent extends KeymapEvent = KeymapEvent>method ResolvedSequencePattern.matcher(event: TEvent): SequencePatternMatch | undefinedproperty ResolvedSequencePattern.display?: stringproperty ResolvedSequencePattern.finalize?: (values: readonly unknown[]) => unknownproperty ResolvedSequencePattern.match: KeyMatchproperty ResolvedSequencePattern.max: numberproperty ResolvedSequencePattern.min: numberproperty ResolvedSequencePattern.name: stringproperty ResolvedSequencePattern.payloadKey: string
interface RunCommandOptions<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property RunCommandOptions.event?: TEventproperty RunCommandOptions.focused?: TTarget | nullproperty RunCommandOptions.includeCommand?: booleanproperty RunCommandOptions.payload?: unknownproperty RunCommandOptions.target?: TTarget | null
interface SequencePattern<TEvent extends KeymapEvent = KeymapEvent>method SequencePattern.finalize?(values: readonly unknown[]): unknownmethod SequencePattern.match(event: TEvent): SequencePatternMatch | undefinedproperty SequencePattern.display?: stringproperty SequencePattern.max?: numberproperty SequencePattern.min?: numberproperty SequencePattern.name: stringproperty SequencePattern.payloadKey?: string
interface SequencePatternMatchproperty SequencePatternMatch.display?: stringproperty SequencePatternMatch.value?: unknown
interface StringifyOptionsproperty StringifyOptions.preferDisplay?: booleanproperty StringifyOptions.separator?: string
interface WarningEventproperty WarningEvent.code: stringproperty WarningEvent.message: stringproperty WarningEvent.warning: unknown
Types#
type Attributes = Record<string, unknown>type BindingCommand<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = string | CommandHandler<TTarget, TEvent>type BindingEvent = "press" | "release"type BindingExpander = (ctx: BindingExpanderContext) => readonly BindingExpansion[] | undefinedtype BindingFieldCompiler = (value: unknown, ctx: BindingFieldContext) => voidtype BindingParser = (ctx: BindingParserContext) => BindingParserResult | undefinedtype Bindings<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = readonly Binding<TTarget, TEvent>[]type BindingsValidationResult = { ok: true; } | { ok: false; reason: string; }type BindingTransformer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (binding: ParsedBinding<TTarget, TEvent>, ctx: BindingTransformerContext<TTarget, TEvent>) => voidtype CommandFieldCompiler = (value: unknown, ctx: CommandFieldContext) => voidtype CommandFilter<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = Readonly<Record<string, CommandQueryValue<TTarget, TEvent>>> | ((command: Command<TTarget, TEvent>) => boolean)type CommandHandler<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent, TPayload = unknown> = (ctx: CommandContext<TTarget, TEvent, TPayload>) => CommandResult<TTarget, TEvent>type CommandQueryValue<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = unknown | readonly unknown[] | ((value: unknown, command: Command<TTarget, TEvent>) => boolean)type CommandResolver<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (command: string, ctx: CommandResolverContext<TTarget, TEvent>) => Command<TTarget, TEvent> | undefinedtype CommandResult<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = boolean | void | RunCommandResult<TTarget, TEvent> | Promise<boolean | void | RunCommandResult<TTarget, TEvent>>type CommandTransformer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (command: Command<TTarget, TEvent>, ctx: CommandTransformerContext<TTarget, TEvent>) => voidtype DispatchPhase = "sequence-start" | "sequence-advance" | "sequence-clear" | "binding-execute" | "binding-reject"type EventData = Record<string, unknown>type EventMatchResolver<TEvent extends KeymapEvent = KeymapEvent> = (event: TEvent, ctx: EventMatchResolverContext) => readonly KeyMatch[] | undefinedtype EventName = keyof Eventstype Events<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = Hooks<TTarget, TEvent> & { warning: WarningEvent; error: ErrorEvent; }type HostCapability = "supported" | "unsupported" | "unknown"type HostModifier = "ctrl" | "shift" | "meta" | "super" | "hyper"type HostPlatform = "macos" | "windows" | "linux" | "unknown"type InterceptName = keyof Interceptstype Intercepts<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = { key: KeyInputContext<TEvent>; "key:after": KeyAfterInputContext<TTarget, TEvent>; raw: RawInputContext; }type KeyAfterReason = "intercept-consumed" | "binding-handled" | "binding-rejected" | "no-match" | "sequence-pending" | "sequence-miss" | "sequence-cleared"type KeyDeferredDisambiguationHandler<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (ctx: KeyDeferredDisambiguationContext<TTarget, TEvent>) => KeyDeferredDisambiguationDecision | void | Promise<KeyDeferredDisambiguationDecision | void>type KeyDisambiguationResolver<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (ctx: KeyDisambiguationContext<TTarget, TEvent>) => KeyDisambiguationDecision | undefinedtype KeyLike = string | KeyStrokeInputtype KeyMatch = stringtype KeyStringifyInput = KeyStrokeInput | NormalizedKeyStroke | KeySequencePart | { stroke: NormalizedKeyStroke; display?: string; }type LayerAnalyzer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (ctx: LayerAnalysisContext<TTarget, TEvent>) => voidtype LayerBindingsTransformer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (bindings: readonly Binding<TTarget, TEvent>[], ctx: LayerBindingsTransformerContext<TTarget, TEvent>) => readonly Binding<TTarget, TEvent>[] | voidtype LayerFieldCompiler = (value: unknown, ctx: LayerFieldContext) => voidtype Listener<TValue> = [ TValue ] extends [ void ] ? () => void : (value: TValue) => voidtype RunCommandResult<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = { ok: true; command?: Command<TTarget, TEvent>; } | { ok: false; reason: "not-found"; } | { ok: false; reason: "inactive" | "disabled" | "invalid-args" | "rejected" | "error"; command?: Command<TTarget, TEvent>; }type TargetMode = "focus" | "focus-within"
Constants and variables#
const KEYMAP_EXTENSION_CONTEXT: unique symbol
Namespaces and re-exports#
index Binding[key: string]: unknowninterface Binding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property Binding.cmd?: BindingCommand<TTarget, TEvent>property Binding.event?: BindingEventproperty Binding.fallthrough?: booleanproperty Binding.key: KeyLikeproperty Binding.preventDefault?: boolean
index Command[key: string]: unknowninterface Command<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent, TPayload = unknown>method Command.run(ctx: CommandContext<TTarget, TEvent, TPayload>): CommandResult<TTarget, TEvent>property Command.name: string
index Layer[key: string]: unknowninterface Layer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property Layer.bindings?: Bindings<TTarget, TEvent>property Layer.commands?: readonly Command<TTarget, TEvent, any>[]property Layer.priority?: numberproperty Layer.target?: TTargetproperty Layer.targetMode?: TargetMode
index ParsedBinding[key: string]: unknowninterface ParsedBinding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>property ParsedBinding.cmd?: BindingCommand<TTarget, TEvent>property ParsedBinding.event?: BindingEventproperty ParsedBinding.fallthrough?: booleanproperty ParsedBinding.key: KeyLikeproperty ParsedBinding.preventDefault?: booleanproperty ParsedBinding.sequence: KeySequencePart[]