To support the cursor navigation keys, after saving
the termios structure top issues 'smkx/keypad_xmit'
during startup. However, some terminals appear to
treat that directive as persistent which leaves a
corrupted tty state after top exit.
This commit reverses the above terminal directive
via 'rmkx/keypad_local' just prior to restoring the
saved termios structure at program end.
For discovering this bug, and providing the 'rmkx'
clue to its solution, thanks to:
Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Jim Warner <james.warner@comcast.net>
static void bye_bye (const char *str) NORETURN;
static void bye_bye (const char *str) {
if (Ttychanged) {
+ if (keypad_local) putp(keypad_local);
tcsetattr(STDIN_FILENO, TCSAFLUSH, &Tty_original);
putp(tg2(0, Screen_rows));
putp(Cap_curs_norm);
STRLCPY(buf15, fmtmk("\033%s", tOk(key_left)));
// next is critical so returned results match bound terminfo keys
putp(tOk(keypad_xmit));
+ // ( see the converse keypad_local at program end, just in case )
return 0;
#undef tOk
}