Fix keymaps. Backtab
This commit is contained in:
21
keymap.go
21
keymap.go
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user