branch update for HEAD-2003021201
[reactos.git] / include / ntos / keyboard.h
1 /*
2  * COPYRIGHT:    See COPYING in the top level directory
3  * PROJECT:      ReactOS kernel
4  * FILE:         include/keyboard.h
5  * PURPOSE:      Keyboard declarations used by all the parts of the 
6  *               system
7  * PROGRAMMER:   David Welch <welch@cwcom.net>
8  * UPDATE HISTORY: 
9  *               27/06/00: Created
10  */
11
12
13 #ifndef __INCLUDE_KEYBOARD_H
14 #define __INCLUDE_KEYBOARD_H
15
16 #include <ntos/types.h>
17
18 /* Virtual Key codes */
19 #define VK_0    (48)
20 #define VK_1    (49)
21 #define VK_2    (50)
22 #define VK_3    (51)
23 #define VK_4    (52)
24 #define VK_5    (53)
25 #define VK_6    (54)
26 #define VK_7    (55)
27 #define VK_8    (56)
28 #define VK_9    (57)
29 #define VK_A    (65)
30 #define VK_B    (66)
31 #define VK_C    (67)
32 #define VK_D    (68)
33 #define VK_E    (69)
34 #define VK_F    (70)
35 #define VK_G    (71)
36 #define VK_H    (72)
37 #define VK_I    (73)
38 #define VK_J    (74)
39 #define VK_K    (75)
40 #define VK_L    (76)
41 #define VK_M    (77)
42 #define VK_N    (78)
43 #define VK_O    (79)
44 #define VK_P    (80)
45 #define VK_Q    (81)
46 #define VK_R    (82)
47 #define VK_S    (83)
48 #define VK_T    (84)
49 #define VK_U    (85)
50 #define VK_V    (86)
51 #define VK_W    (87)
52 #define VK_X    (88)
53 #define VK_Y    (89)
54 #define VK_Z    (90)
55
56 #ifndef __USE_W32API
57
58 /* KEY_EVENT_RECORD structure */
59 #define CAPSLOCK_ON     (128)
60 #define ENHANCED_KEY    (256)
61 #define LEFT_ALT_PRESSED        (2)
62 #define LEFT_CTRL_PRESSED       (8)
63 #define NUMLOCK_ON      (32)
64 #define RIGHT_ALT_PRESSED       (1)
65 #define RIGHT_CTRL_PRESSED      (4)
66 #define SCROLLLOCK_ON   (64)
67 #define SHIFT_PRESSED   (16)
68
69 /* MOUSE_EVENT_RECORD structure */
70 #define FROM_LEFT_1ST_BUTTON_PRESSED    (1)
71 #define RIGHTMOST_BUTTON_PRESSED        (2)
72 #define FROM_LEFT_2ND_BUTTON_PRESSED    (4)
73 #define FROM_LEFT_3RD_BUTTON_PRESSED    (8)
74 #define FROM_LEFT_4TH_BUTTON_PRESSED    (16)
75 #define DOUBLE_CLICK    (2)
76 #define MOUSE_MOVED     (1)
77
78 /* INPUT_RECORD structure */
79 #define KEY_EVENT       (1)
80 #define MOUSE_EVENT     (2)
81 #define WINDOW_BUFFER_SIZE_EVENT        (4)
82 #define MENU_EVENT      (8)
83 #define FOCUS_EVENT     (16)
84
85
86 typedef struct _KEY_EVENT_RECORD
87 {
88   BOOL bKeyDown;
89   WORD wRepeatCount;
90   WORD wVirtualKeyCode;
91   WORD wVirtualScanCode;
92   union
93   {
94     WCHAR UnicodeChar;
95     CHAR  AsciiChar;
96   } uChar;
97   DWORD dwControlKeyState;
98 } KEY_EVENT_RECORD PACKED;
99
100 typedef struct _MOUSE_EVENT_RECORD
101 {
102   COORD dwMousePosition;
103   DWORD dwButtonState;
104   DWORD dwControlKeyState;
105   DWORD dwEventFlags;
106 } MOUSE_EVENT_RECORD;
107
108 typedef struct _WINDOW_BUFFER_SIZE_RECORD
109 {
110   COORD dwSize;
111 } WINDOW_BUFFER_SIZE_RECORD;
112
113 typedef struct _MENU_EVENT_RECORD
114 {
115   UINT dwCommandId; 
116 } MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
117
118 typedef struct _FOCUS_EVENT_RECORD
119 {
120   BOOL bSetFocus;
121 } FOCUS_EVENT_RECORD;
122
123 typedef struct _INPUT_RECORD
124 {
125   WORD EventType;
126   union
127   {
128 #ifndef __cplus_plus
129     /* this will be the wrong size in c++ */
130     KEY_EVENT_RECORD KeyEvent;
131 #endif
132     MOUSE_EVENT_RECORD MouseEvent;
133     WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
134     MENU_EVENT_RECORD MenuEvent;
135     FOCUS_EVENT_RECORD FocusEvent;
136   } Event;
137 } INPUT_RECORD, *PINPUT_RECORD;
138
139 /* Virtual Key codes */
140 #define VK_LBUTTON      (1)
141 #define VK_RBUTTON      (2)
142 #define VK_CANCEL       (3)
143 #define VK_MBUTTON      (4)
144 #define VK_BACK (8)
145 #define VK_TAB  (9)
146 #define VK_CLEAR        (12)
147 #define VK_RETURN       (13)
148 #define VK_SHIFT        (16)
149 #define VK_CONTROL      (17)
150 #define VK_MENU (18)
151 #define VK_PAUSE        (19)
152 #define VK_CAPITAL      (20)
153 #define VK_ESCAPE       (27)
154 #define VK_SPACE        (32)
155 #define VK_PRIOR        (33)
156 #define VK_NEXT (34)
157 #define VK_END  (35)
158 #define VK_HOME (36)
159 #define VK_LEFT (37)
160 #define VK_UP   (38)
161 #define VK_RIGHT        (39)
162 #define VK_DOWN (40)
163 #define VK_SELECT       (41)
164 #define VK_PRINT        (42)
165 #define VK_EXECUTE      (43)
166 #define VK_SNAPSHOT     (44)
167 #define VK_INSERT       (45)
168 #define VK_DELETE       (46)
169 #define VK_HELP (47)
170 #define VK_NUMPAD0      (96)
171 #define VK_NUMPAD1      (97)
172 #define VK_NUMPAD2      (98)
173 #define VK_NUMPAD3      (99)
174 #define VK_NUMPAD4      (100)
175 #define VK_NUMPAD5      (101)
176 #define VK_NUMPAD6      (102)
177 #define VK_NUMPAD7      (103)
178 #define VK_NUMPAD8      (104)
179 #define VK_NUMPAD9      (105)
180 #define VK_MULTIPLY     (106)
181 #define VK_ADD  (107)
182 #define VK_SEPARATOR    (108)
183 #define VK_SUBTRACT     (109)
184 #define VK_DECIMAL      (110)
185 #define VK_DIVIDE       (111)
186 #define VK_F1   (112)
187 #define VK_F2   (113)
188 #define VK_F3   (114)
189 #define VK_F4   (115)
190 #define VK_F5   (116)
191 #define VK_F6   (117)
192 #define VK_F7   (118)
193 #define VK_F8   (119)
194 #define VK_F9   (120)
195 #define VK_F10  (121)
196 #define VK_F11  (122)
197 #define VK_F12  (123)
198 #define VK_F13  (124)
199 #define VK_F14  (125)
200 #define VK_F15  (126)
201 #define VK_F16  (127)
202 #define VK_F17  (128)
203 #define VK_F18  (129)
204 #define VK_F19  (130)
205 #define VK_F20  (131)
206 #define VK_F21  (132)
207 #define VK_F22  (133)
208 #define VK_F23  (134)
209 #define VK_F24  (135)
210
211 /* GetAsyncKeyState */
212 #define VK_NUMLOCK      (144)
213 #define VK_SCROLL       (145)
214 #define VK_LSHIFT       (160)
215 #define VK_LCONTROL     (162)
216 #define VK_LMENU        (164)
217 #define VK_RSHIFT       (161)
218 #define VK_RCONTROL     (163)
219 #define VK_RMENU        (165)
220
221 #endif /* !__USE_W32API */
222
223 #endif /* __INCLUDE_KEYBOARD_H */
224
225
226