keybinding

package
v0.142.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsValidKey added in v0.77.0

func IsValidKey(key string) bool

IsValidKey checks if a key string is a known/valid key This is exposed for use in validation commands

func NewHintFormatterFromRegistry added in v0.77.0

func NewHintFormatterFromRegistry(registry *Registry) *hints.Formatter

NewHintFormatterFromRegistry creates a hints.Formatter from a keybinding Registry

Types

type ContextCondition

type ContextCondition struct {
	Name  string
	Check func(app KeyHandlerContext) bool
}

ContextCondition represents a condition that must be met for key binding to be active

type HelpShortcut

type HelpShortcut struct {
	Key         string
	Description string
	Category    string
}

HelpShortcut represents a key shortcut for help display

type KeyAction

type KeyAction struct {
	ID       string
	Category string
	Binding  key.Binding
	Handler  KeyHandler
	Context  KeyContext
}

KeyAction represents a key binding action. Keys, description, and enabled state live in the Binding, which is constructed at registry init from the resolved keybindings config (defaults + keybindings.yaml overrides) — the single source of truth shared by dispatch and help rendering.

type KeyBindingManager

type KeyBindingManager struct {
	// contains filtered or unexported fields
}

KeyBindingManager manages the key binding system for ChatApplication

func NewKeyBindingManager

func NewKeyBindingManager(app KeyHandlerContext, cfg *config.Config) *KeyBindingManager

NewKeyBindingManager creates a new key binding manager

func (*KeyBindingManager) GetHelpShortcuts

func (m *KeyBindingManager) GetHelpShortcuts() []HelpShortcut

GetHelpShortcuts returns help shortcuts for the current context

func (*KeyBindingManager) GetHintFormatter added in v0.77.0

func (m *KeyBindingManager) GetHintFormatter() *hints.Formatter

GetHintFormatter returns a hint formatter for displaying keybinding hints in UI

func (*KeyBindingManager) GetRegistry

func (m *KeyBindingManager) GetRegistry() *Registry

GetRegistry returns the underlying registry (for advanced usage)

func (*KeyBindingManager) IsKeyHandledByAction added in v0.56.0

func (m *KeyBindingManager) IsKeyHandledByAction(keyMsg tea.KeyPressMsg) bool

IsKeyHandledByAction returns true if the key would be handled by a keybinding action

func (*KeyBindingManager) ProcessKey

func (m *KeyBindingManager) ProcessKey(keyMsg tea.KeyPressMsg) tea.Cmd

ProcessKey handles key input and executes the appropriate action

func (*KeyBindingManager) ShouldSkipInputUpdate added in v0.142.0

func (m *KeyBindingManager) ShouldSkipInputUpdate(keyMsg tea.KeyPressMsg) bool

ShouldSkipInputUpdate reports whether a keybinding action fully consumed the key. Textarea-owned editing actions still pass through to InputView.Update.

type KeyContext

type KeyContext struct {
	Views        []domain.ViewState
	Conditions   []ContextCondition
	ExcludeViews []domain.ViewState
}

KeyContext defines when and where a key binding is active

type KeyHandler

type KeyHandler func(app KeyHandlerContext, keyMsg tea.KeyPressMsg) tea.Cmd

KeyHandler represents a function that handles a key binding

type KeyHandlerContext

type KeyHandlerContext interface {
	// State management
	GetStateManager() domain.StateManager
	GetConversationRepository() domain.ConversationRepository
	GetConfig() *config.Config
	GetConfigDir() string

	// Services
	GetAgentService() domain.AgentService
	GetImageService() domain.ImageService

	// UI components
	GetConversationView() ui.ConversationRenderer
	GetInputView() ui.InputComponent
	GetStatusView() ui.StatusComponent
	GetAutocomplete() ui.AutocompleteComponent

	// Actions
	ToggleToolResultExpansion()
	ToggleThinkingExpansion()
	ToggleRawFormat()
	SendMessage() tea.Cmd
	GetPageSize() int

	// Mouse mode
	GetMouseEnabled() bool
	SetMouseEnabled(bool)
}

KeyHandlerContext provides access to application context for key handlers

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry holds all key binding actions and resolves key presses against their bubbles/key Bindings. View-scoped actions win over global ones; within a scope, registration order breaks ties.

func NewRegistry

func NewRegistry(cfg *config.Config) *Registry

NewRegistry creates a registry whose action Bindings are resolved from the keybindings config: built-in defaults merged with any keybindings.yaml overrides. Dispatch and help both read these same Bindings.

func (*Registry) GetAction

func (r *Registry) GetAction(id string) *KeyAction

GetAction retrieves an action by ID

func (*Registry) GetActiveActions

func (r *Registry) GetActiveActions(app KeyHandlerContext) []*KeyAction

GetActiveActions returns all currently active actions

func (*Registry) GetHelpShortcuts

func (r *Registry) GetHelpShortcuts(app KeyHandlerContext) []HelpShortcut

GetHelpShortcuts generates help shortcuts for current context

func (*Registry) GetSequenceActionForPrefix added in v0.91.0

func (r *Registry) GetSequenceActionForPrefix(prefix string, app KeyHandlerContext) *KeyAction

GetSequenceActionForPrefix returns the action that matches a sequence starting with the given prefix

func (*Registry) HasSequenceWithPrefix added in v0.91.0

func (r *Registry) HasSequenceWithPrefix(prefix string, app KeyHandlerContext) bool

HasSequenceWithPrefix checks if any registered action has a key sequence that starts with the given prefix

func (*Registry) KnownActionIDs added in v0.128.0

func (r *Registry) KnownActionIDs() []string

KnownActionIDs returns every action ID the application recognises: the runtime registry actions unioned with the default keybindings config IDs (which include the namespace-path actions consumed directly via config.ResolveNamespaceBindings). The CLI validator shares this notion of "valid" so they agree on what is a genuine typo.

func (*Registry) ListAllActions added in v0.77.0

func (r *Registry) ListAllActions() []*KeyAction

ListAllActions returns all registered actions for debugging/management

func (*Registry) Register

func (r *Registry) Register(action *KeyAction) error

Register adds a key binding action to the registry. Multiple actions can share the same key - view context resolves conflicts.

func (*Registry) Resolve

func (r *Registry) Resolve(msg tea.KeyPressMsg, app KeyHandlerContext) *KeyAction

Resolve finds the action bound to a pressed key via key.Matches. View-scoped actions are consulted before global ones, mirroring the old layer priorities.

func (*Registry) ResolveKey added in v0.142.1

func (r *Registry) ResolveKey(keyStr string, app KeyHandlerContext) *KeyAction

ResolveKey resolves a raw key string, used for comma-joined sequences ("esc,esc") that never arrive as a single tea.KeyPressMsg — bubbles/key has no chord support, so sequences stay string-matched.

type Theme

type Theme = ui.Theme

Theme is an alias to the ui Theme interface

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL