100 lines
3.8 KiB
Go
100 lines
3.8 KiB
Go
|
|
package setup
|
||
|
|
|
||
|
|
import "github.com/charmbracelet/bubbles/key"
|
||
|
|
|
||
|
|
//todo интегрировать нормально клавиши
|
||
|
|
|
||
|
|
// MainKeyMap структура главных клавиш
|
||
|
|
type MainKeyMap struct {
|
||
|
|
Help key.Binding //Клавиша помощи
|
||
|
|
Confirm key.Binding //Клавиша подтверждения
|
||
|
|
Exit key.Binding //Клавиша выхода
|
||
|
|
}
|
||
|
|
|
||
|
|
// ArrowKeyMap структура навигации
|
||
|
|
type ArrowKeyMap struct {
|
||
|
|
Up key.Binding //Клавиша перемещения наверх
|
||
|
|
Down key.Binding //Клавиша перемещения вниз
|
||
|
|
Left key.Binding //Клавиша перемещения влево
|
||
|
|
Right key.Binding //Клавиша перемещения вниз
|
||
|
|
Top key.Binding //Клавиша перемещения в самый верх
|
||
|
|
Bottom key.Binding //Клавиша перемещения в самый низ
|
||
|
|
}
|
||
|
|
|
||
|
|
// FormKeyMap структура клавиш формы
|
||
|
|
type FormKeyMap struct {
|
||
|
|
MainKeyMap //Главные клавиши
|
||
|
|
ArrowKeyMap //Клавиши навигации
|
||
|
|
LogWindow key.Binding //Клавиша окна логирования
|
||
|
|
Close key.Binding //Клавиша закрытия
|
||
|
|
}
|
||
|
|
|
||
|
|
// ListKeyMap структура клавиш списка приложений
|
||
|
|
type ListKeyMap struct {
|
||
|
|
MainKeyMap //Главные клавиши
|
||
|
|
ArrowKeyMap //Клавиши навигации
|
||
|
|
}
|
||
|
|
|
||
|
|
type BaseKeyMap struct {
|
||
|
|
Up key.Binding
|
||
|
|
Down key.Binding
|
||
|
|
Left key.Binding
|
||
|
|
Right key.Binding
|
||
|
|
Confirm key.Binding
|
||
|
|
Help key.Binding
|
||
|
|
Close key.Binding
|
||
|
|
Quit key.Binding
|
||
|
|
Log key.Binding
|
||
|
|
}
|
||
|
|
|
||
|
|
func (k BaseKeyMap) ShortHelp() []key.Binding {
|
||
|
|
return []key.Binding{k.Help, k.Log, k.Close, k.Quit}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (k BaseKeyMap) FullHelp() [][]key.Binding {
|
||
|
|
return [][]key.Binding{
|
||
|
|
{k.Up, k.Down, k.Right, k.Left},
|
||
|
|
{k.Confirm, k.Help, k.Log},
|
||
|
|
{k.Close, k.Quit},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
var MainKeys = MainKeyMap{
|
||
|
|
Help: key.NewBinding(key.WithKeys("?", "ctrl+h"), key.WithHelp("?/ctrl+h", "help")),
|
||
|
|
Confirm: key.NewBinding(key.WithKeys("enter"), key.WithHelp("enter", "confirm")),
|
||
|
|
Exit: key.NewBinding(key.WithKeys("ctrl+c"), key.WithHelp("ctrl+c", "exit")),
|
||
|
|
}
|
||
|
|
|
||
|
|
var ArrowKeys = ArrowKeyMap{
|
||
|
|
Up: key.NewBinding(key.WithKeys("up"), key.WithHelp("up", "move up")),
|
||
|
|
Down: key.NewBinding(key.WithKeys("down"), key.WithHelp("down", "move down")),
|
||
|
|
Left: key.NewBinding(key.WithKeys("left"), key.WithHelp("left", "move left")),
|
||
|
|
Right: key.NewBinding(key.WithKeys("right"), key.WithHelp("right", "move right")),
|
||
|
|
Top: key.NewBinding(key.WithKeys("home"), key.WithHelp("home", "to the top")),
|
||
|
|
Bottom: key.NewBinding(key.WithKeys("end"), key.WithHelp("end", "to the end")),
|
||
|
|
}
|
||
|
|
|
||
|
|
var FormKeys = FormKeyMap{
|
||
|
|
MainKeyMap: MainKeys,
|
||
|
|
ArrowKeyMap: ArrowKeys,
|
||
|
|
LogWindow: key.NewBinding(key.WithKeys("ctrl+l"), key.WithHelp("ctrl+l", "show/hide logs")),
|
||
|
|
Close: key.NewBinding(key.WithKeys("esc"), key.WithHelp("esc", "close select/close app setting")),
|
||
|
|
}
|
||
|
|
|
||
|
|
var ListKeys = ListKeyMap{
|
||
|
|
MainKeyMap: MainKeys,
|
||
|
|
ArrowKeyMap: ArrowKeys,
|
||
|
|
}
|
||
|
|
|
||
|
|
var keys = BaseKeyMap{
|
||
|
|
Up: key.NewBinding(key.WithKeys("up"), key.WithHelp("up", "move up")),
|
||
|
|
Down: key.NewBinding(key.WithKeys("down"), key.WithHelp("down", "move down")),
|
||
|
|
Left: key.NewBinding(key.WithKeys("left"), key.WithHelp("left", "move left")),
|
||
|
|
Right: key.NewBinding(key.WithKeys("right"), key.WithHelp("right", "move right")),
|
||
|
|
Confirm: key.NewBinding(key.WithKeys("enter"), key.WithHelp("enter", "confirm")),
|
||
|
|
Help: key.NewBinding(key.WithKeys("?", "ctrl+h"), key.WithHelp("?/ctrl+h", "help")),
|
||
|
|
Close: key.NewBinding(key.WithKeys("esc"), key.WithHelp("esc", "close")),
|
||
|
|
Quit: key.NewBinding(key.WithKeys("ctrl+c"), key.WithHelp("ctrl+c", "quit")),
|
||
|
|
Log: key.NewBinding(key.WithKeys("ctrl+l"), key.WithHelp("ctrl+l", "show/hide log window")),
|
||
|
|
}
|