#include "keyboard.h" #include "../kernel/global.h" #include "stdint.h" #include "../lib/kernel/io.h" #include "../lib/kernel/print.h" #include "../kernel/interrupt.h" // 键盘中断处理程序 static void intr_keyboard_handler(void); void keyboard_init(void) { put_str("keyboard init start\n"); // todo: 1. 打开 8042 键盘控制器 // 2. 注册键盘中断处理程序 register_handler(0x21, intr_keyboard_handler); put_str("keyboard init done\n"); return; } // 键盘中断处理程序 static void intr_keyboard_handler(void) { uint8_t scancode = inb(KBD_DATA_PORT); // 必须要读取输出缓冲寄存器,否则 8042 不再继续响应键盘中断 put_int(scancode); put_char(' '); return; }