diff --git a/kernel/kernel/Terminal/PseudoTerminal.cpp b/kernel/kernel/Terminal/PseudoTerminal.cpp index 167ca646..4cdd6a19 100644 --- a/kernel/kernel/Terminal/PseudoTerminal.cpp +++ b/kernel/kernel/Terminal/PseudoTerminal.cpp @@ -162,7 +162,7 @@ namespace Kernel .c_iflag = 0, .c_oflag = 0, .c_cflag = CS8, - .c_lflag = ECHO | ICANON | ISIG, + .c_lflag = ECHO | ECHOE | ECHOK | ICANON | ISIG, .c_cc = TTY_DEFAULT_TERMIOS_CC, .c_ospeed = B38400, .c_ispeed = B38400, diff --git a/kernel/kernel/Terminal/Serial.cpp b/kernel/kernel/Terminal/Serial.cpp index 82e62333..467fd990 100644 --- a/kernel/kernel/Terminal/Serial.cpp +++ b/kernel/kernel/Terminal/Serial.cpp @@ -174,7 +174,7 @@ namespace Kernel .c_iflag = ICRNL, .c_oflag = OPOST | ONLCR, .c_cflag = CS8, - .c_lflag = ECHO | ICANON | ISIG, + .c_lflag = ECHO | ECHOE | ECHOK | ICANON | ISIG, .c_cc = TTY_DEFAULT_TERMIOS_CC, .c_ospeed = B38400, .c_ispeed = B38400, diff --git a/kernel/kernel/Terminal/TTY.cpp b/kernel/kernel/Terminal/TTY.cpp index 03af9d48..d1a6aa48 100644 --- a/kernel/kernel/Terminal/TTY.cpp +++ b/kernel/kernel/Terminal/TTY.cpp @@ -266,8 +266,12 @@ namespace Kernel if (ch == m_termios.c_cc[VERASE] && (m_termios.c_lflag & ECHOE)) return do_backspace(); - //if (ch == m_termios.c_cc[VKILL] && (m_termios.c_lflag & ECHOK)) - // ; + if (ch == m_termios.c_cc[VKILL] && (m_termios.c_lflag & ECHOK)) + { + while (m_output.bytes > 0 && m_output.buffer[m_output.bytes - 1] != '\n') + do_backspace(); + return; + } if (ch == m_termios.c_cc[VEOF]) { @@ -277,7 +281,6 @@ namespace Kernel if (ch == NL || ch == m_termios.c_cc[VEOL]) { - should_append = true; should_flush = true; force_echo = !!(m_termios.c_lflag & ECHONL); ch = NL; @@ -297,7 +300,7 @@ namespace Kernel m_output.buffer[m_output.bytes++] = ch; } - if (force_echo || (m_termios.c_lflag & ECHO)) + if (should_append && (force_echo || (m_termios.c_lflag & ECHO))) { if ((ch <= 31 || ch == 127) && ch != '\n') { diff --git a/kernel/kernel/Terminal/VirtualTTY.cpp b/kernel/kernel/Terminal/VirtualTTY.cpp index 7cbaebcd..6b2a577e 100644 --- a/kernel/kernel/Terminal/VirtualTTY.cpp +++ b/kernel/kernel/Terminal/VirtualTTY.cpp @@ -40,7 +40,7 @@ namespace Kernel .c_iflag = 0, .c_oflag = 0, .c_cflag = CS8, - .c_lflag = ECHO | ICANON | ISIG, + .c_lflag = ECHO | ECHOE | ECHOK | ICANON | ISIG, .c_cc = TTY_DEFAULT_TERMIOS_CC, .c_ospeed = B38400, .c_ispeed = B38400,