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