Fix keymaps. Backtab

This commit is contained in:
2025-10-26 11:33:46 -05:00
parent d63e3a414a
commit 8f6e52df41
3 changed files with 39 additions and 14 deletions

View File

@@ -21,7 +21,9 @@ THE SOFTWARE.
*/
package widgets
import "github.com/gdamore/tcell"
import (
"github.com/gdamore/tcell"
)
type Key struct {
ev *tcell.EventKey
@@ -39,6 +41,8 @@ func NewKey(ev *tcell.EventKey, do func(*tcell.EventKey) bool) *Key {
}
}
func (k *Key) EventKey() *tcell.EventKey { return k.ev }
func (k *Key) AddBinding(do func(*tcell.EventKey) bool) *Key {
k.do = append(k.do, do)
return k
@@ -49,9 +53,15 @@ func (k *Key) SetDescription(d string) *Key {
return k
}
func (k *Key) Description() string { return k.desc }
func (k *Key) Matches(ev *tcell.EventKey) bool {
if k.ev.Key() == tcell.KeyRune {
return k.ev.Key() == ev.Key() &&
k.ev.Rune() == ev.Rune() &&
k.ev.Modifiers() == ev.Modifiers()
}
return k.ev.Key() == ev.Key() &&
k.ev.Rune() == ev.Rune() &&
k.ev.Modifiers() == ev.Modifiers()
}
@@ -67,12 +77,14 @@ func (k *Key) Handle(ev *tcell.EventKey) bool {
}
type KeyMap struct {
Keys []*Key
Keys []*Key
logger func(string, ...any)
}
func BlankKeyMap() *KeyMap { return &KeyMap{} }
func NewKeyMap(k *Key, rest ...*Key) *KeyMap {
ret := &KeyMap{}
ret.Add(k, rest...)
return ret
}
@@ -109,6 +121,9 @@ func (m *KeyMap) Add(k *Key, rest ...*Key) {
} else {
m.Keys = append(m.Keys, k)
}
for i := range rest {
m.Add(rest[i])
}
}
func (m *KeyMap) Remove(k *Key, rest ...*Key) {