diff options
Diffstat (limited to 'src/kernel/keyboard/isr.c')
| -rw-r--r-- | src/kernel/keyboard/isr.c | 8 |
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); } |
