1package takuzu23import (4 "charm.land/bubbles/v2/key"5 "github.com/FelineStateMachine/puzzletea/game"6)78type KeyMap struct {9 game.CursorKeyMap10 PlaceZero key.Binding11 PlaceOne key.Binding12 Clear key.Binding13}1415var DefaultKeyMap = KeyMap{16 CursorKeyMap: game.DefaultCursorKeyMap,17 PlaceZero: key.NewBinding(18 key.WithKeys("z", "0"),19 key.WithHelp("z/0", "Place ●"),20 ),21 PlaceOne: key.NewBinding(22 key.WithKeys("x", "1"),23 key.WithHelp("x/1", "Place ○"),24 ),25 Clear: key.NewBinding(26 key.WithKeys("backspace", "delete"),27 key.WithHelp("bkspc", "Clear"),28 ),29}3031func (m *Model) updateKeyBindings() {32 m.keys.Up.SetEnabled(m.cursor.Y > 0)33 m.keys.Down.SetEnabled(m.cursor.Y < m.size-1)34 m.keys.Left.SetEnabled(m.cursor.X > 0)35 m.keys.Right.SetEnabled(m.cursor.X < m.size-1)3637 onProvided := m.provided[m.cursor.Y][m.cursor.X]38 solved := m.solved39 m.keys.PlaceZero.SetEnabled(!onProvided && !solved)40 m.keys.PlaceOne.SetEnabled(!onProvided && !solved)41 m.keys.Clear.SetEnabled(!onProvided && !solved)42}4344func (m Model) GetFullHelp() [][]key.Binding {45 return [][]key.Binding{46 {m.keys.Up, m.keys.Down, m.keys.Left, m.keys.Right},47 {m.keys.PlaceZero, m.keys.PlaceOne, m.keys.Clear},48 }49}