From 20b8a3c6392620bf1dd2ab6bf6ddc7b528e5f3bb Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Thu, 1 May 2014 13:04:32 +0200 Subject: [PATCH] Add support for \e[9xm and \e[10xm escape sequences. --- kernel/lfbtextbuffer.cpp | 6 +++--- kernel/textterminal.cpp | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/kernel/lfbtextbuffer.cpp b/kernel/lfbtextbuffer.cpp index 209f0dc3..fb54450d 100644 --- a/kernel/lfbtextbuffer.cpp +++ b/kernel/lfbtextbuffer.cpp @@ -112,9 +112,9 @@ LFBTextBuffer* CreateLFBTextBuffer(uint8_t* lfb, uint32_t lfbformat, ret->attrs = attrs; for ( size_t i = 0; i < 16UL; i++ ) { - uint8_t r = i & 0b0100 ? (i & 0b1000 ? 255 : 191) : 0; - uint8_t g = i & 0b0010 ? (i & 0b1000 ? 255 : 191) : 0; - uint8_t b = i & 0b0001 ? (i & 0b1000 ? 255 : 191) : 0; + uint8_t r = i & 0b0100 ? (i & 0b1000 ? 255 : 191) : (i & 0b1000 ? 63 : 0); + uint8_t g = i & 0b0010 ? (i & 0b1000 ? 255 : 191) : (i & 0b1000 ? 63 : 0); + uint8_t b = i & 0b0001 ? (i & 0b1000 ? 255 : 191) : (i & 0b1000 ? 63 : 0); ret->colors[i] = ColorFromRGB(r, g, b); } ret->cursorenabled = true; diff --git a/kernel/textterminal.cpp b/kernel/textterminal.cpp index d21bf59a..27431f01 100644 --- a/kernel/textterminal.cpp +++ b/kernel/textterminal.cpp @@ -560,6 +560,20 @@ void TextTerminal::RunAnsiCommand(TextBuffer* textbuf, char c) vgacolor &= 0x0F; vgacolor |= conversion[val] << 4; } + // Set text color. + else if ( 90 <= cmd && cmd <= 97 ) + { + unsigned val = cmd - 90; + vgacolor &= 0xF0; + vgacolor |= (0x8 | conversion[val]) << 0; + } + // Set background color. + else if ( 100 <= cmd && cmd <= 107 ) + { + unsigned val = cmd - 100; + vgacolor &= 0x0F; + vgacolor |= (0x8 | conversion[val]) << 4; + } // TODO: There are many other things we don't support. } } break;