From 2663739db116bd238f2eb86c9e635f9d5faaf7d5 Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Thu, 9 Apr 2020 07:43:12 +0430 Subject: [PATCH] LibVT: Implement Device Status Report (cursor position report) --- Libraries/LibVT/Terminal.cpp | 12 ++++++++++++ Libraries/LibVT/Terminal.h | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Libraries/LibVT/Terminal.cpp b/Libraries/LibVT/Terminal.cpp index 01df69a956..b9e6806c0b 100644 --- a/Libraries/LibVT/Terminal.cpp +++ b/Libraries/LibVT/Terminal.cpp @@ -704,6 +704,12 @@ void Terminal::execute_escape_sequence(u8 final) case 'f': HVP(params); break; + case 'n': + if (params.size() == 1 && params[0] == 6) + DSR(); + else + dbg() << "Unknown CSIxn command"; + break; default: dbgprintf("Terminal::execute_escape_sequence: Unhandled final '%c'\n", final); break; @@ -806,6 +812,12 @@ void Terminal::RI() CUU({}); } +void Terminal::DSR() +{ + // Device Status Report (cursor position query) + emit_string(String::format("\033[%d;%dR", m_cursor_row + 1, m_cursor_column + 1)); +} + void Terminal::on_char(u8 ch) { #ifdef TERMINAL_DEBUG diff --git a/Libraries/LibVT/Terminal.h b/Libraries/LibVT/Terminal.h index 8c7bc7a25b..91fd74dc89 100644 --- a/Libraries/LibVT/Terminal.h +++ b/Libraries/LibVT/Terminal.h @@ -26,8 +26,8 @@ #pragma once -#include #include +#include #include #include @@ -178,6 +178,7 @@ private: void NEL(); void IND(); void RI(); + void DSR(); TerminalClient& m_client;