aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/keyboard/isr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/keyboard/isr.c')
-rw-r--r--src/kernel/keyboard/isr.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/kernel/keyboard/isr.c b/src/kernel/keyboard/isr.c
index 223bf9f..de7415c 100644
--- a/src/kernel/keyboard/isr.c
+++ b/src/kernel/keyboard/isr.c
@@ -1,4 +1,5 @@
#include "asm.h"
+#include "exceptions.h"
#include "print.h"
#include "str.h"
#include <stdint.h>
@@ -14,8 +15,7 @@ void keyboard_handler() {
unsigned char sc = inb(0x60);
uint8_t isheld = shift_held != 0;
- char c = ((isheld | capslock) & !(isheld & capslock)) ? SCANCODES[sc]
- : scancodes[sc];
+ char c = (isheld ^ capslock) ? SCANCODES[sc] : scancodes[sc];
if (capslock & (!isheld) && !isalpha(c))
c = scancodes[sc];
@@ -45,5 +45,9 @@ void keyboard_handler() {
capslock = !capslock;
break;
}
+
+ if (shift_held && sc == 0xE0)
+ panic("Test panic");
+
outb(0x20, 0x20);
}