diff options
| author | Miguel <m.i@gmx.at> | 2018-09-26 23:58:14 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-26 23:58:14 +0200 |
| commit | b86f48da7fc46934d576698bb4f16be9b2a7eaf9 (patch) | |
| tree | ea42a72faeb406c303025b0c981a76e533a8b110 /driver/keyboard.c | |
| parent | 915791f6acedbb35db73216156c1baa790e384d9 (diff) | |
some bugfixes
Diffstat (limited to 'driver/keyboard.c')
| -rw-r--r-- | driver/keyboard.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/driver/keyboard.c b/driver/keyboard.c index b9a1dad..f667396 100644 --- a/driver/keyboard.c +++ b/driver/keyboard.c @@ -4,11 +4,14 @@ #include "log.h" #include "e1000.h" #include "kmalloc.h" +#include "interrupts.h" #include <stdbool.h> #include "inet.h" +ringbuffer kb_in; + static bool ctrl_l=false; static bool shift_l=false; static bool shift_r=false; @@ -31,8 +34,17 @@ static void put(uint8_t c) syscall_generic(SYSCALL_WRITE,kb_stream, (char *)&c , 1, 0); } +uint32_t keyboard_interrupt(uint32_t esp) +{ + + ringbuffer_put(&kb_in,x86_inb(0x60)); + return esp; +} + void keyboard_init(uint32_t s) { + kb_in=ringbuffer_init(1);// 4096 bytes ringbuffer; + interrupt_register(INTERRUPT_KEYBOARD,&keyboard_interrupt); kb_stream=s; } |
