|
@@ -521,7 +521,7 @@ void Terminal::DCH(Parameters params)
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-void Terminal::newline()
|
|
|
|
|
|
+void Terminal::linefeed()
|
|
{
|
|
{
|
|
u16 new_row = m_cursor_row;
|
|
u16 new_row = m_cursor_row;
|
|
if (m_cursor_row == m_scroll_region_bottom) {
|
|
if (m_cursor_row == m_scroll_region_bottom) {
|
|
@@ -529,8 +529,11 @@ void Terminal::newline()
|
|
} else {
|
|
} else {
|
|
++new_row;
|
|
++new_row;
|
|
};
|
|
};
|
|
- set_cursor(new_row, 0);
|
|
|
|
|
|
+ // We shouldn't jump to the first column after receiving a line feed.
|
|
|
|
+ // The TTY will take care of generating the carriage return.
|
|
|
|
+ set_cursor(new_row, m_cursor_column);
|
|
}
|
|
}
|
|
|
|
+
|
|
void Terminal::carriage_return()
|
|
void Terminal::carriage_return()
|
|
{
|
|
{
|
|
set_cursor(m_cursor_row, 0);
|
|
set_cursor(m_cursor_row, 0);
|
|
@@ -591,7 +594,7 @@ void Terminal::set_cursor(unsigned a_row, unsigned a_column)
|
|
|
|
|
|
void Terminal::NEL()
|
|
void Terminal::NEL()
|
|
{
|
|
{
|
|
- newline();
|
|
|
|
|
|
+ linefeed();
|
|
carriage_return();
|
|
carriage_return();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -658,7 +661,7 @@ void Terminal::emit_code_point(u32 code_point)
|
|
if (m_stomp) {
|
|
if (m_stomp) {
|
|
m_stomp = false;
|
|
m_stomp = false;
|
|
carriage_return();
|
|
carriage_return();
|
|
- newline();
|
|
|
|
|
|
+ linefeed();
|
|
put_character_at(m_cursor_row, m_cursor_column, code_point);
|
|
put_character_at(m_cursor_row, m_cursor_column, code_point);
|
|
set_cursor(m_cursor_row, 1);
|
|
set_cursor(m_cursor_row, 1);
|
|
} else {
|
|
} else {
|
|
@@ -690,7 +693,9 @@ void Terminal::execute_control_code(u8 code)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
case '\n':
|
|
case '\n':
|
|
- newline();
|
|
|
|
|
|
+ case '\v':
|
|
|
|
+ case '\f':
|
|
|
|
+ linefeed();
|
|
return;
|
|
return;
|
|
case '\r':
|
|
case '\r':
|
|
carriage_return();
|
|
carriage_return();
|
|
@@ -961,6 +966,11 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags)
|
|
case KeyCode::Key_PageDown:
|
|
case KeyCode::Key_PageDown:
|
|
emit_tilde_with_modifier(6);
|
|
emit_tilde_with_modifier(6);
|
|
return;
|
|
return;
|
|
|
|
+ case KeyCode::Key_Return:
|
|
|
|
+ // The standard says that CR should be generated by the return key.
|
|
|
|
+ // The TTY will take care of translating it to CR LF for the terminal.
|
|
|
|
+ emit_string("\r");
|
|
|
|
+ return;
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|