diff --git a/Applications/Terminal/Terminal.cpp b/Applications/Terminal/Terminal.cpp index 48f7023e14e..36afb29b2dc 100644 --- a/Applications/Terminal/Terminal.cpp +++ b/Applications/Terminal/Terminal.cpp @@ -269,6 +269,40 @@ void Terminal::escape$D(const Vector& params) set_cursor(m_cursor_row, new_column); } +void Terminal::escape$G(const Vector& params) +{ + int new_column = 1; + if (params.size() >= 1) + new_column = params[0] - 1; + if (new_column < 0) + new_column = 0; + set_cursor(m_cursor_row, new_column); +} + +void Terminal::escape$d(const Vector& params) +{ + int new_row = 1; + if (params.size() >= 1) + new_row = params[0] - 1; + if (new_row < 0) + new_row = 0; + set_cursor(new_row, m_cursor_column); +} + +void Terminal::escape$X(const Vector& params) +{ + // Erase characters (without moving cursor) + int num = 1; + if (params.size() >= 1) + num = params[0]; + if (num == 0) + num = 1; + // Clear from cursor to end of line. + for (int i = m_cursor_column; i < num; ++i) { + put_character_at(m_cursor_row, i, ' '); + } +} + void Terminal::escape$K(const Vector& params) { int mode = 0; @@ -393,6 +427,9 @@ void Terminal::execute_escape_sequence(byte final) case 'J': escape$J(params); break; case 'K': escape$K(params); break; case 'M': escape$M(params); break; + case 'G': escape$G(params); break; + case 'X': escape$X(params); break; + case 'd': escape$d(params); break; case 'm': escape$m(params); break; case 's': escape$s(params); break; case 'u': escape$u(params); break; diff --git a/Applications/Terminal/Terminal.h b/Applications/Terminal/Terminal.h index 3b3b32a59c8..6cac271c770 100644 --- a/Applications/Terminal/Terminal.h +++ b/Applications/Terminal/Terminal.h @@ -49,6 +49,9 @@ private: void escape$J(const Vector&); void escape$K(const Vector&); void escape$M(const Vector&); + void escape$G(const Vector&); + void escape$X(const Vector&); + void escape$d(const Vector&); void escape$m(const Vector&); void escape$s(const Vector&); void escape$u(const Vector&); diff --git a/Applications/Terminal/main.cpp b/Applications/Terminal/main.cpp index dfbc2fa6fa7..3049f59697b 100644 --- a/Applications/Terminal/main.cpp +++ b/Applications/Terminal/main.cpp @@ -65,7 +65,7 @@ static void make_shell(int ptm_fd) exit(1); } char* args[] = { "/bin/sh", nullptr }; - char* envs[] = { "TERM=vt100", nullptr }; + char* envs[] = { "TERM=xterm", nullptr }; rc = execve("/bin/sh", args, envs); if (rc < 0) { perror("execve");