aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonathan de Boyne Pollard <J.deBoynePollard-newsgroups@NTLWorld.com>2017-06-16 15:04:39 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-07-06 10:17:13 +0200
commit5701165f06104c341dce9f19ba8437676139892b (patch)
tree015a79728c7c20ec53ed3469487b87b79570d387 /src
parentde8a9f6c338b5264d5204e7ce47eb6972eb1e783 (diff)
downloadrneovim-5701165f06104c341dce9f19ba8437676139892b.tar.gz
rneovim-5701165f06104c341dce9f19ba8437676139892b.tar.bz2
rneovim-5701165f06104c341dce9f19ba8437676139892b.zip
tui: Switch terminal keyboard mode properly.
The terminfo doco explicitly states that it covers the case where the terminal is in application cursor/keypad (i.e. "keypad transmit") mode, and not where it is in normal cursor/keypad (i.e. "keypad local") mode. Full screen applications like nvim must switch to and from keypad transmit mode when expecting the control sequences given by terminfo.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/tui/tui.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index 7616299a19..61fe1bb361 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -230,6 +230,7 @@ static void terminfo_start(UI *ui)
// Enter alternate screen and clear
// NOTE: Do this *before* changing terminal settings. #6433
unibi_out(ui, unibi_enter_ca_mode);
+ unibi_out(ui, unibi_keypad_xmit);
unibi_out(ui, unibi_clear_screen);
// Enable bracketed paste
unibi_out(ui, data->unibi_ext.enable_bracketed_paste);
@@ -258,6 +259,7 @@ static void terminfo_stop(UI *ui)
unibi_out(ui, unibi_exit_attribute_mode);
// cursor should be set to normal before exiting alternate screen
unibi_out(ui, unibi_cursor_normal);
+ unibi_out(ui, unibi_keypad_local);
unibi_out(ui, unibi_exit_ca_mode);
// Disable bracketed paste
unibi_out(ui, data->unibi_ext.disable_bracketed_paste);