1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:27:44 +00:00

LibVT: Implement Device Status Report (cursor position report)

This commit is contained in:
AnotherTest 2020-04-09 07:43:12 +04:30 committed by Andreas Kling
parent 8286f8b996
commit 2663739db1
2 changed files with 14 additions and 1 deletions

View file

@ -704,6 +704,12 @@ void Terminal::execute_escape_sequence(u8 final)
case 'f': case 'f':
HVP(params); HVP(params);
break; break;
case 'n':
if (params.size() == 1 && params[0] == 6)
DSR();
else
dbg() << "Unknown CSIxn command";
break;
default: default:
dbgprintf("Terminal::execute_escape_sequence: Unhandled final '%c'\n", final); dbgprintf("Terminal::execute_escape_sequence: Unhandled final '%c'\n", final);
break; break;
@ -806,6 +812,12 @@ void Terminal::RI()
CUU({}); 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) void Terminal::on_char(u8 ch)
{ {
#ifdef TERMINAL_DEBUG #ifdef TERMINAL_DEBUG

View file

@ -26,8 +26,8 @@
#pragma once #pragma once
#include <AK/String.h>
#include <AK/NonnullOwnPtrVector.h> #include <AK/NonnullOwnPtrVector.h>
#include <AK/String.h>
#include <AK/Vector.h> #include <AK/Vector.h>
#include <LibVT/Position.h> #include <LibVT/Position.h>
@ -178,6 +178,7 @@ private:
void NEL(); void NEL();
void IND(); void IND();
void RI(); void RI();
void DSR();
TerminalClient& m_client; TerminalClient& m_client;