diff --git a/src/curses/curses.go b/src/curses/curses.go index ebe6415..0ad382b 100644 --- a/src/curses/curses.go +++ b/src/curses/curses.go @@ -81,6 +81,8 @@ const ( F3 F4 + AltEnter + AltSpace AltBS AltA AltB @@ -417,6 +419,10 @@ func escSequence(sz *int) Event { } *sz = 2 switch _buf[1] { + case 13: + return Event{AltEnter, 0, nil} + case 32: + return Event{AltSpace, 0, nil} case 98: return Event{AltB, 0, nil} case 100: diff --git a/src/options.go b/src/options.go index ab63308..4d5ac2d 100644 --- a/src/options.go +++ b/src/options.go @@ -315,6 +315,10 @@ func parseKeyChords(str string, message string) map[int]string { chord = curses.AltZ + int(' ') case "bspace", "bs": chord = curses.BSpace + case "alt-enter", "alt-return": + chord = curses.AltEnter + case "alt-space": + chord = curses.AltSpace case "alt-bs", "alt-bspace": chord = curses.AltBS case "tab": diff --git a/src/options_test.go b/src/options_test.go index 81845d2..f3e62f8 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -123,14 +123,14 @@ func TestIrrelevantNth(t *testing.T) { } func TestParseKeys(t *testing.T) { - pairs := parseKeyChords("ctrl-z,alt-z,f2,@,Alt-a,!,ctrl-G,J,g", "") + pairs := parseKeyChords("ctrl-z,alt-z,f2,@,Alt-a,!,ctrl-G,J,g,ALT-enter,alt-SPACE", "") check := func(i int, s string) { if pairs[i] != s { t.Errorf("%s != %s", pairs[i], s) } } - if len(pairs) != 9 { - t.Error(9) + if len(pairs) != 11 { + t.Error(11) } check(curses.CtrlZ, "ctrl-z") check(curses.AltZ, "alt-z") @@ -141,6 +141,8 @@ func TestParseKeys(t *testing.T) { check(curses.CtrlA+'g'-'a', "ctrl-G") check(curses.AltZ+'J', "J") check(curses.AltZ+'g', "g") + check(curses.AltEnter, "ALT-enter") + check(curses.AltSpace, "alt-SPACE") // Synonyms pairs = parseKeyChords("enter,Return,space,tab,btab,esc,up,down,left,right", "")