Kernel: Add ANSI SGR 39 and 49

Also debug log unimplemented ANSI SRGs, this makes finding missing
commonly used ANSI SGR codes more easy
This commit is contained in:
Bananymous 2025-06-18 20:34:55 +03:00
parent 87f348b48e
commit 9c86e5e54d
1 changed files with 20 additions and 6 deletions

View File

@ -114,10 +114,10 @@ namespace Kernel
m_state = State::Normal; m_state = State::Normal;
} }
void VirtualTTY::handle_ansi_csi_color(uint8_t ch) void VirtualTTY::handle_ansi_csi_color(uint8_t value)
{ {
ASSERT(m_write_lock.current_processor_has_lock()); ASSERT(m_write_lock.current_processor_has_lock());
switch (ch) switch (value)
{ {
case 0: case 0:
m_foreground = m_palette[15]; m_foreground = m_palette[15];
@ -125,23 +125,37 @@ namespace Kernel
m_colors_inverted = false; m_colors_inverted = false;
break; break;
// TODO: bold
case 1: break;
case 22: break;
case 7: m_colors_inverted = true; break; case 7: m_colors_inverted = true; break;
case 27: m_colors_inverted = false; break; case 27: m_colors_inverted = false; break;
case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37:
m_foreground = m_palette[ch - 30]; m_foreground = m_palette[value - 30];
break;
case 39:
m_foreground = m_palette[15];
break; break;
case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47:
m_background = m_palette[ch - 40]; m_background = m_palette[value - 40];
break;
case 49:
m_background = m_palette[0];
break; break;
case 90: case 91: case 92: case 93: case 94: case 95: case 96: case 97: case 90: case 91: case 92: case 93: case 94: case 95: case 96: case 97:
m_foreground = m_palette[ch - 90 + 8]; m_foreground = m_palette[value - 90 + 8];
break; break;
case 100: case 101: case 102: case 103: case 104: case 105: case 106: case 107: case 100: case 101: case 102: case 103: case 104: case 105: case 106: case 107:
m_background = m_palette[ch - 100 + 8]; m_background = m_palette[value - 100 + 8];
break;
default:
dprintln_if(DEBUG_VTTY, "unhandled ANSI SGR {}", value);
break; break;
} }
} }