Kernel: Add basic ANSI support :)

This commit is contained in:
Bananymous
2022-12-10 03:53:44 +02:00
parent 862b32d735
commit 03e7812cae
4 changed files with 274 additions and 35 deletions

View File

@@ -228,6 +228,10 @@ namespace Keyboard
s_key_callback = callback;
IDT::register_irq_handler(KEYBOARD_IRQ, irq_handler);
PIC::unmask(KEYBOARD_IRQ);
kb_command(0xED, 0b111);
IO::io_wait();
while (kb_try_read(tmp));
}
char key_to_ascii(Key key, uint8_t modifiers)

View File

@@ -28,10 +28,16 @@ void on_key_press(Keyboard::Key key, uint8_t modifiers, bool pressed)
kprint("time since boot: {} ms\n", PIT::ms_since_boot());
return;
}
char ascii = Keyboard::key_to_ascii(key, modifiers);
if (ascii)
kprint("{}", ascii);
else if (key == Keyboard::Key::Backspace)
{
kprint("\b \b");
}
else
{
char ascii = Keyboard::key_to_ascii(key, modifiers);
if (ascii)
kprint("{}", ascii);
}
}
}
@@ -45,9 +51,6 @@ void kernel_main(multiboot_info_t* mbi, uint32_t magic)
if (magic != 0x2BADB002)
return;
if (mbi->framebuffer.type != 2)
return;
TTY::initialize();
Serial::initialize();
@@ -60,17 +63,11 @@ void kernel_main(multiboot_info_t* mbi, uint32_t magic)
PIT::initialize();
Keyboard::initialize(on_key_press);
kprintln("Hello from the kernel!");
dprintln("Hello emulator from kernel!");
kprint("HHHHHHHHHHHHHHHHHHHHHHHHHHHHH\e[20D.\e[3K");
int** lol = new int*[10];
for (int i = 0; i < 10; i++)
lol[i] = new int;
kprint("{.2}\n", -12.123f);
kprint("0x{.H}", 0xcafebabe);
ENABLE_INTERRUPTS();
for (;;)
{