1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 */ 8 9 /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 10 keyboard.h 11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 12 Forrest Yu, 2005 13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ 14 15 #ifndef _TINIX_KEYBOARD_H_ 16 #define _TINIX_KEYBOARD_H_ 17 18 19 /************************************************************************/ 20 /* Macros Declaration */ 21 /************************************************************************/ 22 #define KB_IN_BYTES 32 /* size of keyboard input buffer */ 23 #define MAP_COLS 3 /* Number of columns in keymap */ 24 #define NR_SCAN_CODES 0x80 /* Number of scan codes (rows in keymap) */ 25 26 #define FLAG_BREAK 0x0080 /* Break Code */ 27 #define FLAG_EXT 0x0100 /* Normal function keys */ 28 #define FLAG_SHIFT_L 0x0200 /* Shift key */ 29 #define FLAG_SHIFT_R 0x0400 /* Shift key */ 30 #define FLAG_CTRL_L 0x0800 /* Control key */ 31 #define FLAG_CTRL_R 0x1000 /* Control key */ 32 #define FLAG_ALT_L 0x2000 /* Alternate key */ 33 #define FLAG_ALT_R 0x4000 /* Alternate key */ 34 #define FLAG_PAD 0x8000 /* keys in num pad */ 35 36 #define MASK_RAW 0x01FF /* raw key value = code passed to tty & MASK_RAW 37 the value can be found either in the keymap column 0 38 or in the list below */ 39 40 /* Special keys */ 41 #define ESC (0x01 + FLAG_EXT) /* Esc */ 42 #define TAB (0x02 + FLAG_EXT) /* Tab */ 43 #define ENTER (0x03 + FLAG_EXT) /* Enter */ 44 #define BACKSPACE (0x04 + FLAG_EXT) /* BackSpace */ 45 46 #define GUI_L (0x05 + FLAG_EXT) /* L GUI */ 47 #define GUI_R (0x06 + FLAG_EXT) /* R GUI */ 48 #define APPS (0x07 + FLAG_EXT) /* APPS */ 49 50 /* Shift, Ctrl, Alt */ 51 #define SHIFT_L (0x08 + FLAG_EXT) /* L Shift */ 52 #define SHIFT_R (0x09 + FLAG_EXT) /* R Shift */ 53 #define CTRL_L (0x0A + FLAG_EXT) /* L Ctrl */ 54 #define CTRL_R (0x0B + FLAG_EXT) /* R Ctrl */ 55 #define ALT_L (0x0C + FLAG_EXT) /* L Alt */ 56 #define ALT_R (0x0D + FLAG_EXT) /* R Alt */ 57 58 /* Lock keys */ 59 #define CAPS_LOCK (0x0E + FLAG_EXT) /* Caps Lock */ 60 #define NUM_LOCK (0x0F + FLAG_EXT) /* Number Lock */ 61 #define SCROLL_LOCK (0x10 + FLAG_EXT) /* Scroll Lock */ 62 63 /* Function keys */ 64 #define F1 (0x11 + FLAG_EXT) /* F1 */ 65 #define F2 (0x12 + FLAG_EXT) /* F2 */ 66 #define F3 (0x13 + FLAG_EXT) /* F3 */ 67 #define F4 (0x14 + FLAG_EXT) /* F4 */ 68 #define F5 (0x15 + FLAG_EXT) /* F5 */ 69 #define F6 (0x16 + FLAG_EXT) /* F6 */ 70 #define F7 (0x17 + FLAG_EXT) /* F7 */ 71 #define F8 (0x18 + FLAG_EXT) /* F8 */ 72 #define F9 (0x19 + FLAG_EXT) /* F9 */ 73 #define F10 (0x1A + FLAG_EXT) /* F10 */ 74 #define F11 (0x1B + FLAG_EXT) /* F11 */ 75 #define F12 (0x1C + FLAG_EXT) /* F12 */ 76 77 /* Control Pad */ 78 #define PRINTSCREEN (0x1D + FLAG_EXT) /* Print Screen */ 79 #define PAUSEBREAK (0x1E + FLAG_EXT) /* Pause/Break */ 80 #define INSERT (0x1F + FLAG_EXT) /* Insert */ 81 #define DELETE (0x20 + FLAG_EXT) /* Delete */ 82 #define HOME (0x21 + FLAG_EXT) /* Home */ 83 #define END (0x22 + FLAG_EXT) /* End */ 84 #define PAGEUP (0x23 + FLAG_EXT) /* Page Up */ 85 #define PAGEDOWN (0x24 + FLAG_EXT) /* Page Down */ 86 #define UP (0x25 + FLAG_EXT) /* Up */ 87 #define DOWN (0x26 + FLAG_EXT) /* Down */ 88 #define LEFT (0x27 + FLAG_EXT) /* Left */ 89 #define RIGHT (0x28 + FLAG_EXT) /* Right */ 90 91 /* ACPI keys */ 92 #define POWER (0x29 + FLAG_EXT) /* Power */ 93 #define SLEEP (0x2A + FLAG_EXT) /* Sleep */ 94 #define WAKE (0x2B + FLAG_EXT) /* Wake Up */ 95 96 /* Num Pad */ 97 #define PAD_SLASH (0x2C + FLAG_EXT) /* / */ 98 #define PAD_STAR (0x2D + FLAG_EXT) /* * */ 99 #define PAD_MINUS (0x2E + FLAG_EXT) /* - */ 100 #define PAD_PLUS (0x2F + FLAG_EXT) /* + */ 101 #define PAD_ENTER (0x30 + FLAG_EXT) /* Enter */ 102 #define PAD_DOT (0x31 + FLAG_EXT) /* . */ 103 #define PAD_0 (0x32 + FLAG_EXT) /* 0 */ 104 #define PAD_1 (0x33 + FLAG_EXT) /* 1 */ 105 #define PAD_2 (0x34 + FLAG_EXT) /* 2 */ 106 #define PAD_3 (0x35 + FLAG_EXT) /* 3 */ 107 #define PAD_4 (0x36 + FLAG_EXT) /* 4 */ 108 #define PAD_5 (0x37 + FLAG_EXT) /* 5 */ 109 #define PAD_6 (0x38 + FLAG_EXT) /* 6 */ 110 #define PAD_7 (0x39 + FLAG_EXT) /* 7 */ 111 #define PAD_8 (0x3A + FLAG_EXT) /* 8 */ 112 #define PAD_9 (0x3B + FLAG_EXT) /* 9 */ 113 #define PAD_UP PAD_8 /* Up */ 114 #define PAD_DOWN PAD_2 /* Down */ 115 #define PAD_LEFT PAD_4 /* Left */ 116 #define PAD_RIGHT PAD_6 /* Right */ 117 #define PAD_HOME PAD_7 /* Home */ 118 #define PAD_END PAD_1 /* End */ 119 #define PAD_PAGEUP PAD_9 /* Page Up */ 120 #define PAD_PAGEDOWN PAD_3 /* Page Down */ 121 #define PAD_INS PAD_0 /* Ins */ 122 #define PAD_MID PAD_5 /* Middle key */ 123 #define PAD_DEL PAD_DOT /* Del */ 124 125 126 /************************************************************************/ 127 /* Stucture Definition */ 128 /************************************************************************/ 129 /* Keyboard structure, 1 per console. */ 130 typedef struct s_kb { 131 char* p_head; /* input cache pointer */ 132 char* p_tail; /* read cache pointer */ 133 int count; 134 char buf[KB_IN_BYTES]; 135 }KB_INPUT; 136 137 138 139 #endif /* _TINIX_KEYBOARD_H_ */ 140