- /*
- By Marcus Xing
- include/keyboard.h
- 键盘有关的信息
- */
- /*
- forward include:
- type.h
- */
- #ifndef _KEYBOARD_H_
- #define _KEYBOARD_H_
- /* 8042的各端口值 */
- #define OUT_BUFFER_8042 0x60 /* 输出缓冲区端口号,读 */
- #define IN_BUFFER_8042 0x60 /* 输入缓冲区端口号,写 */
- #define STATUS_REG_8042 0x64 /* 状态寄存器,读 */
- #define COMMAND_REG_8042 0x64 /* 命令寄存器,写 */
- #define KB_SET_LED_COM 0xed /* 设置LED时发给8048的命令 */
- #define KB_ACK 0xfa /* 设置LED时8048收到命令的反馈 */
- #define BUFFER_SIZE 32 /* 输入缓冲区的大小 */
- #define MAP_COLS 3 /* 映射表的列数 */
- #define SCAN_CODES 0x80 /* 映射表的行数 */
- #define FLAG_BREAK 0x0080 /* 是否为按起的标志 */
- #define FLAG_EXT 0x0100 /* 常规功能的标志 */
- #define FLAG_SHIFT_L 0x0200 /* 左SHIFT键的标志 */
- #define FLAG_SHIFT_R 0x0400 /* 右SHIFT键的标志 */
- #define FLAG_CTRL_L 0x0800 /* 左CONTROL键的标志 */
- #define FLAG_CTRL_R 0x1000 /* 右CONTROL键的标志 */
- #define FLAG_ALT_L 0x2000 /* 左ALT键的标志 */
- #define FLAG_ALT_R 0x4000 /* 右ALT键的标志 */
- #define FLAG_PAD 0x8000 /* 小键盘数字键的标志 */
- #define MASK_RAW 0x01FF /*
- raw key value = code passed to tty & MASK_RAW
- the value can be found either in the keymap column 0
- or in the list below
- */
- /* 特别的键 */
- #define ESC (0x01 + FLAG_EXT) /* Esc */
- #define TAB (0x02 + FLAG_EXT) /* Tab */
- #define ENTER (0x03 + FLAG_EXT) /* Enter */
- #define BACKSPACE (0x04 + FLAG_EXT) /* BackSpace */
- #define GUI_L (0x05 + FLAG_EXT) /* L GUI */
- #define GUI_R (0x06 + FLAG_EXT) /* R GUI */
- #define APPS (0x07 + FLAG_EXT) /* APPS */
- /* Shift, Ctrl, Alt */
- #define SHIFT_L (0x08 + FLAG_EXT) /* L Shift */
- #define SHIFT_R (0x09 + FLAG_EXT) /* R Shift */
- #define CTRL_L (0x0A + FLAG_EXT) /* L Ctrl */
- #define CTRL_R (0x0B + FLAG_EXT) /* R Ctrl */
- #define ALT_L (0x0C + FLAG_EXT) /* L Alt */
- #define ALT_R (0x0D + FLAG_EXT) /* R Alt */
- /* Lock keys */
- #define CAPS_LOCK (0x0E + FLAG_EXT) /* Caps Lock */
- #define NUM_LOCK (0x0F + FLAG_EXT) /* Number Lock */
- #define SCROLL_LOCK (0x10 + FLAG_EXT) /* Scroll Lock */
- /* Function keys */
- #define F1 (0x11 + FLAG_EXT) /* F1 */
- #define F2 (0x12 + FLAG_EXT) /* F2 */
- #define F3 (0x13 + FLAG_EXT) /* F3 */
- #define F4 (0x14 + FLAG_EXT) /* F4 */
- #define F5 (0x15 + FLAG_EXT) /* F5 */
- #define F6 (0x16 + FLAG_EXT) /* F6 */
- #define F7 (0x17 + FLAG_EXT) /* F7 */
- #define F8 (0x18 + FLAG_EXT) /* F8 */
- #define F9 (0x19 + FLAG_EXT) /* F9 */
- #define F10 (0x1A + FLAG_EXT) /* F10 */
- #define F11 (0x1B + FLAG_EXT) /* F11 */
- #define F12 (0x1C + FLAG_EXT) /* F12 */
- /* Control Pad */
- #define PRINTSCREEN (0x1D + FLAG_EXT) /* Print Screen */
- #define PAUSEBREAK (0x1E + FLAG_EXT) /* Pause/Break */
- #define INSERT (0x1F + FLAG_EXT) /* Insert */
- #define DELETE (0x20 + FLAG_EXT) /* Delete */
- #define HOME (0x21 + FLAG_EXT) /* Home */
- #define END (0x22 + FLAG_EXT) /* End */
- #define PAGEUP (0x23 + FLAG_EXT) /* Page Up */
- #define PAGEDOWN (0x24 + FLAG_EXT) /* Page Down */
- #define UP (0x25 + FLAG_EXT) /* Up */
- #define DOWN (0x26 + FLAG_EXT) /* Down */
- #define LEFT (0x27 + FLAG_EXT) /* Left */
- #define RIGHT (0x28 + FLAG_EXT) /* Right */
- /* ACPI keys */
- #define POWER (0x29 + FLAG_EXT) /* Power */
- #define SLEEP (0x2A + FLAG_EXT) /* Sleep */
- #define WAKE (0x2B + FLAG_EXT) /* Wake Up */
- /* Num Pad */
- #define PAD_SLASH (0x2C + FLAG_EXT) /* / */
- #define PAD_STAR (0x2D + FLAG_EXT) /* * */
- #define PAD_MINUS (0x2E + FLAG_EXT) /* - */
- #define PAD_PLUS (0x2F + FLAG_EXT) /* + */
- #define PAD_ENTER (0x30 + FLAG_EXT) /* Enter */
- #define PAD_DOT (0x31 + FLAG_EXT) /* . */
- #define PAD_0 (0x32 + FLAG_EXT) /* 0 */
- #define PAD_1 (0x33 + FLAG_EXT) /* 1 */
- #define PAD_2 (0x34 + FLAG_EXT) /* 2 */
- #define PAD_3 (0x35 + FLAG_EXT) /* 3 */
- #define PAD_4 (0x36 + FLAG_EXT) /* 4 */
- #define PAD_5 (0x37 + FLAG_EXT) /* 5 */
- #define PAD_6 (0x38 + FLAG_EXT) /* 6 */
- #define PAD_7 (0x39 + FLAG_EXT) /* 7 */
- #define PAD_8 (0x3A + FLAG_EXT) /* 8 */
- #define PAD_9 (0x3B + FLAG_EXT) /* 9 */
- #define PAD_UP PAD_8 /* Up */
- #define PAD_DOWN PAD_2 /* Down */
- #define PAD_LEFT PAD_4 /* Left */
- #define PAD_RIGHT PAD_6 /* Right */
- #define PAD_HOME PAD_7 /* Home */
- #define PAD_END PAD_1 /* End */
- #define PAD_PAGEUP PAD_9 /* Page Up */
- #define PAD_PAGEDOWN PAD_3 /* Page Down*/
- #define PAD_INS PAD_0 /* Ins */
- #define PAD_MID PAD_5 /* Middle key */
- #define PAD_DEL PAD_DOT /* Del */
- /* 扫描码输入缓冲区结构,其实是线性循环队列 */
- typedef struct s_kb_input_buffer
- {
- u8 *tail; /* 缓冲区队尾 */
- u8 *head; /* 缓冲区队首 */
- int size; /* 缓冲区当前大小 */
- u8 buffer[BUFFER_SIZE]; /* 缓冲区空间 */
- }KB_Input_Buffer;
- #endif