1 module win32.ansi.wincon;
2
3 // Translated from Microsoft Platform SDK August 2001 Edition
4 // by Y.Tomino (demoonlit@inter7.jp)
5
6 import win32.ansi.winbase;
7
8 // #ifndef _WINCON_
9 // #define _WINCON_
10
11 // #ifdef __cplusplus
12 // extern "C" {
13 // #endif
14
15 struct _COORD {
16 SHORT X;
17 SHORT Y;
18 }
19 alias _COORD COORD;
20 alias _COORD* PCOORD;
21
22 struct _SMALL_RECT {
23 SHORT Left;
24 SHORT Top;
25 SHORT Right;
26 SHORT Bottom;
27 }
28 alias _SMALL_RECT SMALL_RECT;
29 alias _SMALL_RECT* PSMALL_RECT;
30
31 struct _KEY_EVENT_RECORD {
32 BOOL bKeyDown;
33 WORD wRepeatCount;
34 WORD wVirtualKeyCode;
35 WORD wVirtualScanCode;
36 union {
37 WCHAR UnicodeChar;
38 CHAR AsciiChar;
39 }
40
41 DWORD dwControlKeyState;
42 }
43 alias _KEY_EVENT_RECORD KEY_EVENT_RECORD;
44 alias _KEY_EVENT_RECORD* PKEY_EVENT_RECORD;
45
46 enum : uint { RIGHT_ALT_PRESSED = 0x0001 }
47 enum : uint { LEFT_ALT_PRESSED = 0x0002 }
48 enum : uint { RIGHT_CTRL_PRESSED = 0x0004 }
49 enum : uint { LEFT_CTRL_PRESSED = 0x0008 }
50 enum : uint { SHIFT_PRESSED = 0x0010 }
51 enum : uint { NUMLOCK_ON = 0x0020 }
52 enum : uint { SCROLLLOCK_ON = 0x0040 }
53 enum : uint { CAPSLOCK_ON = 0x0080 }
54 enum : uint { ENHANCED_KEY = 0x0100 }
55 enum : uint { NLS_DBCSCHAR = 0x00010000 }
56 enum : uint { NLS_ALPHANUMERIC = 0x00000000 }
57 enum : uint { NLS_KATAKANA = 0x00020000 }
58 enum : uint { NLS_HIRAGANA = 0x00040000 }
59 enum : uint { NLS_ROMAN = 0x00400000 }
60 enum : uint { NLS_IME_CONVERSION = 0x00800000 }
61 enum : uint { NLS_IME_DISABLE = 0x20000000 }
62
63 struct _MOUSE_EVENT_RECORD {
64 COORD dwMousePosition;
65 DWORD dwButtonState;
66 DWORD dwControlKeyState;
67 DWORD dwEventFlags;
68 }
69 alias _MOUSE_EVENT_RECORD MOUSE_EVENT_RECORD;
70 alias _MOUSE_EVENT_RECORD* PMOUSE_EVENT_RECORD;
71
72 enum : uint { FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001 }
73 enum : uint { RIGHTMOST_BUTTON_PRESSED = 0x0002 }
74 enum : uint { FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004 }
75 enum : uint { FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008 }
76 enum : uint { FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010 }
77
78 enum : uint { MOUSE_MOVED = 0x0001 }
79 enum : uint { DOUBLE_CLICK = 0x0002 }
80 enum : uint { MOUSE_WHEELED = 0x0004 }
81
82 struct _WINDOW_BUFFER_SIZE_RECORD {
83 COORD dwSize;
84 }
85 alias _WINDOW_BUFFER_SIZE_RECORD WINDOW_BUFFER_SIZE_RECORD;
86 alias _WINDOW_BUFFER_SIZE_RECORD* PWINDOW_BUFFER_SIZE_RECORD;
87
88 struct _MENU_EVENT_RECORD {
89 UINT dwCommandId;
90 }
91 alias _MENU_EVENT_RECORD MENU_EVENT_RECORD;
92 alias _MENU_EVENT_RECORD* PMENU_EVENT_RECORD;
93
94 struct _FOCUS_EVENT_RECORD {
95 BOOL bSetFocus;
96 }
97 alias _FOCUS_EVENT_RECORD FOCUS_EVENT_RECORD;
98 alias _FOCUS_EVENT_RECORD* PFOCUS_EVENT_RECORD;
99
100 struct _INPUT_RECORD {
101 WORD EventType;
102 union {
103 KEY_EVENT_RECORD KeyEvent;
104 MOUSE_EVENT_RECORD MouseEvent;
105 WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
106 MENU_EVENT_RECORD MenuEvent;
107 FOCUS_EVENT_RECORD FocusEvent;
108 }
109
110 }
111 alias _INPUT_RECORD INPUT_RECORD;
112 alias _INPUT_RECORD* PINPUT_RECORD;
113
114 enum : uint { KEY_EVENT = 0x0001 }
115 enum : uint { MOUSE_EVENT = 0x0002 }
116 enum : uint { WINDOW_BUFFER_SIZE_EVENT = 0x0004 }
117 enum : uint { MENU_EVENT = 0x0008 }
118 enum : uint { FOCUS_EVENT = 0x0010 }
119
120 struct _CHAR_INFO {
121 union {
122 WCHAR UnicodeChar;
123 CHAR AsciiChar;
124 }
125
126 WORD Attributes;
127 }
128 alias _CHAR_INFO CHAR_INFO;
129 alias _CHAR_INFO* PCHAR_INFO;
130
131 enum : uint { FOREGROUND_BLUE = 0x0001 }
132 enum : uint { FOREGROUND_GREEN = 0x0002 }
133 enum : uint { FOREGROUND_RED = 0x0004 }
134 enum : uint { FOREGROUND_INTENSITY = 0x0008 }
135 enum : uint { BACKGROUND_BLUE = 0x0010 }
136 enum : uint { BACKGROUND_GREEN = 0x0020 }
137 enum : uint { BACKGROUND_RED = 0x0040 }
138 enum : uint { BACKGROUND_INTENSITY = 0x0080 }
139 enum : uint { COMMON_LVB_LEADING_BYTE = 0x0100 }
140 enum : uint { COMMON_LVB_TRAILING_BYTE = 0x0200 }
141 enum : uint { COMMON_LVB_GRID_HORIZONTAL = 0x0400 }
142 enum : uint { COMMON_LVB_GRID_LVERTICAL = 0x0800 }
143 enum : uint { COMMON_LVB_GRID_RVERTICAL = 0x1000 }
144 enum : uint { COMMON_LVB_REVERSE_VIDEO = 0x4000 }
145 enum : uint { COMMON_LVB_UNDERSCORE = 0x8000 }
146
147 enum : uint { COMMON_LVB_SBCSDBCS = 0x0300 }
148
149 struct _CONSOLE_SCREEN_BUFFER_INFO {
150 COORD dwSize;
151 COORD dwCursorPosition;
152 WORD wAttributes;
153 SMALL_RECT srWindow;
154 COORD dwMaximumWindowSize;
155 }
156 alias _CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO;
157 alias _CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO;
158
159 struct _CONSOLE_CURSOR_INFO {
160 DWORD dwSize;
161 BOOL bVisible;
162 }
163 alias _CONSOLE_CURSOR_INFO CONSOLE_CURSOR_INFO;
164 alias _CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO;
165
166 struct _CONSOLE_FONT_INFO {
167 DWORD nFont;
168 COORD dwFontSize;
169 }
170 alias _CONSOLE_FONT_INFO CONSOLE_FONT_INFO;
171 alias _CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO;
172
173 // #if(_WIN32_WINNT >= 0x0500)
174 struct _CONSOLE_SELECTION_INFO {
175 DWORD dwFlags;
176 COORD dwSelectionAnchor;
177 SMALL_RECT srSelection;
178 }
179 alias _CONSOLE_SELECTION_INFO CONSOLE_SELECTION_INFO;
180 alias _CONSOLE_SELECTION_INFO* PCONSOLE_SELECTION_INFO;
181
182 enum : uint { CONSOLE_NO_SELECTION = 0x0000 }
183 enum : uint { CONSOLE_SELECTION_IN_PROGRESS = 0x0001 }
184 enum : uint { CONSOLE_SELECTION_NOT_EMPTY = 0x0002 }
185 enum : uint { CONSOLE_MOUSE_SELECTION = 0x0004 }
186 enum : uint { CONSOLE_MOUSE_DOWN = 0x0008 }
187 // #endif /* _WIN32_WINNT >= 0x0500 */
188
189 extern(Windows) alias BOOL function( DWORD CtrlType ) PHANDLER_ROUTINE;
190
191 enum : uint { CTRL_C_EVENT = 0 }
192 enum : uint { CTRL_BREAK_EVENT = 1 }
193 enum : uint { CTRL_CLOSE_EVENT = 2 }
194
195 enum : uint { CTRL_LOGOFF_EVENT = 5 }
196 enum : uint { CTRL_SHUTDOWN_EVENT = 6 }
197
198 enum : uint { ENABLE_PROCESSED_INPUT = 0x0001 }
199 enum : uint { ENABLE_LINE_INPUT = 0x0002 }
200 enum : uint { ENABLE_ECHO_INPUT = 0x0004 }
201 enum : uint { ENABLE_WINDOW_INPUT = 0x0008 }
202 enum : uint { ENABLE_MOUSE_INPUT = 0x0010 }
203
204 enum : uint { ENABLE_PROCESSED_OUTPUT = 0x0001 }
205 enum : uint { ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 }
206
207 extern(Windows) export BOOL PeekConsoleInputA(
208 HANDLE hConsoleInput,
209 PINPUT_RECORD lpBuffer,
210 DWORD nLength,
211 LPDWORD lpNumberOfEventsRead);
212 extern(Windows) export BOOL PeekConsoleInputW(
213 HANDLE hConsoleInput,
214 PINPUT_RECORD lpBuffer,
215 DWORD nLength,
216 LPDWORD lpNumberOfEventsRead);
217 // #ifdef UNICODE
218 // #...
219 // #else
220 alias PeekConsoleInputA PeekConsoleInput;
221 // #endif // !UNICODE
222
223 extern(Windows) export BOOL ReadConsoleInputA(
224 HANDLE hConsoleInput,
225 PINPUT_RECORD lpBuffer,
226 DWORD nLength,
227 LPDWORD lpNumberOfEventsRead);
228 extern(Windows) export BOOL ReadConsoleInputW(
229 HANDLE hConsoleInput,
230 PINPUT_RECORD lpBuffer,
231 DWORD nLength,
232 LPDWORD lpNumberOfEventsRead);
233 // #ifdef UNICODE
234 // #...
235 // #else
236 alias ReadConsoleInputA ReadConsoleInput;
237 // #endif // !UNICODE
238
239 extern(Windows) export BOOL WriteConsoleInputA(
240 HANDLE hConsoleInput,
241 INPUT_RECORD *lpBuffer,
242 DWORD nLength,
243 LPDWORD lpNumberOfEventsWritten);
244 extern(Windows) export BOOL WriteConsoleInputW(
245 HANDLE hConsoleInput,
246 INPUT_RECORD *lpBuffer,
247 DWORD nLength,
248 LPDWORD lpNumberOfEventsWritten);
249 // #ifdef UNICODE
250 // #...
251 // #else
252 alias WriteConsoleInputA WriteConsoleInput;
253 // #endif // !UNICODE
254
255 extern(Windows) export BOOL ReadConsoleOutputA(
256 HANDLE hConsoleOutput,
257 PCHAR_INFO lpBuffer,
258 COORD dwBufferSize,
259 COORD dwBufferCoord,
260 PSMALL_RECT lpReadRegion);
261 extern(Windows) export BOOL ReadConsoleOutputW(
262 HANDLE hConsoleOutput,
263 PCHAR_INFO lpBuffer,
264 COORD dwBufferSize,
265 COORD dwBufferCoord,
266 PSMALL_RECT lpReadRegion);
267 // #ifdef UNICODE
268 // #...
269 // #else
270 alias ReadConsoleOutputA ReadConsoleOutput;
271 // #endif // !UNICODE
272
273 extern(Windows) export BOOL WriteConsoleOutputA(
274 HANDLE hConsoleOutput,
275 CHAR_INFO *lpBuffer,
276 COORD dwBufferSize,
277 COORD dwBufferCoord,
278 PSMALL_RECT lpWriteRegion);
279 extern(Windows) export BOOL WriteConsoleOutputW(
280 HANDLE hConsoleOutput,
281 CHAR_INFO *lpBuffer,
282 COORD dwBufferSize,
283 COORD dwBufferCoord,
284 PSMALL_RECT lpWriteRegion);
285 // #ifdef UNICODE
286 // #...
287 // #else
288 alias WriteConsoleOutputA WriteConsoleOutput;
289 // #endif // !UNICODE
290
291 extern(Windows) export BOOL ReadConsoleOutputCharacterA(
292 HANDLE hConsoleOutput,
293 LPSTR lpCharacter,
294 DWORD nLength,
295 COORD dwReadCoord,
296 LPDWORD lpNumberOfCharsRead);
297 extern(Windows) export BOOL ReadConsoleOutputCharacterW(
298 HANDLE hConsoleOutput,
299 LPWSTR lpCharacter,
300 DWORD nLength,
301 COORD dwReadCoord,
302 LPDWORD lpNumberOfCharsRead);
303 // #ifdef UNICODE
304 // #...
305 // #else
306 alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter;
307 // #endif // !UNICODE
308
309 extern(Windows) export BOOL ReadConsoleOutputAttribute(
310 HANDLE hConsoleOutput,
311 LPWORD lpAttribute,
312 DWORD nLength,
313 COORD dwReadCoord,
314 LPDWORD lpNumberOfAttrsRead);
315
316 extern(Windows) export BOOL WriteConsoleOutputCharacterA(
317 HANDLE hConsoleOutput,
318 LPCSTR lpCharacter,
319 DWORD nLength,
320 COORD dwWriteCoord,
321 LPDWORD lpNumberOfCharsWritten);
322 extern(Windows) export BOOL WriteConsoleOutputCharacterW(
323 HANDLE hConsoleOutput,
324 LPCWSTR lpCharacter,
325 DWORD nLength,
326 COORD dwWriteCoord,
327 LPDWORD lpNumberOfCharsWritten);
328 // #ifdef UNICODE
329 // #...
330 // #else
331 alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter;
332 // #endif // !UNICODE
333
334 extern(Windows) export BOOL WriteConsoleOutputAttribute(
335 HANDLE hConsoleOutput,
336 WORD *lpAttribute,
337 DWORD nLength,
338 COORD dwWriteCoord,
339 LPDWORD lpNumberOfAttrsWritten);
340
341 extern(Windows) export BOOL FillConsoleOutputCharacterA(
342 HANDLE hConsoleOutput,
343 CHAR cCharacter,
344 DWORD nLength,
345 COORD dwWriteCoord,
346 LPDWORD lpNumberOfCharsWritten);
347 extern(Windows) export BOOL FillConsoleOutputCharacterW(
348 HANDLE hConsoleOutput,
349 WCHAR cCharacter,
350 DWORD nLength,
351 COORD dwWriteCoord,
352 LPDWORD lpNumberOfCharsWritten);
353 // #ifdef UNICODE
354 // #...
355 // #else
356 alias FillConsoleOutputCharacterA FillConsoleOutputCharacter;
357 // #endif // !UNICODE
358
359 extern(Windows) export BOOL FillConsoleOutputAttribute(
360 HANDLE hConsoleOutput,
361 WORD wAttribute,
362 DWORD nLength,
363 COORD dwWriteCoord,
364 LPDWORD lpNumberOfAttrsWritten);
365
366 extern(Windows) export BOOL GetConsoleMode(
367 HANDLE hConsoleHandle,
368 LPDWORD lpMode);
369
370 extern(Windows) export BOOL GetNumberOfConsoleInputEvents(
371 HANDLE hConsoleInput,
372 LPDWORD lpNumberOfEvents);
373
374 extern(Windows) export BOOL GetConsoleScreenBufferInfo(
375 HANDLE hConsoleOutput,
376 PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
377
378 extern(Windows) export COORD GetLargestConsoleWindowSize(
379 HANDLE hConsoleOutput);
380
381 extern(Windows) export BOOL GetConsoleCursorInfo(
382 HANDLE hConsoleOutput,
383 PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);
384
385 // #if(_WIN32_WINNT >= 0x0500)
386
387 extern(Windows) export BOOL GetCurrentConsoleFont(
388 HANDLE hConsoleOutput,
389 BOOL bMaximumWindow,
390 PCONSOLE_FONT_INFO lpConsoleCurrentFont);
391
392 extern(Windows) export COORD GetConsoleFontSize(
393 HANDLE hConsoleOutput,
394 DWORD nFont);
395
396 extern(Windows) export BOOL GetConsoleSelectionInfo(
397 PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo);
398
399 // #endif /* _WIN32_WINNT >= 0x0500 */
400
401 extern(Windows) export BOOL GetNumberOfConsoleMouseButtons(
402 LPDWORD lpNumberOfMouseButtons);
403
404 extern(Windows) export BOOL SetConsoleMode(
405 HANDLE hConsoleHandle,
406 DWORD dwMode);
407
408 extern(Windows) export BOOL SetConsoleActiveScreenBuffer(
409 HANDLE hConsoleOutput);
410
411 extern(Windows) export BOOL FlushConsoleInputBuffer(
412 HANDLE hConsoleInput);
413
414 extern(Windows) export BOOL SetConsoleScreenBufferSize(
415 HANDLE hConsoleOutput,
416 COORD dwSize);
417
418 extern(Windows) export BOOL SetConsoleCursorPosition(
419 HANDLE hConsoleOutput,
420 COORD dwCursorPosition);
421
422 extern(Windows) export BOOL SetConsoleCursorInfo(
423 HANDLE hConsoleOutput,
424 CONSOLE_CURSOR_INFO *lpConsoleCursorInfo);
425
426 extern(Windows) export BOOL ScrollConsoleScreenBufferA(
427 HANDLE hConsoleOutput,
428 SMALL_RECT *lpScrollRectangle,
429 SMALL_RECT *lpClipRectangle,
430 COORD dwDestinationOrigin,
431 CHAR_INFO *lpFill);
432 extern(Windows) export BOOL ScrollConsoleScreenBufferW(
433 HANDLE hConsoleOutput,
434 SMALL_RECT *lpScrollRectangle,
435 SMALL_RECT *lpClipRectangle,
436 COORD dwDestinationOrigin,
437 CHAR_INFO *lpFill);
438 // #ifdef UNICODE
439 // #...
440 // #else
441 alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer;
442 // #endif // !UNICODE
443
444 extern(Windows) export BOOL SetConsoleWindowInfo(
445 HANDLE hConsoleOutput,
446 BOOL bAbsolute,
447 SMALL_RECT *lpConsoleWindow);
448
449 extern(Windows) export BOOL SetConsoleTextAttribute(
450 HANDLE hConsoleOutput,
451 WORD wAttributes);
452
453 extern(Windows) export BOOL SetConsoleCtrlHandler(
454 PHANDLER_ROUTINE HandlerRoutine,
455 BOOL Add);
456
457 extern(Windows) export BOOL GenerateConsoleCtrlEvent(
458 DWORD dwCtrlEvent,
459 DWORD dwProcessGroupId);
460
461 extern(Windows) export BOOL AllocConsole();
462
463 extern(Windows) export BOOL FreeConsole();
464
465 // #if(_WIN32_WINNT >= 0x0500)
466 extern(Windows) export BOOL AttachConsole(
467 DWORD dwProcessId);
468 // #endif /* _WIN32_WINNT >= 0x0500 */
469
470 extern(Windows) export DWORD GetConsoleTitleA(
471 LPSTR lpConsoleTitle,
472 DWORD nSize);
473 extern(Windows) export DWORD GetConsoleTitleW(
474 LPWSTR lpConsoleTitle,
475 DWORD nSize);
476 // #ifdef UNICODE
477 // #...
478 // #else
479 alias GetConsoleTitleA GetConsoleTitle;
480 // #endif // !UNICODE
481
482 extern(Windows) export BOOL SetConsoleTitleA(
483 LPCSTR lpConsoleTitle);
484 extern(Windows) export BOOL SetConsoleTitleW(
485 LPCWSTR lpConsoleTitle);
486 // #ifdef UNICODE
487 // #...
488 // #else
489 alias SetConsoleTitleA SetConsoleTitle;
490 // #endif // !UNICODE
491
492 extern(Windows) export BOOL ReadConsoleA(
493 HANDLE hConsoleInput,
494 LPVOID lpBuffer,
495 DWORD nNumberOfCharsToRead,
496 LPDWORD lpNumberOfCharsRead,
497 LPVOID lpReserved);
498 extern(Windows) export BOOL ReadConsoleW(
499 HANDLE hConsoleInput,
500 LPVOID lpBuffer,
501 DWORD nNumberOfCharsToRead,
502 LPDWORD lpNumberOfCharsRead,
503 LPVOID lpReserved);
504 // #ifdef UNICODE
505 // #...
506 // #else
507 alias ReadConsoleA ReadConsole;
508 // #endif // !UNICODE
509
510 extern(Windows) export BOOL WriteConsoleA(
511 HANDLE hConsoleOutput,
512 VOID *lpBuffer,
513 DWORD nNumberOfCharsToWrite,
514 LPDWORD lpNumberOfCharsWritten,
515 LPVOID lpReserved);
516 extern(Windows) export BOOL WriteConsoleW(
517 HANDLE hConsoleOutput,
518 VOID *lpBuffer,
519 DWORD nNumberOfCharsToWrite,
520 LPDWORD lpNumberOfCharsWritten,
521 LPVOID lpReserved);
522 // #ifdef UNICODE
523 // #...
524 // #else
525 alias WriteConsoleA WriteConsole;
526 // #endif // !UNICODE
527
528 enum : uint { CONSOLE_TEXTMODE_BUFFER = 1 }
529
530 extern(Windows) export HANDLE CreateConsoleScreenBuffer(
531 DWORD dwDesiredAccess,
532 DWORD dwShareMode,
533 SECURITY_ATTRIBUTES *lpSecurityAttributes,
534 DWORD dwFlags,
535 LPVOID lpScreenBufferData);
536
537 extern(Windows) export UINT GetConsoleCP();
538
539 extern(Windows) export BOOL SetConsoleCP(
540 UINT wCodePageID);
541
542 extern(Windows) export UINT GetConsoleOutputCP();
543
544 extern(Windows) export BOOL SetConsoleOutputCP(
545 UINT wCodePageID);
546
547 // #if(_WIN32_WINNT >= 0x0500)
548
549 enum : uint { CONSOLE_FULLSCREEN = 1 }
550 enum : uint { CONSOLE_FULLSCREEN_HARDWARE = 2 }
551
552 extern(Windows) export BOOL GetConsoleDisplayMode(
553 LPDWORD lpModeFlags);
554
555 extern(Windows) export HWND GetConsoleWindow();
556
557 // #endif /* _WIN32_WINNT >= 0x0500 */
558
559 // #if(_WIN32_WINNT >= 0x0501)
560
561 extern(Windows) export DWORD GetConsoleProcessList(
562 LPDWORD lpdwProcessList,
563 DWORD dwProcessCount);
564 // #endif /* _WIN32_WINNT >= 0x0501 */
565
566 // #ifdef __cplusplus
567 // }
568 // #endif
569
570 // #endif // _WINCON_
571