From 54253948806cfe085fe5fe6b13ab8decac7fc1cf Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 5 Jun 2023 18:19:13 +0300 Subject: [PATCH] Kernel: TTY now supports CSI s and u These are commonly supported values to save and load cursor position --- kernel/include/kernel/Terminal/TTY.h | 3 +++ kernel/kernel/Terminal/TTY.cpp | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/kernel/include/kernel/Terminal/TTY.h b/kernel/include/kernel/Terminal/TTY.h index 0747e0e4f4..5886a23c89 100644 --- a/kernel/include/kernel/Terminal/TTY.h +++ b/kernel/include/kernel/Terminal/TTY.h @@ -84,6 +84,9 @@ namespace Kernel uint32_t m_width { 0 }; uint32_t m_height { 0 }; + uint32_t m_saved_row { 0 }; + uint32_t m_saved_column { 0 }; + uint32_t m_row { 0 }; uint32_t m_column { 0 }; Cell* m_buffer { nullptr }; diff --git a/kernel/kernel/Terminal/TTY.cpp b/kernel/kernel/Terminal/TTY.cpp index e99c67bb2a..4fc724cae2 100644 --- a/kernel/kernel/Terminal/TTY.cpp +++ b/kernel/kernel/Terminal/TTY.cpp @@ -473,6 +473,14 @@ namespace Kernel case 'm': handle_ansi_csi_color(); return reset_ansi(); + case 's': + m_saved_row = m_row; + m_saved_column = m_column; + return reset_ansi(); + case 'u': + m_row = m_saved_row; + m_column = m_saved_column; + return reset_ansi(); default: dprintln("Unsupported ANSI CSI character {}", ch); return reset_ansi();