aboutsummaryrefslogtreecommitdiff
path: root/kernel/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/main.c')
-rw-r--r--kernel/main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/main.c b/kernel/main.c
index cdab037..9311359 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -256,6 +256,20 @@ void run_gfx_benchmark(void)
printf("Resolution: %dx%dx%d\n", *gfx_width, *gfx_height, *gfx_bpp * 8);
}
+static void keyhandler(const struct ps2_keyevent *ev)
+{
+ if(ev->ascii)
+ {
+ if(ev->special_keys->ctrl)
+ {
+ putchar('^');
+ putchar(toupper(ev->ascii));
+ }
+ else
+ putchar(ev->ascii);
+ }
+}
+
void main(struct multiboot_info_t *hdr, uint32_t magic)
{
bool gfx_status = boot(hdr, magic);
@@ -263,6 +277,8 @@ void main(struct multiboot_info_t *hdr, uint32_t magic)
printf("Hello, world!\n");
gfx_set_foreground(GFX_WHITE);
+ ps2kbd_set_handler(keyhandler);
+
while(1)asm("hlt");
//char *ptr = 0xA00000;