| 1234567891011121314151617181920212223242526272829 |
- #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;
- }
|