summary refs log tree commit diff stats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/bindings.go15
-rw-r--r--config/bindings_test.go15
2 files changed, 26 insertions, 4 deletions
diff --git a/config/bindings.go b/config/bindings.go
index f517c73..eff48a6 100644
--- a/config/bindings.go
+++ b/config/bindings.go
@@ -12,8 +12,8 @@ import (
 
 type KeyStroke struct {
 	Modifiers tcell.ModMask
-	Key  tcell.Key
-	Rune rune
+	Key       tcell.Key
+	Rune      rune
 }
 
 type Binding struct {
@@ -133,8 +133,8 @@ func ParseKeyStrokes(keystrokes string) ([]KeyStroke, error) {
 		default:
 			strokes = append(strokes, KeyStroke{
 				Modifiers: tcell.ModNone,
-				Key:  tcell.KeyRune,
-				Rune: tok,
+				Key:       tcell.KeyRune,
+				Rune:      tok,
 			})
 		}
 	}
@@ -161,17 +161,24 @@ func init() {
 	keyNames["space"] = KeyStroke{tcell.ModNone, tcell.KeyRune, ' '}
 	keyNames["semicolon"] = KeyStroke{tcell.ModNone, tcell.KeyRune, ';'}
 	keyNames["enter"] = KeyStroke{tcell.ModNone, tcell.KeyEnter, 0}
+	keyNames["c-enter"] = KeyStroke{tcell.ModCtrl, tcell.KeyEnter, 0}
 	keyNames["up"] = KeyStroke{tcell.ModNone, tcell.KeyUp, 0}
+	keyNames["c-up"] = KeyStroke{tcell.ModCtrl, tcell.KeyUp, 0}
 	keyNames["down"] = KeyStroke{tcell.ModNone, tcell.KeyDown, 0}
+	keyNames["c-down"] = KeyStroke{tcell.ModCtrl, tcell.KeyDown, 0}
 	keyNames["right"] = KeyStroke{tcell.ModNone, tcell.KeyRight, 0}
+	keyNames["c-right"] = KeyStroke{tcell.ModCtrl, tcell.KeyRight, 0}
 	keyNames["left"] = KeyStroke{tcell.ModNone, tcell.KeyLeft, 0}
+	keyNames["c-left"] = KeyStroke{tcell.ModCtrl, tcell.KeyLeft, 0}
 	keyNames["upleft"] = KeyStroke{tcell.ModNone, tcell.KeyUpLeft, 0}
 	keyNames["upright"] = KeyStroke{tcell.ModNone, tcell.KeyUpRight, 0}
 	keyNames["downleft"] = KeyStroke{tcell.ModNone, tcell.KeyDownLeft, 0}
 	keyNames["downright"] = KeyStroke{tcell.ModNone, tcell.KeyDownRight, 0}
 	keyNames["center"] = KeyStroke{tcell.ModNone, tcell.KeyCenter, 0}
 	keyNames["pgup"] = KeyStroke{tcell.ModNone, tcell.KeyPgUp, 0}
+	keyNames["c-pgup"] = KeyStroke{tcell.ModCtrl, tcell.KeyPgUp, 0}
 	keyNames["pgdn"] = KeyStroke{tcell.ModNone, tcell.KeyPgDn, 0}
+	keyNames["c-pgdn"] = KeyStroke{tcell.ModCtrl, tcell.KeyPgDn, 0}
 	keyNames["home"] = KeyStroke{tcell.ModNone, tcell.KeyHome, 0}
 	keyNames["end"] = KeyStroke{tcell.ModNone, tcell.KeyEnd, 0}
 	keyNames["insert"] = KeyStroke{tcell.ModNone, tcell.KeyInsert, 0}
diff --git a/config/bindings_test.go b/config/bindings_test.go
index d07d65a..dab3b9f 100644
--- a/config/bindings_test.go
+++ b/config/bindings_test.go
@@ -55,7 +55,22 @@ func TestGetBinding(t *testing.T) {
 	}, BINDING_NOT_FOUND, "")
 
 	add("<C-a>", "c-a")
+	add("<C-Down>", ":next")
+	add("<C-PgUp>", ":prev")
+	add("<C-Enter>", ":open")
 	test([]KeyStroke{
 		{tcell.ModCtrl, tcell.KeyCtrlA, 0},
 	}, BINDING_FOUND, "c-a")
+	test([]KeyStroke{
+		{tcell.ModCtrl, tcell.KeyDown, 0},
+	}, BINDING_FOUND, ":next")
+	test([]KeyStroke{
+		{tcell.ModCtrl, tcell.KeyPgUp, 0},
+	}, BINDING_FOUND, ":prev")
+	test([]KeyStroke{
+		{tcell.ModCtrl, tcell.KeyPgDn, 0},
+	}, BINDING_NOT_FOUND, "")
+	test([]KeyStroke{
+		{tcell.ModCtrl, tcell.KeyEnter, 0},
+	}, BINDING_FOUND, ":open")
 }