From b159aa0b50f11b2a91e0363ea31453e348e7d5f5 Mon Sep 17 00:00:00 2001 From: Mathieu Maret Date: Wed, 7 Nov 2018 17:47:06 +0100 Subject: [PATCH] implement capslock --- drivers/keyboard.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/keyboard.c b/drivers/keyboard.c index 3c27b07..5a49276 100644 --- a/drivers/keyboard.c +++ b/drivers/keyboard.c @@ -61,7 +61,7 @@ const char *scancode[128] = { /* 55 */ 0, /* 56 */ 0, /* left alt*/ /* 57 */ " ", - /* 58 */ 0, + /* 58 */ 0, /* caps Lock */ /* 59 */ "\eOP", /* F1 */ /* 60 */ "\eOQ", /* F2 */ /* 61 */ "\eOR", /* F3 */ @@ -266,6 +266,7 @@ void keyboard_do_irq() { static int lshift = 0; static int rshift = 0; + static int capslock = 0; unsigned char c = 0; if (inb(0x60) != c) { c = inb(0x60); @@ -278,8 +279,11 @@ void keyboard_do_irq() case 54: rshift = 1; break; + case 58: + capslock = 1 - capslock; + break; default: - if (lshift || rshift) + if ((lshift || rshift) ^ capslock) printf(scancode_shift[(int)c]); else printf(scancode[(int)c]); @@ -292,7 +296,6 @@ void keyboard_do_irq() break; case 54: rshift = 0; - break; } } }