* X11Keyboard.cs: Detect and use the num lock mask.
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / XplatUIStructs.cs
1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
8 // 
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
11 // 
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 //
20 // Copyright (c) 2004 Novell, Inc.
21 //
22 // Authors:
23 //      Peter Bartok    pbartok@novell.com
24 //
25 //
26 // $Revision: 1.6 $
27 // $Modtime: $
28 // $Log: XplatUIStructs.cs,v $
29 // Revision 1.6  2004/11/08 20:53:48  pbartok
30 // - Added missing WS_EX styles
31 //
32 // Revision 1.5  2004/10/18 04:51:28  pbartok
33 // - Added WS_EX styles to WindowStyles enumeration
34 //
35 // Revision 1.4  2004/08/21 00:58:31  pbartok
36 // - Added private message for async communication
37 //
38 // Revision 1.3  2004/08/16 21:46:08  pbartok
39 // - Added WM_MOUSE_ENTER & WM_MOUSE_LEAVE to support OnMouseEnter/Leave()
40 //
41 // Revision 1.2  2004/07/15 17:06:48  jordi
42 // added MsgButons enum
43 //
44 // Revision 1.1  2004/07/09 05:21:25  pbartok
45 // - Initial check-in
46 //
47 //
48
49 // NOT COMPLETE
50
51 using System;
52 using System.Drawing;
53 using System.Runtime.InteropServices;
54
55 namespace System.Windows.Forms {
56         internal enum WindowStyles : int {\r
57                 WS_OVERLAPPED           = 0x00000000,\r
58                 WS_POPUP                = unchecked((int)0x80000000),\r
59                 WS_CHILD                = 0x40000000,\r
60                 WS_MINIMIZE             = 0x20000000,\r
61                 WS_VISIBLE              = 0x10000000,\r
62                 WS_DISABLED             = 0x08000000,\r
63                 WS_CLIPSIBLINGS         = 0x04000000,\r
64                 WS_CLIPCHILDREN         = 0x02000000,\r
65                 WS_MAXIMIZE             = 0x01000000,\r
66                 WS_CAPTION              = 0x00C00000,\r
67                 WS_BORDER               = 0x00800000,\r
68                 WS_DLGFRAME             = 0x00400000,\r
69                 WS_VSCROLL              = 0x00200000,\r
70                 WS_HSCROLL              = 0x00100000,\r
71                 WS_SYSMENU              = 0x00080000,\r
72                 WS_THICKFRAME           = 0x00040000,\r
73                 WS_GROUP                = 0x00020000,\r
74                 WS_TABSTOP              = 0x00010000,\r
75                 WS_MINIMIZEBOX          = 0x00020000,\r
76                 WS_MAXIMIZEBOX          = 0x00010000,\r
77                 WS_TILED                = 0x00000000,\r
78                 WS_ICONIC               = 0x20000000,\r
79                 WS_SIZEBOX              = 0x00040000,\r
80                 WS_POPUPWINDOW          = unchecked((int)0x80880000),\r
81                 WS_OVERLAPPEDWINDOW     = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,\r
82                 WS_TILEDWINDOW          = WS_OVERLAPPEDWINDOW,\r
83                 WS_CHILDWINDOW          = WS_CHILD,\r
84 \r
85                 // Extended Styles\r
86                 WS_EX_DLGMODALFRAME     = 0x00000001,
87                 WS_EX_DRAGDETECT        = 0x00000002,
88                 WS_EX_NOPARENTNOTIFY    = 0x00000004,\r
89                 WS_EX_TOPMOST           = 0x00000008,\r
90                 WS_EX_ACCEPTFILES       = 0x00000010,\r
91                 WS_EX_TRANSPARENT       = 0x00000020,\r
92 \r
93                 WS_EX_MDICHILD          = 0x00000040,\r
94                 WS_EX_TOOLWINDOW        = 0x00000080,\r
95                 WS_EX_WINDOWEDGE        = 0x00000100,\r
96                 WS_EX_CLIENTEDGE        = 0x00000200,\r
97                 WS_EX_CONTEXTHELP       = 0x00000400,\r
98 \r
99                 WS_EX_RIGHT             = 0x00001000,\r
100                 WS_EX_LEFT              = 0x00000000,\r
101                 WS_EX_RTLREADING        = 0x00002000,\r
102                 WS_EX_LTRREADING        = 0x00000000,\r
103                 WS_EX_LEFTSCROLLBAR     = 0x00004000,\r
104                 WS_EX_LAYERED           = 0x00080000,\r
105                 WS_EX_RIGHTSCROLLBAR    = 0x00000000,\r
106 \r
107                 WS_EX_CONTROLPARENT     = 0x00010000,\r
108                 WS_EX_STATICEDGE        = 0x00020000,\r
109                 WS_EX_APPWINDOW         = 0x00040000,\r
110                 WS_EX_NOINHERITLAYOUT   = 0x00100000,\r
111                 WS_EX_LAYOUTRTL         = 0x00400000,\r
112                 WS_EX_COMPOSITED        = 0x02000000,\r
113                 WS_EX_NOACTIVATE        = 0x08000000,\r
114 \r
115                 WS_EX_OVERLAPPEDWINDOW  = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE,\r
116                 WS_EX_PALETTEWINDOW     = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST\r
117         }\r
118
119         internal enum Msg {\r
120                 WM_NULL                   = 0x0000,\r
121                 WM_CREATE                 = 0x0001,\r
122                 WM_DESTROY                = 0x0002,\r
123                 WM_MOVE                   = 0x0003,\r
124                 WM_SIZE                   = 0x0005,\r
125                 WM_ACTIVATE               = 0x0006,\r
126                 WM_SETFOCUS               = 0x0007,\r
127                 WM_KILLFOCUS              = 0x0008,\r
128                 //              public const uint WM_SETVISIBLE           = 0x0009;\r
129                 WM_ENABLE                 = 0x000A,\r
130                 WM_SETREDRAW              = 0x000B,\r
131                 WM_SETTEXT                = 0x000C,\r
132                 WM_GETTEXT                = 0x000D,\r
133                 WM_GETTEXTLENGTH          = 0x000E,\r
134                 WM_PAINT                  = 0x000F,\r
135                 WM_CLOSE                  = 0x0010,\r
136                 WM_QUERYENDSESSION        = 0x0011,\r
137                 WM_QUIT                   = 0x0012,\r
138                 WM_QUERYOPEN              = 0x0013,\r
139                 WM_ERASEBKGND             = 0x0014,\r
140                 WM_SYSCOLORCHANGE         = 0x0015,\r
141                 WM_ENDSESSION             = 0x0016,\r
142                 //              public const uint WM_SYSTEMERROR          = 0x0017;\r
143                 WM_SHOWWINDOW             = 0x0018,\r
144                 WM_CTLCOLOR               = 0x0019,\r
145                 WM_WININICHANGE           = 0x001A,\r
146                 WM_SETTINGCHANGE          = 0x001A,\r
147                 WM_DEVMODECHANGE          = 0x001B,\r
148                 WM_ACTIVATEAPP            = 0x001C,\r
149                 WM_FONTCHANGE             = 0x001D,\r
150                 WM_TIMECHANGE             = 0x001E,\r
151                 WM_CANCELMODE             = 0x001F,\r
152                 WM_SETCURSOR              = 0x0020,\r
153                 WM_MOUSEACTIVATE          = 0x0021,\r
154                 WM_CHILDACTIVATE          = 0x0022,\r
155                 WM_QUEUESYNC              = 0x0023,\r
156                 WM_GETMINMAXINFO          = 0x0024,\r
157                 WM_PAINTICON              = 0x0026,\r
158                 WM_ICONERASEBKGND         = 0x0027,\r
159                 WM_NEXTDLGCTL             = 0x0028,\r
160                 //              public const uint WM_ALTTABACTIVE         = 0x0029;\r
161                 WM_SPOOLERSTATUS          = 0x002A,\r
162                 WM_DRAWITEM               = 0x002B,\r
163                 WM_MEASUREITEM            = 0x002C,\r
164                 WM_DELETEITEM             = 0x002D,\r
165                 WM_VKEYTOITEM             = 0x002E,\r
166                 WM_CHARTOITEM             = 0x002F,\r
167                 WM_SETFONT                = 0x0030,\r
168                 WM_GETFONT                = 0x0031,\r
169                 WM_SETHOTKEY              = 0x0032,\r
170                 WM_GETHOTKEY              = 0x0033,\r
171                 //              public const uint WM_FILESYSCHANGE        = 0x0034;\r
172                 //              public const uint WM_ISACTIVEICON         = 0x0035;\r
173                 //              public const uint WM_QUERYPARKICON        = 0x0036;\r
174                 WM_QUERYDRAGICON          = 0x0037,\r
175                 WM_COMPAREITEM            = 0x0039,\r
176                 //              public const uint WM_TESTING              = 0x003a;\r
177                 //              public const uint WM_OTHERWINDOWCREATED = 0x003c;\r
178                 WM_GETOBJECT              = 0x003D,\r
179                 //                      public const uint WM_ACTIVATESHELLWINDOW        = 0x003e;\r
180                 WM_COMPACTING             = 0x0041,\r
181                 WM_COMMNOTIFY             = 0x0044 ,\r
182                 WM_WINDOWPOSCHANGING      = 0x0046,\r
183                 WM_WINDOWPOSCHANGED       = 0x0047,\r
184                 WM_POWER                  = 0x0048,\r
185                 WM_COPYDATA               = 0x004A,\r
186                 WM_CANCELJOURNAL          = 0x004B,\r
187                 WM_NOTIFY                 = 0x004E,\r
188                 WM_INPUTLANGCHANGEREQUEST = 0x0050,\r
189                 WM_INPUTLANGCHANGE        = 0x0051,\r
190                 WM_TCARD                  = 0x0052,\r
191                 WM_HELP                   = 0x0053,\r
192                 WM_USERCHANGED            = 0x0054,\r
193                 WM_NOTIFYFORMAT           = 0x0055,\r
194                 WM_CONTEXTMENU            = 0x007B,\r
195                 WM_STYLECHANGING          = 0x007C,\r
196                 WM_STYLECHANGED           = 0x007D,\r
197                 WM_DISPLAYCHANGE          = 0x007E,\r
198                 WM_GETICON                = 0x007F,\r
199                 WM_SETICON                = 0x0080,\r
200                 WM_NCCREATE               = 0x0081,\r
201                 WM_NCDESTROY              = 0x0082,\r
202                 WM_NCCALCSIZE             = 0x0083,\r
203                 WM_NCHITTEST              = 0x0084,\r
204                 WM_NCPAINT                = 0x0085,\r
205                 WM_NCACTIVATE             = 0x0086,\r
206                 WM_GETDLGCODE             = 0x0087,\r
207                 WM_SYNCPAINT              = 0x0088,\r
208                 //              public const uint WM_SYNCTASK       = 0x0089;\r
209                 WM_NCMOUSEMOVE            = 0x00A0,\r
210                 WM_NCLBUTTONDOWN          = 0x00A1,\r
211                 WM_NCLBUTTONUP            = 0x00A2,\r
212                 WM_NCLBUTTONDBLCLK        = 0x00A3,\r
213                 WM_NCRBUTTONDOWN          = 0x00A4,\r
214                 WM_NCRBUTTONUP            = 0x00A5,\r
215                 WM_NCRBUTTONDBLCLK        = 0x00A6,\r
216                 WM_NCMBUTTONDOWN          = 0x00A7,\r
217                 WM_NCMBUTTONUP            = 0x00A8,\r
218                 WM_NCMBUTTONDBLCLK        = 0x00A9,\r
219                 //              public const uint WM_NCXBUTTONDOWN    = 0x00ab;\r
220                 //              public const uint WM_NCXBUTTONUP      = 0x00ac;\r
221                 //              public const uint WM_NCXBUTTONDBLCLK  = 0x00ad;\r
222                 WM_KEYDOWN                = 0x0100,\r
223                 WM_KEYFIRST               = 0x0100,\r
224                 WM_KEYUP                  = 0x0101,\r
225                 WM_CHAR                   = 0x0102,\r
226                 WM_DEADCHAR               = 0x0103,\r
227                 WM_SYSKEYDOWN             = 0x0104,\r
228                 WM_SYSKEYUP               = 0x0105,\r
229                 WM_SYSCHAR                = 0x0106,\r
230                 WM_SYSDEADCHAR            = 0x0107,\r
231                 WM_KEYLAST                = 0x0108,\r
232                 WM_IME_STARTCOMPOSITION   = 0x010D,\r
233                 WM_IME_ENDCOMPOSITION     = 0x010E,\r
234                 WM_IME_COMPOSITION        = 0x010F,\r
235                 WM_IME_KEYLAST            = 0x010F,\r
236                 WM_INITDIALOG             = 0x0110,\r
237                 WM_COMMAND                = 0x0111,\r
238                 WM_SYSCOMMAND             = 0x0112,\r
239                 WM_TIMER                  = 0x0113,\r
240                 WM_HSCROLL                = 0x0114,\r
241                 WM_VSCROLL                = 0x0115,\r
242                 WM_INITMENU               = 0x0116,\r
243                 WM_INITMENUPOPUP          = 0x0117,\r
244                 //              public const uint WM_SYSTIMER       = 0x0118;\r
245                 WM_MENUSELECT             = 0x011F,\r
246                 WM_MENUCHAR               = 0x0120,\r
247                 WM_ENTERIDLE              = 0x0121,\r
248                 WM_MENURBUTTONUP          = 0x0122,\r
249                 WM_MENUDRAG               = 0x0123,\r
250                 WM_MENUGETOBJECT          = 0x0124,\r
251                 WM_UNINITMENUPOPUP        = 0x0125,\r
252                 WM_MENUCOMMAND            = 0x0126,\r
253                 //              public const uint WM_CHANGEUISTATE    = 0x0127;\r
254                 //              public const uint WM_UPDATEUISTATE    = 0x0128;\r
255                 //              public const uint WM_QUERYUISTATE     = 0x0129;\r
256 \r
257                 //              public const uint WM_LBTRACKPOINT     = 0x0131;\r
258                 WM_CTLCOLORMSGBOX         = 0x0132,\r
259                 WM_CTLCOLOREDIT           = 0x0133,\r
260                 WM_CTLCOLORLISTBOX        = 0x0134,\r
261                 WM_CTLCOLORBTN            = 0x0135,\r
262                 WM_CTLCOLORDLG            = 0x0136,\r
263                 WM_CTLCOLORSCROLLBAR      = 0x0137,\r
264                 WM_CTLCOLORSTATIC         = 0x0138,\r
265                 WM_MOUSEMOVE              = 0x0200,\r
266                 WM_MOUSEFIRST                     = 0x0200,\r
267                 WM_LBUTTONDOWN            = 0x0201,\r
268                 WM_LBUTTONUP              = 0x0202,\r
269                 WM_LBUTTONDBLCLK          = 0x0203,\r
270                 WM_RBUTTONDOWN            = 0x0204,\r
271                 WM_RBUTTONUP              = 0x0205,\r
272                 WM_RBUTTONDBLCLK          = 0x0206,\r
273                 WM_MBUTTONDOWN            = 0x0207,\r
274                 WM_MBUTTONUP              = 0x0208,\r
275                 WM_MBUTTONDBLCLK          = 0x0209,\r
276                 WM_MOUSEWHEEL             = 0x020A,\r
277                 WM_MOUSELAST             = 0x020D,\r
278                 //              public const uint WM_XBUTTONDOWN      = 0x020B;\r
279                 //              public const uint WM_XBUTTONUP        = 0x020C;\r
280                 //              public const uint WM_XBUTTONDBLCLK    = 0x020D;\r
281                 WM_PARENTNOTIFY           = 0x0210,\r
282                 WM_ENTERMENULOOP          = 0x0211,\r
283                 WM_EXITMENULOOP           = 0x0212,\r
284                 WM_NEXTMENU               = 0x0213,\r
285                 WM_SIZING                 = 0x0214,\r
286                 WM_CAPTURECHANGED         = 0x0215,\r
287                 WM_MOVING                 = 0x0216,\r
288                 //              public const uint WM_POWERBROADCAST   = 0x0218;\r
289                 WM_DEVICECHANGE           = 0x0219,\r
290                 WM_MDICREATE              = 0x0220,\r
291                 WM_MDIDESTROY             = 0x0221,\r
292                 WM_MDIACTIVATE            = 0x0222,\r
293                 WM_MDIRESTORE             = 0x0223,\r
294                 WM_MDINEXT                = 0x0224,\r
295                 WM_MDIMAXIMIZE            = 0x0225,\r
296                 WM_MDITILE                = 0x0226,\r
297                 WM_MDICASCADE             = 0x0227,\r
298                 WM_MDIICONARRANGE         = 0x0228,\r
299                 WM_MDIGETACTIVE           = 0x0229,\r
300                 /* D&D messages */\r
301                 //              public const uint WM_DROPOBJECT     = 0x022A;\r
302                 //              public const uint WM_QUERYDROPOBJECT  = 0x022B;\r
303                 //              public const uint WM_BEGINDRAG      = 0x022C;\r
304                 //              public const uint WM_DRAGLOOP       = 0x022D;\r
305                 //              public const uint WM_DRAGSELECT     = 0x022E;\r
306                 //              public const uint WM_DRAGMOVE       = 0x022F;\r
307                 WM_MDISETMENU             = 0x0230,\r
308                 WM_ENTERSIZEMOVE          = 0x0231,\r
309                 WM_EXITSIZEMOVE           = 0x0232,\r
310                 WM_DROPFILES              = 0x0233,\r
311                 WM_MDIREFRESHMENU         = 0x0234,\r
312                 WM_IME_SETCONTEXT         = 0x0281,\r
313                 WM_IME_NOTIFY             = 0x0282,\r
314                 WM_IME_CONTROL            = 0x0283,\r
315                 WM_IME_COMPOSITIONFULL    = 0x0284,\r
316                 WM_IME_SELECT             = 0x0285,\r
317                 WM_IME_CHAR               = 0x0286,\r
318                 WM_IME_REQUEST            = 0x0288,\r
319                 WM_IME_KEYDOWN            = 0x0290,\r
320                 WM_IME_KEYUP              = 0x0291,\r
321                 WM_MOUSEHOVER             = 0x02A1,\r
322                 WM_MOUSELEAVE             = 0x02A3,\r
323                 WM_CUT                    = 0x0300,\r
324                 WM_COPY                   = 0x0301,\r
325                 WM_PASTE                  = 0x0302,\r
326                 WM_CLEAR                  = 0x0303,\r
327                 WM_UNDO                   = 0x0304,\r
328                 WM_RENDERFORMAT           = 0x0305,\r
329                 WM_RENDERALLFORMATS       = 0x0306,\r
330                 WM_DESTROYCLIPBOARD       = 0x0307,\r
331                 WM_DRAWCLIPBOARD          = 0x0308,\r
332                 WM_PAINTCLIPBOARD         = 0x0309,\r
333                 WM_VSCROLLCLIPBOARD       = 0x030A,\r
334                 WM_SIZECLIPBOARD          = 0x030B,\r
335                 WM_ASKCBFORMATNAME        = 0x030C,\r
336                 WM_CHANGECBCHAIN          = 0x030D,\r
337                 WM_HSCROLLCLIPBOARD       = 0x030E,\r
338                 WM_QUERYNEWPALETTE        = 0x030F,\r
339                 WM_PALETTEISCHANGING      = 0x0310,\r
340                 WM_PALETTECHANGED         = 0x0311,\r
341                 WM_HOTKEY                 = 0x0312,\r
342                 WM_PRINT                  = 0x0317,\r
343                 WM_PRINTCLIENT            = 0x0318,\r
344                 WM_HANDHELDFIRST          = 0x0358,\r
345                 WM_HANDHELDLAST           = 0x035F,\r
346                 WM_AFXFIRST               = 0x0360,\r
347                 WM_AFXLAST                = 0x037F,\r
348                 WM_PENWINFIRST            = 0x0380,\r
349                 WM_PENWINLAST             = 0x038F,\r
350                 WM_APP                    = 0x8000,\r
351                 WM_USER                   = 0x0400,\r
352 \r
353                 // Our "private" ones\r
354                 WM_MOUSE_ENTER            = 0x0401,\r
355                 WM_MOUSE_LEAVE            = 0x0402,\r
356                 WM_ASYNC_MESSAGE          = 0x0403,\r
357                 WM_REFLECT                = WM_USER + 0x1c00\r
358         }\r
359
360 #if notdef
361         internal enum Msg {
362                 WM_NULL                 = 0x0000,
363                 WM_CREATE               = 0x0001,
364                 WM_DESTROY              = 0x0002,
365                 WM_MOVE                 = 0x0003,
366                 WM_SIZE                 = 0x0005,
367                 WM_ACTIVATE             = 0x0006,
368                 WM_SETFOCUS             = 0x0007,
369                 WM_KILLFOCUS            = 0x0008,
370                 WM_SETVISIBLE           = 0x0009,
371                 WM_ENABLE               = 0x000A,
372                 // ...
373                 WM_PAINT                = 0x000F,
374                 WM_CLOSE                = 0x0010,
375                 WM_QUERYENDSESSION      = 0x0011,
376                 WM_QUIT                 = 0x0012,
377                 WM_QUERYOPEN            = 0x0013,
378                 WM_ERASEBKGND           = 0x0014,
379                 WM_SYSCOLORCHANGE       = 0x0015,
380
381                 // ...
382                 WM_WINDOWPOSCHANGED     = 0x0046,
383
384                 // ...
385                 WM_KEYFIRST             = 0x0100,
386                 WM_KEYDOWN              = 0x0100,
387                 WM_KEYUP                = 0x0101,
388                 WM_CHAR                 = 0x0102,
389                 WM_DEADCHAR             = 0x0103,
390                 WM_SYSKEYDOWN           = 0x0104,
391                 WM_SYSKEYUP             = 0x0105,
392                 WM_SYS1CHAR             = 0x0106,
393                 WM_SYSDEADCHAR          = 0x0107,
394                 WM_KEYLAST              = 0x0108,
395
396                 // ...
397                 WM_MOUSEFIRST           = 0x0200,
398                 WM_MOUSEMOVE            = 0x0200,
399                 WM_LBUTTONDOWN          = 0x0201,
400                 WM_LBUTTONUP            = 0x0202,
401                 WM_LBUTTONDBLCLK        = 0x0203,
402                 WM_RBUTTONDOWN          = 0x0204,
403                 WM_RBUTTONUP            = 0x0205,
404                 WM_RBUTTONDBLCLK        = 0x0206,
405                 WM_MBUTTONDOWN          = 0x0207,
406                 WM_MBUTTONUP            = 0x0208,
407                 WM_MBUTTONDBLCLK        = 0x0209,
408                 WM_MOUSEWHEEL           = 0x020A,
409                 WM_MOUSELAST            = 0x020D,
410                 // ...
411                 WM_MOUSEHOVER           = 0x02A1,
412                 WM_MOUSELEAVE           = 0x02A3,
413         }
414 #endif\r
415 \r
416         internal enum MsgButtons {\r
417                 MK_LBUTTON              = 0x0001,\r
418                 MK_RBUTTON              = 0x0002,\r
419                 MK_SHIFT                = 0x0004,\r
420                 MK_CONTROL              = 0x0008,\r
421                 MK_MBUTTON              = 0x0010,\r
422                 MK_XBUTTON1             = 0x0020,\r
423                 MK_XBUTTON2             = 0x0040,\r
424         }
425
426         [StructLayout(LayoutKind.Sequential)]\r
427         internal struct POINT {\r
428                 internal int x;\r
429                 internal int y;\r
430         }\r
431         \r
432         [StructLayout(LayoutKind.Sequential)] \r
433         internal struct MSG {\r
434                 internal IntPtr hwnd;\r
435                 internal Msg    message;\r
436                 internal IntPtr wParam; \r
437                 internal IntPtr lParam;\r
438                 internal uint   time;  \r
439                 internal POINT  pt;\r
440         }\r
441
442         internal enum WindowActiveFlags {
443                 WA_INACTIVE             = 0,
444                 WA_ACTIVE               = 1,
445                 WA_CLICKACTIVE          = 2
446         }
447
448         internal enum KeybdEventFlags {
449                 None                    = 0,
450                 ExtendedKey             = 0x0001,
451                 KeyUp                   = 0x0002
452         }
453
454         internal enum VirtualKeys {
455                 VK_LBUTTON              = 0x01,
456                 VK_RBUTTON              = 0x02,
457                 VK_CANCEL               = 0x03,
458                 VK_MBUTTON              = 0x04,
459                 VK_XBUTTON1             = 0x05,
460                 VK_XBUTTON2             = 0x06,
461                 VK_BACK                 = 0x08,
462                 VK_TAB                  = 0x09,
463                 VK_CLEAR                = 0x0C,
464                 VK_RETURN               = 0x0D,
465                 VK_SHIFT                = 0x10,
466                 VK_CONTROL              = 0x11,
467                 VK_MENU                 = 0x12,
468                 VK_PAUSE                = 0x13,
469                 VK_CAPITAL              = 0x14,
470                 VK_ESCAPE               = 0x1B,
471                 VK_SPACE                = 0x20,
472                 VK_PRIOR                = 0x21,
473                 VK_NEXT                 = 0x22,
474                 VK_END                  = 0x23,
475                 VK_HOME                 = 0x24,
476                 VK_LEFT                 = 0x25,
477                 VK_UP                   = 0x26,
478                 VK_RIGHT                = 0x27,
479                 VK_DOWN                 = 0x28,
480                 VK_SELECT               = 0x29,
481                 VK_EXECUTE              = 0x2B,
482                 VK_SNAPSHOT             = 0x2C,
483                 VK_HELP                 = 0x2F,
484                 VK_0                    = 0x30,
485                 VK_1                    = 0x31,
486                 VK_2                    = 0x32,
487                 VK_3                    = 0x33,
488                 VK_4                    = 0x34,
489                 VK_5                    = 0x35,
490                 VK_6                    = 0x36,
491                 VK_7                    = 0x37,
492                 VK_8                    = 0x38,
493                 VK_9                    = 0x39,
494                 VK_A                    = 0x41,
495                 VK_B                    = 0x42,
496                 VK_C                    = 0x43,
497                 VK_D                    = 0x44,
498                 VK_E                    = 0x45,
499                 VK_F                    = 0x46,
500                 VK_G                    = 0x47,
501                 VK_H                    = 0x48,
502                 VK_I                    = 0x49,
503                 VK_J                    = 0x4A,
504                 VK_K                    = 0x4B,
505                 VK_L                    = 0x4C,
506                 VK_M                    = 0x4D,
507                 VK_N                    = 0x4E,
508                 VK_O                    = 0x4F,
509                 VK_P                    = 0x50,
510                 VK_Q                    = 0x51,
511                 VK_R                    = 0x52,
512                 VK_S                    = 0x53,
513                 VK_T                    = 0x54,
514                 VK_U                    = 0x55,
515                 VK_V                    = 0x56,
516                 VK_W                    = 0x57,
517                 VK_X                    = 0x58,
518                 VK_Y                    = 0x59,
519                 VK_Z                    = 0x5A,
520                 VK_NUMPAD0              = 0x60,
521                 VK_NUMPAD1              = 0x61,
522                 VK_NUMPAD2              = 0x62,
523                 VK_NUMPAD3              = 0x63,
524                 VK_NUMPAD4              = 0x64,
525                 VK_NUMPAD5              = 0x65,
526                 VK_NUMPAD6              = 0x66,
527                 VK_NUMPAD7              = 0x67,
528                 VK_NUMPAD8              = 0x68,
529                 VK_NUMPAD9              = 0x69,
530                 VK_MULTIPLY             = 0x6A,
531                 VK_ADD                  = 0x6B,
532                 VK_SEPARATOR            = 0x6C,
533                 VK_SUBTRACT             = 0x6D,
534                 VK_DECIMAL              = 0x6E,
535                 VK_DIVIDE               = 0x6F,
536                 VK_F1                   = 0x70,
537                 VK_F2                   = 0x71,
538                 VK_F3                   = 0x72,
539                 VK_F4                   = 0x73,
540                 VK_F5                   = 0x74,
541                 VK_F6                   = 0x75,
542                 VK_F7                   = 0x76,
543                 VK_F8                   = 0x77,
544                 VK_F9                   = 0x78,
545                 VK_F10                  = 0x79,
546                 VK_F11                  = 0x7A,
547                 VK_F12                  = 0x7B,
548                 VK_DELETE               = 0x7F,
549                 VK_NUMLOCK              = 0x90,
550                 VK_SCROLL_LOCK          = 0x91,
551                 VK_INSERT               = 0x9B,
552                 VK_ATTN                 = 0xF6,
553                 VK_CRSEL                = 0xF7,
554                 VK_EXSEL                = 0xF8,
555                 VK_EREOF                = 0xF9,
556                 VK_PLAY                 = 0xFA,  
557                 VK_ZOOM                 = 0xFB,
558                 VK_NONAME               = 0xFC,
559                 VK_PA1                  = 0xFD,
560                 VK_OEM_CLEAR            = 0xFE,
561                 VK_LWIN                 = 0x5B,
562                 VK_RWIN                 = 0x5C,
563                 VK_APPS                 = 0x5D,   
564                 VK_LSHIFT               = 0xA0,   
565                 VK_RSHIFT               = 0xA1,   
566                 VK_LCONTROL             = 0xA2,   
567                 VK_RCONTROL             = 0xA3,   
568                 VK_LMENU                = 0xA4,   
569                 VK_RMENU                = 0xA5,
570                 VK_OEM_1                = 0xBA, // for misc chars, varies by keyboard
571                 VK_OEM_PLUS             = 0xBB,
572                 VK_OEM_COMMA            = 0xBC,
573                 VK_OEM_MINUS            = 0xBD,
574                 VK_OEM_PERIOD           = 0xBE,
575                 // for misc chars, varies by keyboard
576                 VK_OEM_2                = 0xBF, 
577                 VK_OEM_3                = 0xC0,
578                 VK_OEM_4                = 0xDB,
579                 VK_OEM_5                = 0xDC,
580                 VK_OEM_6                = 0xDD,
581                 VK_OEM_7                = 0xDE,
582                 VK_OEM_8                = 0xDF,
583                 VK_OEM_102              = 0xE2,
584                 VK_PROCESSKEY           = 0xE5,
585                 VK_F13                  = 0xF000,
586                 VK_F14                  = 0xF001,
587                 VK_F15                  = 0xF002,
588                 VK_F16                  = 0xF003,
589         }
590
591         internal enum TtyKeys {
592                 XK_BackSpace            = 0xff08,  /* Back space, back char */
593                 XK_Tab                  = 0xff09,
594                 XK_Linefeed             = 0xff0a,  /* Linefeed, LF */
595                 XK_Clear                = 0xff0b,
596                 XK_Return               = 0xff0d,  /* Return, enter */
597                 XK_Pause                = 0xff13,  /* Pause, hold */
598                 XK_Scroll_Lock          = 0xff14,
599                 XK_Sys_Req              = 0xff15,
600                 XK_Escape               = 0xff1b,
601                 XK_Delete               = 0xffff  /* Delete, rubout */
602         }
603
604         internal enum KeypadKeys {
605                 XK_KP_Space             = 0xff80,
606                 XK_KP_Tab               = 0xff89,
607                 XK_KP_Enter             = 0xff8d,  /* Enter */
608                 XK_KP_F1                = 0xff91,  /* PF1, KP_A, ... */
609                 XK_KP_F2                = 0xff92,
610                 XK_KP_F3                = 0xff93,
611                 XK_KP_F4                = 0xff94,
612                 XK_KP_Home              = 0xff95,
613                 XK_KP_Left              = 0xff96,
614                 XK_KP_Up                = 0xff97,
615                 XK_KP_Right             = 0xff98,
616                 XK_KP_Down              = 0xff99,
617                 XK_KP_Prior             = 0xff9a,
618                 XK_KP_Page_Up           = 0xff9a,
619                 XK_KP_Next              = 0xff9b,
620                 XK_KP_Page_Down         = 0xff9b,
621                 XK_KP_End               = 0xff9c,
622                 XK_KP_Begin             = 0xff9d,
623                 XK_KP_Insert            = 0xff9e,
624                 XK_KP_Delete            = 0xff9f,
625                 XK_KP_Equal             = 0xffbd,  /* Equals */
626                 XK_KP_Multiply          = 0xffaa,
627                 XK_KP_Add               = 0xffab,
628                 XK_KP_Separator         = 0xffac,  /* Separator, often comma */
629                 XK_KP_Subtract          = 0xffad,
630                 XK_KP_Decimal           = 0xffae,
631                 XK_KP_Divide            = 0xffaf,
632
633                 XK_KP_0                 = 0xffb0,
634                 XK_KP_1                 = 0xffb1,
635                 XK_KP_2                 = 0xffb2,
636                 XK_KP_3                 = 0xffb3,
637                 XK_KP_4                 = 0xffb4,
638                 XK_KP_5                 = 0xffb5,
639                 XK_KP_6                 = 0xffb6,
640                 XK_KP_7                 = 0xffb7,
641                 XK_KP_8                 = 0xffb8,
642                 XK_KP_9                 = 0xffb9
643         }\r
644 }
645