aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/keyboard
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/keyboard')
-rw-r--r--src/kernel/keyboard/isr.c8
-rw-r--r--src/kernel/keyboard/pic.c5
2 files changed, 11 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);
}
diff --git a/src/kernel/keyboard/pic.c b/src/kernel/keyboard/pic.c
index e1b4fb3..2161c93 100644
--- a/src/kernel/keyboard/pic.c
+++ b/src/kernel/keyboard/pic.c
@@ -7,6 +7,11 @@
#define PIC2_COMMAND PIC2
#define PIC2_DATA (PIC2 + 1)
+// Gonna be honest i just kinda yoinked most of this
+// from the wiki, i am gonna have to rewrite these
+// sooner rather than later if i want to actually
+// learn.
+
void PIC_init(int offset1, int offset2) {
uint8_t a1, a2;