From 4271e9cffae06b0b98d334d67ff7f0f5f9da80b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlastimil=20Ov=C4=8D=C3=A1=C4=8D=C3=ADk?= Date: Mon, 20 Sep 2021 19:48:53 +0200 Subject: [PATCH] Fix Ctrl+Space key combination to emit CtrlSpace instead of Rune ' ' --- src/tui/tcell.go | 3 +++ src/tui/tcell_test.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tui/tcell.go b/src/tui/tcell.go index be22d87c..8ef3fba3 100644 --- a/src/tui/tcell.go +++ b/src/tui/tcell.go @@ -396,6 +396,9 @@ func (r *FullscreenRenderer) GetChar() Event { r := ev.Rune() switch { + // translate native key events to ascii control characters + case r == ' ' && ctrl: + return Event{CtrlSpace, 0, nil} // handle AltGr characters case ctrlAlt: return Event{Rune, r, nil} // dropping modifiers diff --git a/src/tui/tcell_test.go b/src/tui/tcell_test.go index 5aff3926..1a10faf2 100644 --- a/src/tui/tcell_test.go +++ b/src/tui/tcell_test.go @@ -91,7 +91,7 @@ func TestGetCharEventKey(t *testing.T) { // section 2: Ctrl+[ \]_] {giveKey{tcell.KeyCtrlSpace, rune(tcell.KeyCtrlSpace), tcell.ModCtrl}, wantKey{CtrlSpace, 0, nil}}, // fabricated {giveKey{tcell.KeyNUL, rune(tcell.KeyNUL), tcell.ModNone}, wantKey{CtrlSpace, 0, nil}}, // fabricated, unhandled - {giveKey{tcell.KeyRune, ' ', tcell.ModCtrl}, wantKey{Rune, ' ', nil}}, // actual Ctrl+' ' + {giveKey{tcell.KeyRune, ' ', tcell.ModCtrl}, wantKey{CtrlSpace, 0, nil}}, // actual Ctrl+' ' {giveKey{tcell.KeyCtrlBackslash, rune(tcell.KeyCtrlBackslash), tcell.ModCtrl}, wantKey{CtrlBackSlash, 0, nil}}, {giveKey{tcell.KeyCtrlRightSq, rune(tcell.KeyCtrlRightSq), tcell.ModCtrl}, wantKey{CtrlRightBracket, 0, nil}}, {giveKey{tcell.KeyCtrlUnderscore, rune(tcell.KeyCtrlUnderscore), tcell.ModShift | tcell.ModCtrl}, wantKey{CtrlSlash, 0, nil}},