Skip to content

Commit 5540cae

Browse files
authored
Merge pull request zyedidia#3337 from dmaluka/keyrune-usage-fix
Fix usage of tcell's `Rune()`
2 parents 9face74 + 25c7fa5 commit 5540cae

File tree

5 files changed

+16
-34
lines changed

5 files changed

+16
-34
lines changed

internal/action/bindings.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -176,31 +176,18 @@ modSearch:
176176
// see if the key is in bindingKeys with the Ctrl prefix.
177177
k = string(unicode.ToUpper(rune(k[0]))) + k[1:]
178178
if code, ok := keyEvents["Ctrl"+k]; ok {
179-
var r tcell.Key
180-
// Special case for escape, for some reason tcell doesn't send it with the esc character
181-
if code < 256 && code != 27 {
182-
r = code
183-
}
184-
// It is, we're done.
185179
return KeyEvent{
186180
code: code,
187181
mod: modifiers,
188-
r: rune(r),
189182
}, true
190183
}
191184
}
192185

193186
// See if we can find the key in bindingKeys
194187
if code, ok := keyEvents[k]; ok {
195-
var r tcell.Key
196-
// Special case for escape, for some reason tcell doesn't send it with the esc character
197-
if code < 256 && code != 27 {
198-
r = code
199-
}
200188
return KeyEvent{
201189
code: code,
202190
mod: modifiers,
203-
r: rune(r),
204191
}, true
205192
}
206193

internal/action/bufpane.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -469,11 +469,7 @@ func (h *BufPane) HandleEvent(event tcell.Event) {
469469
h.paste(e.Text())
470470
h.Relocate()
471471
case *tcell.EventKey:
472-
ke := KeyEvent{
473-
code: e.Key(),
474-
mod: metaToAlt(e.Modifiers()),
475-
r: e.Rune(),
476-
}
472+
ke := keyEvent(e)
477473

478474
done := h.DoKeyEvent(ke)
479475
if !done && e.Key() == tcell.KeyRune {

internal/action/events.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,17 @@ func metaToAlt(mod tcell.ModMask) tcell.ModMask {
4444
return mod
4545
}
4646

47+
func keyEvent(e *tcell.EventKey) KeyEvent {
48+
ke := KeyEvent{
49+
code: e.Key(),
50+
mod: metaToAlt(e.Modifiers()),
51+
}
52+
if e.Key() == tcell.KeyRune {
53+
ke.r = e.Rune()
54+
}
55+
return ke
56+
}
57+
4758
func (k KeyEvent) Name() string {
4859
if k.any {
4960
return "<any>"
@@ -68,7 +79,7 @@ func (k KeyEvent) Name() string {
6879
if k.code == tcell.KeyRune {
6980
s = string(k.r)
7081
} else {
71-
s = fmt.Sprintf("Key[%d,%d]", k.code, int(k.r))
82+
s = fmt.Sprintf("Key[%d]", k.code)
7283
}
7384
}
7485
if len(m) != 0 {
@@ -155,11 +166,7 @@ func (m MouseEvent) Name() string {
155166
func ConstructEvent(event tcell.Event) (Event, error) {
156167
switch e := event.(type) {
157168
case *tcell.EventKey:
158-
return KeyEvent{
159-
code: e.Key(),
160-
mod: metaToAlt(e.Modifiers()),
161-
r: e.Rune(),
162-
}, nil
169+
return keyEvent(e), nil
163170
case *tcell.EventRaw:
164171
return RawEvent{
165172
esc: e.EscSeq(),

internal/action/infopane.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,7 @@ func (h *InfoPane) HandleEvent(event tcell.Event) {
8686
case *tcell.EventResize:
8787
// TODO
8888
case *tcell.EventKey:
89-
ke := KeyEvent{
90-
code: e.Key(),
91-
mod: metaToAlt(e.Modifiers()),
92-
r: e.Rune(),
93-
}
89+
ke := keyEvent(e)
9490

9591
done := h.DoKeyEvent(ke)
9692
hasYN := h.HasYN

internal/action/termpane.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,7 @@ func (t *TermPane) Unsplit() {
125125
// copy-paste
126126
func (t *TermPane) HandleEvent(event tcell.Event) {
127127
if e, ok := event.(*tcell.EventKey); ok {
128-
ke := KeyEvent{
129-
code: e.Key(),
130-
mod: metaToAlt(e.Modifiers()),
131-
r: e.Rune(),
132-
}
128+
ke := keyEvent(e)
133129
action, more := TermBindings.NextEvent(ke, nil)
134130

135131
if !more {

0 commit comments

Comments
 (0)