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