2026-03-13 14:34:30 +00:00
|
|
|
package keybinding
|
|
|
|
|
|
2026-03-31 16:37:47 +01:00
|
|
|
import core "dappco.re/go/core"
|
2026-03-13 14:34:30 +00:00
|
|
|
|
2026-03-31 16:37:47 +01:00
|
|
|
var ErrorAlreadyRegistered = core.E("keybinding", "accelerator already registered", nil)
|
|
|
|
|
var ErrorNotRegistered = core.E("keybinding", "accelerator not registered", nil)
|
2026-03-13 14:34:30 +00:00
|
|
|
|
2026-03-31 12:18:41 +01:00
|
|
|
// BindingInfo describes a registered global key binding.
|
2026-03-13 14:34:30 +00:00
|
|
|
type BindingInfo struct {
|
|
|
|
|
Accelerator string `json:"accelerator"`
|
|
|
|
|
Description string `json:"description"`
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-31 12:18:41 +01:00
|
|
|
// QueryList returns all registered key bindings. Result: []BindingInfo
|
2026-03-13 14:34:30 +00:00
|
|
|
type QueryList struct{}
|
|
|
|
|
|
2026-03-31 12:18:41 +01:00
|
|
|
// TaskAdd registers a global key binding. Error: ErrorAlreadyRegistered if accelerator taken.
|
2026-03-13 14:34:30 +00:00
|
|
|
type TaskAdd struct {
|
|
|
|
|
Accelerator string `json:"accelerator"`
|
|
|
|
|
Description string `json:"description"`
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-31 14:55:01 +01:00
|
|
|
// TaskRemove unregisters a global key binding by accelerator. Error: ErrorNotRegistered if not found.
|
2026-03-13 14:34:30 +00:00
|
|
|
type TaskRemove struct {
|
|
|
|
|
Accelerator string `json:"accelerator"`
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-31 14:55:01 +01:00
|
|
|
// TaskProcess triggers a registered key binding programmatically.
|
|
|
|
|
// Returns ActionTriggered if the accelerator was handled, ErrorNotRegistered if not found.
|
|
|
|
|
//
|
|
|
|
|
// c.PERFORM(keybinding.TaskProcess{Accelerator: "Ctrl+S"})
|
|
|
|
|
type TaskProcess struct {
|
|
|
|
|
Accelerator string `json:"accelerator"`
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-31 12:18:41 +01:00
|
|
|
// ActionTriggered is broadcast when a registered key binding fires.
|
2026-03-13 14:34:30 +00:00
|
|
|
type ActionTriggered struct {
|
|
|
|
|
Accelerator string `json:"accelerator"`
|
|
|
|
|
}
|