Kernel: Enable ECHOE and ECHOK, support VKILL, fix VEOF
This commit is contained in:
parent
775c77c0fa
commit
4c0b7d44b4
|
@ -162,7 +162,7 @@ namespace Kernel
|
||||||
.c_iflag = 0,
|
.c_iflag = 0,
|
||||||
.c_oflag = 0,
|
.c_oflag = 0,
|
||||||
.c_cflag = CS8,
|
.c_cflag = CS8,
|
||||||
.c_lflag = ECHO | ICANON | ISIG,
|
.c_lflag = ECHO | ECHOE | ECHOK | ICANON | ISIG,
|
||||||
.c_cc = TTY_DEFAULT_TERMIOS_CC,
|
.c_cc = TTY_DEFAULT_TERMIOS_CC,
|
||||||
.c_ospeed = B38400,
|
.c_ospeed = B38400,
|
||||||
.c_ispeed = B38400,
|
.c_ispeed = B38400,
|
||||||
|
|
|
@ -174,7 +174,7 @@ namespace Kernel
|
||||||
.c_iflag = ICRNL,
|
.c_iflag = ICRNL,
|
||||||
.c_oflag = OPOST | ONLCR,
|
.c_oflag = OPOST | ONLCR,
|
||||||
.c_cflag = CS8,
|
.c_cflag = CS8,
|
||||||
.c_lflag = ECHO | ICANON | ISIG,
|
.c_lflag = ECHO | ECHOE | ECHOK | ICANON | ISIG,
|
||||||
.c_cc = TTY_DEFAULT_TERMIOS_CC,
|
.c_cc = TTY_DEFAULT_TERMIOS_CC,
|
||||||
.c_ospeed = B38400,
|
.c_ospeed = B38400,
|
||||||
.c_ispeed = B38400,
|
.c_ispeed = B38400,
|
||||||
|
|
|
@ -266,8 +266,12 @@ namespace Kernel
|
||||||
if (ch == m_termios.c_cc[VERASE] && (m_termios.c_lflag & ECHOE))
|
if (ch == m_termios.c_cc[VERASE] && (m_termios.c_lflag & ECHOE))
|
||||||
return do_backspace();
|
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])
|
if (ch == m_termios.c_cc[VEOF])
|
||||||
{
|
{
|
||||||
|
@ -277,7 +281,6 @@ namespace Kernel
|
||||||
|
|
||||||
if (ch == NL || ch == m_termios.c_cc[VEOL])
|
if (ch == NL || ch == m_termios.c_cc[VEOL])
|
||||||
{
|
{
|
||||||
should_append = true;
|
|
||||||
should_flush = true;
|
should_flush = true;
|
||||||
force_echo = !!(m_termios.c_lflag & ECHONL);
|
force_echo = !!(m_termios.c_lflag & ECHONL);
|
||||||
ch = NL;
|
ch = NL;
|
||||||
|
@ -297,7 +300,7 @@ namespace Kernel
|
||||||
m_output.buffer[m_output.bytes++] = ch;
|
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')
|
if ((ch <= 31 || ch == 127) && ch != '\n')
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace Kernel
|
||||||
.c_iflag = 0,
|
.c_iflag = 0,
|
||||||
.c_oflag = 0,
|
.c_oflag = 0,
|
||||||
.c_cflag = CS8,
|
.c_cflag = CS8,
|
||||||
.c_lflag = ECHO | ICANON | ISIG,
|
.c_lflag = ECHO | ECHOE | ECHOK | ICANON | ISIG,
|
||||||
.c_cc = TTY_DEFAULT_TERMIOS_CC,
|
.c_cc = TTY_DEFAULT_TERMIOS_CC,
|
||||||
.c_ospeed = B38400,
|
.c_ospeed = B38400,
|
||||||
.c_ispeed = B38400,
|
.c_ispeed = B38400,
|
||||||
|
|
Loading…
Reference in New Issue