--------------------------------------------------------
初探键盘
--------------------------------------------------------
一,一个简单的测试
// ----------------------------
// <keyboard.c>
// Jack Zheng 11.30
// ----------------------------
#include "type.h"
#include "const.h"
#include "protect.h"
#include "proto.h"
#include "string.h"
#include "proc.h"
#include "global.h"
PUBLIC void keyboard_handler(int irq)
{
in_byte(KB_DATA);
disp_str("*");
}
PUBLIC void init_keyboard()
{
put_irq_handler(KEYBOARD_IRQ, keyboard_handler); /* 设定键盘中断处理程序 */
enable_irq(KEYBOARD_IRQ); /* 开键盘中断 */
}
可以看到,我们每次按键都产生了两个 "*" ,这是因为每次按键会产生两个扫描码,每次扫描码都会触发一次中断!
二,近距离观察 shift + a
PUBLIC void keyboard_handler(int irq)
{
t_8 scan_code = in_byte(KB_DATA);
disp_int(scan_code);
}
可见,我们按下 [左shift] + [a] 之后产生的扫描码!这四个扫描码分别为:左shift 的make code,a 的make code,左shift 的断码,a 的段码!
OK,下节我们好好了解一下扫描码!