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")), }