📄 kbd.c
字号:
#include "hos.h"/* Current shift state */#define LEFT_SHIFT 0x01#define RIGHT_SHIFT 0x02#define LEFT_CTRL 0x04#define RIGHT_CTRL 0x08#define LEFT_ALT 0x10#define RIGHT_ALT 0x20#define SHIFT_MASK (LEFT_SHIFT | RIGHT_SHIFT)#define CTRL_MASK (LEFT_CTRL | RIGHT_CTRL)#define ALT_MASK (LEFT_ALT | RIGHT_ALT)/* Translate from scan code to key code, when shift is not pressed. */static const keycode scan_table[] = { KEY_UNKNOWN, ASCII_ESC, '1', '2', /* 0x00 ~ 0x03 */ '3', '4', '5', '6', /* 0x04 ~ 0x07 */ '7', '8', '9', '0', /* 0x08 ~ 0x0B */ '-', '=', ASCII_BS, '\t', /* 0x0C ~ 0x0F */ 'q', 'w', 'e', 'r', /* 0x10 ~ 0x13 */ 't', 'y', 'u', 'i', /* 0x14 ~ 0x17 */ 'o', 'p', '[', ']', /* 0x18 ~ 0x1B */ '\r', KEY_LCTRL, 'a', 's', /* 0x1C ~ 0x1F */ 'd', 'f', 'g', 'h', /* 0x20 ~ 0x23 */ 'j', 'k', 'l', ';', /* 0x24 ~ 0x27 */ '\'', '`', KEY_LSHIFT, '\\', /* 0x28 ~ 0x2B */ 'z', 'x', 'c', 'v', /* 0x2C ~ 0x2F */ 'b', 'n', 'm', ',', /* 0x30 ~ 0x33 */ '.', '/', KEY_RSHIFT, KEY_PRINTSCRN, /* 0x34 ~ 0x37 */ KEY_LALT, ' ', KEY_CAPSLOCK, KEY_F1, /* 0x38 ~ 0x3B */ KEY_F2, KEY_F3, KEY_F4, KEY_F5, /* 0x3C ~ 0x3F */ KEY_F6, KEY_F7, KEY_F8, KEY_F9, /* 0x40 ~ 0x43 */ KEY_F10, KEY_NUMLOCK, KEY_SCRLOCK, KEY_KPHOME, /* 0x44 ~ 0x47 */ KEY_KPUP, KEY_KPPGUP, KEY_KPMINUS, KEY_KPLEFT, /* 0x48 ~ 0x4B */ KEY_KPCENTER, KEY_KPRIGHT, KEY_KPPLUS, KEY_KPEND, KEY_KPDOWN, KEY_KPPGDN, KEY_KPINSERT, KEY_KPDEL, KEY_SYSREQ, KEY_UNKNOWN, KEY_UNKNOWN, KEY_UNKNOWN,};#define SCAN_TABLE_SIZE (sizeof(scan_table) / sizeof(keycode))void kbd_isr(void);static int convert(unsigned code){ if(code > 0x80) return 0; if(code >= SCAN_TABLE_SIZE) return 0; return scan_table[code];}void kbd_handler(void){ unsigned scancode, temp; //printk("in kbd handler\n"); //for(;;); scancode = inbyte(0x60); temp = convert(scancode); if(temp != 0) put_char(temp); /* EOI */ outbyte(0x20, 0x20);}void init_kbd(void){ unsigned short irqmask; printk("[kernel] Initializing keyboard...\n"); set_intr_gate(0x21, &kbd_isr); unmask_irq(2);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -