89 lines
1.9 KiB
Go
89 lines
1.9 KiB
Go
package main
|
|
|
|
import "github.com/charmbracelet/bubbles/key"
|
|
|
|
type keyMap struct {
|
|
Up key.Binding
|
|
Down key.Binding
|
|
Top key.Binding
|
|
Bottom key.Binding
|
|
Tab key.Binding
|
|
ShiftTab key.Binding
|
|
FocusInput key.Binding
|
|
Unfocus key.Binding
|
|
Quit key.Binding
|
|
Help key.Binding
|
|
Send key.Binding
|
|
MemberToggle key.Binding
|
|
ChannelPicker key.Binding
|
|
}
|
|
|
|
var keys = keyMap{
|
|
Up: key.NewBinding(
|
|
key.WithKeys("k", "up"),
|
|
key.WithHelp("k/↑", "up"),
|
|
),
|
|
Down: key.NewBinding(
|
|
key.WithKeys("j", "down"),
|
|
key.WithHelp("j/↓", "down"),
|
|
),
|
|
Top: key.NewBinding(
|
|
key.WithKeys("g"),
|
|
key.WithHelp("g", "top"),
|
|
),
|
|
Bottom: key.NewBinding(
|
|
key.WithKeys("G"),
|
|
key.WithHelp("G", "bottom"),
|
|
),
|
|
Tab: key.NewBinding(
|
|
key.WithKeys("tab"),
|
|
key.WithHelp("tab", "next pane"),
|
|
),
|
|
ShiftTab: key.NewBinding(
|
|
key.WithKeys("shift+tab"),
|
|
key.WithHelp("shift+tab", "prev pane"),
|
|
),
|
|
FocusInput: key.NewBinding(
|
|
key.WithKeys("i"),
|
|
key.WithHelp("i", "focus input"),
|
|
),
|
|
Unfocus: key.NewBinding(
|
|
key.WithKeys("esc"),
|
|
key.WithHelp("esc", "unfocus"),
|
|
),
|
|
Quit: key.NewBinding(
|
|
key.WithKeys("q", "ctrl+c"),
|
|
key.WithHelp("q", "quit"),
|
|
),
|
|
Help: key.NewBinding(
|
|
key.WithKeys("?"),
|
|
key.WithHelp("?", "help"),
|
|
),
|
|
Send: key.NewBinding(
|
|
key.WithKeys("enter"),
|
|
key.WithHelp("enter", "send"),
|
|
),
|
|
MemberToggle: key.NewBinding(
|
|
key.WithKeys("m"),
|
|
key.WithHelp("m", "toggle members"),
|
|
),
|
|
ChannelPicker: key.NewBinding(
|
|
key.WithKeys("/"),
|
|
key.WithHelp("/", "channels"),
|
|
),
|
|
}
|
|
|
|
// helpItems returns relevant help items based on the current focus.
|
|
func helpItems(focused focusArea) []key.Binding {
|
|
switch focused {
|
|
case focusInput:
|
|
return []key.Binding{keys.Send, keys.Unfocus}
|
|
default:
|
|
return []key.Binding{
|
|
keys.Up, keys.Down, keys.Top, keys.Bottom,
|
|
keys.Tab, keys.FocusInput, keys.MemberToggle,
|
|
keys.ChannelPicker, keys.Help, keys.Quit,
|
|
}
|
|
}
|
|
}
|