2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
13 typedef struct _COORD
{
18 typedef struct _SMALL_RECT
{
23 } SMALL_RECT
,*PSMALL_RECT
;
25 typedef struct _KEY_EVENT_RECORD
{
29 WORD wVirtualScanCode
;
34 DWORD dwControlKeyState
;
35 } KEY_EVENT_RECORD
,*PKEY_EVENT_RECORD
;
37 #define RIGHT_ALT_PRESSED 0x1
38 #define LEFT_ALT_PRESSED 0x2
39 #define RIGHT_CTRL_PRESSED 0x4
40 #define LEFT_CTRL_PRESSED 0x8
41 #define SHIFT_PRESSED 0x10
42 #define NUMLOCK_ON 0x20
43 #define SCROLLLOCK_ON 0x40
44 #define CAPSLOCK_ON 0x80
45 #define ENHANCED_KEY 0x100
46 #define NLS_DBCSCHAR 0x10000
47 #define NLS_ALPHANUMERIC 0x0
48 #define NLS_KATAKANA 0x20000
49 #define NLS_HIRAGANA 0x40000
50 #define NLS_ROMAN 0x400000
51 #define NLS_IME_CONVERSION 0x800000
52 #define NLS_IME_DISABLE 0x20000000
54 typedef struct _MOUSE_EVENT_RECORD
{
55 COORD dwMousePosition
;
57 DWORD dwControlKeyState
;
59 } MOUSE_EVENT_RECORD
,*PMOUSE_EVENT_RECORD
;
61 #define FROM_LEFT_1ST_BUTTON_PRESSED 0x1
62 #define RIGHTMOST_BUTTON_PRESSED 0x2
63 #define FROM_LEFT_2ND_BUTTON_PRESSED 0x4
64 #define FROM_LEFT_3RD_BUTTON_PRESSED 0x8
65 #define FROM_LEFT_4TH_BUTTON_PRESSED 0x10
67 #define MOUSE_MOVED 0x1
68 #define DOUBLE_CLICK 0x2
69 #define MOUSE_WHEELED 0x4
71 typedef struct _WINDOW_BUFFER_SIZE_RECORD
{
73 } WINDOW_BUFFER_SIZE_RECORD
,*PWINDOW_BUFFER_SIZE_RECORD
;
75 typedef struct _MENU_EVENT_RECORD
{
77 } MENU_EVENT_RECORD
,*PMENU_EVENT_RECORD
;
79 typedef struct _FOCUS_EVENT_RECORD
{
81 } FOCUS_EVENT_RECORD
,*PFOCUS_EVENT_RECORD
;
83 typedef struct _INPUT_RECORD
{
86 KEY_EVENT_RECORD KeyEvent
;
87 MOUSE_EVENT_RECORD MouseEvent
;
88 WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent
;
89 MENU_EVENT_RECORD MenuEvent
;
90 FOCUS_EVENT_RECORD FocusEvent
;
92 } INPUT_RECORD
,*PINPUT_RECORD
;
95 #define MOUSE_EVENT 0x2
96 #define WINDOW_BUFFER_SIZE_EVENT 0x4
97 #define MENU_EVENT 0x8
98 #define FOCUS_EVENT 0x10
100 typedef struct _CHAR_INFO
{
106 } CHAR_INFO
,*PCHAR_INFO
;
108 #define FOREGROUND_BLUE 0x1
109 #define FOREGROUND_GREEN 0x2
110 #define FOREGROUND_RED 0x4
111 #define FOREGROUND_INTENSITY 0x8
112 #define BACKGROUND_BLUE 0x10
113 #define BACKGROUND_GREEN 0x20
114 #define BACKGROUND_RED 0x40
115 #define BACKGROUND_INTENSITY 0x80
116 #define COMMON_LVB_LEADING_BYTE 0x100
117 #define COMMON_LVB_TRAILING_BYTE 0x200
118 #define COMMON_LVB_GRID_HORIZONTAL 0x400
119 #define COMMON_LVB_GRID_LVERTICAL 0x800
120 #define COMMON_LVB_GRID_RVERTICAL 0x1000
121 #define COMMON_LVB_REVERSE_VIDEO 0x4000
122 #define COMMON_LVB_UNDERSCORE 0x8000
124 #define COMMON_LVB_SBCSDBCS 0x300
126 typedef struct _CONSOLE_SCREEN_BUFFER_INFO
{
128 COORD dwCursorPosition
;
131 COORD dwMaximumWindowSize
;
132 } CONSOLE_SCREEN_BUFFER_INFO
,*PCONSOLE_SCREEN_BUFFER_INFO
;
134 typedef struct _CONSOLE_CURSOR_INFO
{
137 } CONSOLE_CURSOR_INFO
,*PCONSOLE_CURSOR_INFO
;
139 typedef struct _CONSOLE_FONT_INFO
{
142 } CONSOLE_FONT_INFO
,*PCONSOLE_FONT_INFO
;
144 typedef struct _CONSOLE_SELECTION_INFO
{
146 COORD dwSelectionAnchor
;
147 SMALL_RECT srSelection
;
148 } CONSOLE_SELECTION_INFO
,*PCONSOLE_SELECTION_INFO
;
150 #define CONSOLE_NO_SELECTION 0x0
151 #define CONSOLE_SELECTION_IN_PROGRESS 0x1
152 #define CONSOLE_SELECTION_NOT_EMPTY 0x2
153 #define CONSOLE_MOUSE_SELECTION 0x4
154 #define CONSOLE_MOUSE_DOWN 0x8
156 typedef WINBOOL (WINAPI
*PHANDLER_ROUTINE
)(DWORD CtrlType
);
158 #define CTRL_C_EVENT 0
159 #define CTRL_BREAK_EVENT 1
160 #define CTRL_CLOSE_EVENT 2
162 #define CTRL_LOGOFF_EVENT 5
163 #define CTRL_SHUTDOWN_EVENT 6
165 #define ENABLE_PROCESSED_INPUT 0x1
166 #define ENABLE_LINE_INPUT 0x2
167 #define ENABLE_ECHO_INPUT 0x4
168 #define ENABLE_WINDOW_INPUT 0x8
169 #define ENABLE_MOUSE_INPUT 0x10
171 #define ENABLE_PROCESSED_OUTPUT 0x1
172 #define ENABLE_WRAP_AT_EOL_OUTPUT 0x2
175 #define PeekConsoleInput PeekConsoleInputW
176 #define ReadConsoleInput ReadConsoleInputW
177 #define WriteConsoleInput WriteConsoleInputW
178 #define ReadConsoleOutput ReadConsoleOutputW
179 #define WriteConsoleOutput WriteConsoleOutputW
180 #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
181 #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
182 #define FillConsoleOutputCharacter FillConsoleOutputCharacterW
183 #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
184 #define GetConsoleTitle GetConsoleTitleW
185 #define SetConsoleTitle SetConsoleTitleW
186 #define ReadConsole ReadConsoleW
187 #define WriteConsole WriteConsoleW
188 #define AddConsoleAlias AddConsoleAliasW
189 #define GetConsoleAlias GetConsoleAliasW
190 #define GetConsoleAliasesLength GetConsoleAliasesLengthW
191 #define GetConsoleAliasExesLength GetConsoleAliasExesLengthW
192 #define GetConsoleAliases GetConsoleAliasesW
193 #define GetConsoleAliasExes GetConsoleAliasExesW
195 #define PeekConsoleInput PeekConsoleInputA
196 #define ReadConsoleInput ReadConsoleInputA
197 #define WriteConsoleInput WriteConsoleInputA
198 #define ReadConsoleOutput ReadConsoleOutputA
199 #define WriteConsoleOutput WriteConsoleOutputA
200 #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
201 #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
202 #define FillConsoleOutputCharacter FillConsoleOutputCharacterA
203 #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
204 #define GetConsoleTitle GetConsoleTitleA
205 #define SetConsoleTitle SetConsoleTitleA
206 #define ReadConsole ReadConsoleA
207 #define WriteConsole WriteConsoleA
208 #define AddConsoleAlias AddConsoleAliasA
209 #define GetConsoleAlias GetConsoleAliasA
210 #define GetConsoleAliasesLength GetConsoleAliasesLengthA
211 #define GetConsoleAliasExesLength GetConsoleAliasExesLengthA
212 #define GetConsoleAliases GetConsoleAliasesA
213 #define GetConsoleAliasExes GetConsoleAliasExesA
216 WINBASEAPI WINBOOL WINAPI
PeekConsoleInputA(HANDLE hConsoleInput
,PINPUT_RECORD lpBuffer
,DWORD nLength
,LPDWORD lpNumberOfEventsRead
);
217 WINBASEAPI WINBOOL WINAPI
PeekConsoleInputW(HANDLE hConsoleInput
,PINPUT_RECORD lpBuffer
,DWORD nLength
,LPDWORD lpNumberOfEventsRead
);
218 WINBASEAPI WINBOOL WINAPI
ReadConsoleInputA(HANDLE hConsoleInput
,PINPUT_RECORD lpBuffer
,DWORD nLength
,LPDWORD lpNumberOfEventsRead
);
219 WINBASEAPI WINBOOL WINAPI
ReadConsoleInputW(HANDLE hConsoleInput
,PINPUT_RECORD lpBuffer
,DWORD nLength
,LPDWORD lpNumberOfEventsRead
);
220 WINBASEAPI WINBOOL WINAPI
WriteConsoleInputA(HANDLE hConsoleInput
,CONST INPUT_RECORD
*lpBuffer
,DWORD nLength
,LPDWORD lpNumberOfEventsWritten
);
221 WINBASEAPI WINBOOL WINAPI
WriteConsoleInputW(HANDLE hConsoleInput
,CONST INPUT_RECORD
*lpBuffer
,DWORD nLength
,LPDWORD lpNumberOfEventsWritten
);
222 WINBASEAPI WINBOOL WINAPI
ReadConsoleOutputA(HANDLE hConsoleOutput
,PCHAR_INFO lpBuffer
,COORD dwBufferSize
,COORD dwBufferCoord
,PSMALL_RECT lpReadRegion
);
223 WINBASEAPI WINBOOL WINAPI
ReadConsoleOutputW(HANDLE hConsoleOutput
,PCHAR_INFO lpBuffer
,COORD dwBufferSize
,COORD dwBufferCoord
,PSMALL_RECT lpReadRegion
);
224 WINBASEAPI WINBOOL WINAPI
WriteConsoleOutputA(HANDLE hConsoleOutput
,CONST CHAR_INFO
*lpBuffer
,COORD dwBufferSize
,COORD dwBufferCoord
,PSMALL_RECT lpWriteRegion
);
225 WINBASEAPI WINBOOL WINAPI
WriteConsoleOutputW(HANDLE hConsoleOutput
,CONST CHAR_INFO
*lpBuffer
,COORD dwBufferSize
,COORD dwBufferCoord
,PSMALL_RECT lpWriteRegion
);
226 WINBASEAPI WINBOOL WINAPI
ReadConsoleOutputCharacterA(HANDLE hConsoleOutput
,LPSTR lpCharacter
,DWORD nLength
,COORD dwReadCoord
,LPDWORD lpNumberOfCharsRead
);
227 WINBASEAPI WINBOOL WINAPI
ReadConsoleOutputCharacterW(HANDLE hConsoleOutput
,LPWSTR lpCharacter
,DWORD nLength
,COORD dwReadCoord
,LPDWORD lpNumberOfCharsRead
);
228 WINBASEAPI WINBOOL WINAPI
ReadConsoleOutputAttribute(HANDLE hConsoleOutput
,LPWORD lpAttribute
,DWORD nLength
,COORD dwReadCoord
,LPDWORD lpNumberOfAttrsRead
);
229 WINBASEAPI WINBOOL WINAPI
WriteConsoleOutputCharacterA(HANDLE hConsoleOutput
,LPCSTR lpCharacter
,DWORD nLength
,COORD dwWriteCoord
,LPDWORD lpNumberOfCharsWritten
);
230 WINBASEAPI WINBOOL WINAPI
WriteConsoleOutputCharacterW(HANDLE hConsoleOutput
,LPCWSTR lpCharacter
,DWORD nLength
,COORD dwWriteCoord
,LPDWORD lpNumberOfCharsWritten
);
231 WINBASEAPI WINBOOL WINAPI
WriteConsoleOutputAttribute(HANDLE hConsoleOutput
,CONST WORD
*lpAttribute
,DWORD nLength
,COORD dwWriteCoord
,LPDWORD lpNumberOfAttrsWritten
);
232 WINBASEAPI WINBOOL WINAPI
FillConsoleOutputCharacterA(HANDLE hConsoleOutput
,CHAR cCharacter
,DWORD nLength
,COORD dwWriteCoord
,LPDWORD lpNumberOfCharsWritten
);
233 WINBASEAPI WINBOOL WINAPI
FillConsoleOutputCharacterW(HANDLE hConsoleOutput
,WCHAR cCharacter
,DWORD nLength
,COORD dwWriteCoord
,LPDWORD lpNumberOfCharsWritten
);
234 WINBASEAPI WINBOOL WINAPI
FillConsoleOutputAttribute(HANDLE hConsoleOutput
,WORD wAttribute
,DWORD nLength
,COORD dwWriteCoord
,LPDWORD lpNumberOfAttrsWritten
);
235 WINBASEAPI WINBOOL WINAPI
GetConsoleMode(HANDLE hConsoleHandle
,LPDWORD lpMode
);
236 WINBASEAPI WINBOOL WINAPI
GetNumberOfConsoleInputEvents(HANDLE hConsoleInput
,LPDWORD lpNumberOfEvents
);
237 WINBASEAPI WINBOOL WINAPI
GetConsoleScreenBufferInfo(HANDLE hConsoleOutput
,PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
);
238 WINBASEAPI COORD WINAPI
GetLargestConsoleWindowSize(HANDLE hConsoleOutput
);
239 WINBASEAPI WINBOOL WINAPI
GetConsoleCursorInfo(HANDLE hConsoleOutput
,PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);
240 WINBASEAPI WINBOOL WINAPI
GetCurrentConsoleFont(HANDLE hConsoleOutput
,WINBOOL bMaximumWindow
,PCONSOLE_FONT_INFO lpConsoleCurrentFont
);
241 WINBASEAPI COORD WINAPI
GetConsoleFontSize(HANDLE hConsoleOutput
,DWORD nFont
);
242 WINBASEAPI WINBOOL WINAPI
GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo
);
243 WINBASEAPI WINBOOL WINAPI
GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons
);
244 WINBASEAPI WINBOOL WINAPI
SetConsoleMode(HANDLE hConsoleHandle
,DWORD dwMode
);
245 WINBASEAPI WINBOOL WINAPI
SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput
);
246 WINBASEAPI WINBOOL WINAPI
FlushConsoleInputBuffer(HANDLE hConsoleInput
);
247 WINBASEAPI WINBOOL WINAPI
SetConsoleScreenBufferSize(HANDLE hConsoleOutput
,COORD dwSize
);
248 WINBASEAPI WINBOOL WINAPI
SetConsoleCursorPosition(HANDLE hConsoleOutput
,COORD dwCursorPosition
);
249 WINBASEAPI WINBOOL WINAPI
SetConsoleCursorInfo(HANDLE hConsoleOutput
,CONST CONSOLE_CURSOR_INFO
*lpConsoleCursorInfo
);
250 WINBASEAPI WINBOOL WINAPI
ScrollConsoleScreenBufferA(HANDLE hConsoleOutput
,CONST SMALL_RECT
*lpScrollRectangle
,CONST SMALL_RECT
*lpClipRectangle
,COORD dwDestinationOrigin
,CONST CHAR_INFO
*lpFill
);
251 WINBASEAPI WINBOOL WINAPI
ScrollConsoleScreenBufferW(HANDLE hConsoleOutput
,CONST SMALL_RECT
*lpScrollRectangle
,CONST SMALL_RECT
*lpClipRectangle
,COORD dwDestinationOrigin
,CONST CHAR_INFO
*lpFill
);
252 WINBASEAPI WINBOOL WINAPI
SetConsoleWindowInfo(HANDLE hConsoleOutput
,WINBOOL bAbsolute
,CONST SMALL_RECT
*lpConsoleWindow
);
253 WINBASEAPI WINBOOL WINAPI
SetConsoleTextAttribute(HANDLE hConsoleOutput
,WORD wAttributes
);
254 WINBASEAPI WINBOOL WINAPI
SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine
,WINBOOL Add
);
255 WINBASEAPI WINBOOL WINAPI
GenerateConsoleCtrlEvent(DWORD dwCtrlEvent
,DWORD dwProcessGroupId
);
256 WINBASEAPI WINBOOL WINAPI
AllocConsole(VOID
);
257 WINBASEAPI WINBOOL WINAPI
FreeConsole(VOID
);
258 WINBASEAPI WINBOOL WINAPI
AttachConsole(DWORD dwProcessId
);
260 #define ATTACH_PARENT_PROCESS ((DWORD)-1)
262 WINBASEAPI DWORD WINAPI
GetConsoleTitleA(LPSTR lpConsoleTitle
,DWORD nSize
);
263 WINBASEAPI DWORD WINAPI
GetConsoleTitleW(LPWSTR lpConsoleTitle
,DWORD nSize
);
264 WINBASEAPI WINBOOL WINAPI
SetConsoleTitleA(LPCSTR lpConsoleTitle
);
265 WINBASEAPI WINBOOL WINAPI
SetConsoleTitleW(LPCWSTR lpConsoleTitle
);
266 WINBASEAPI WINBOOL WINAPI
ReadConsoleA(HANDLE hConsoleInput
,LPVOID lpBuffer
,DWORD nNumberOfCharsToRead
,LPDWORD lpNumberOfCharsRead
,LPVOID lpReserved
);
267 WINBASEAPI WINBOOL WINAPI
ReadConsoleW(HANDLE hConsoleInput
,LPVOID lpBuffer
,DWORD nNumberOfCharsToRead
,LPDWORD lpNumberOfCharsRead
,LPVOID lpReserved
);
268 WINBASEAPI WINBOOL WINAPI
WriteConsoleA(HANDLE hConsoleOutput
,CONST VOID
*lpBuffer
,DWORD nNumberOfCharsToWrite
,LPDWORD lpNumberOfCharsWritten
,LPVOID lpReserved
);
269 WINBASEAPI WINBOOL WINAPI
WriteConsoleW(HANDLE hConsoleOutput
,CONST VOID
*lpBuffer
,DWORD nNumberOfCharsToWrite
,LPDWORD lpNumberOfCharsWritten
,LPVOID lpReserved
);
271 #define CONSOLE_TEXTMODE_BUFFER 1
273 WINBASEAPI HANDLE WINAPI
CreateConsoleScreenBuffer(DWORD dwDesiredAccess
,DWORD dwShareMode
,CONST SECURITY_ATTRIBUTES
*lpSecurityAttributes
,DWORD dwFlags
,LPVOID lpScreenBufferData
);
274 WINBASEAPI UINT WINAPI
GetConsoleCP(VOID
);
275 WINBASEAPI WINBOOL WINAPI
SetConsoleCP(UINT wCodePageID
);
276 WINBASEAPI UINT WINAPI
GetConsoleOutputCP(VOID
);
277 WINBASEAPI WINBOOL WINAPI
SetConsoleOutputCP(UINT wCodePageID
);
279 #define CONSOLE_FULLSCREEN 1
280 #define CONSOLE_FULLSCREEN_HARDWARE 2
282 WINBASEAPI WINBOOL WINAPI
GetConsoleDisplayMode(LPDWORD lpModeFlags
);
283 WINBASEAPI HWND WINAPI
GetConsoleWindow(VOID
);
284 WINBASEAPI DWORD WINAPI
GetConsoleProcessList(LPDWORD lpdwProcessList
,DWORD dwProcessCount
);
285 WINBASEAPI WINBOOL WINAPI
AddConsoleAliasA(LPSTR Source
,LPSTR Target
,LPSTR ExeName
);
286 WINBASEAPI WINBOOL WINAPI
AddConsoleAliasW(LPWSTR Source
,LPWSTR Target
,LPWSTR ExeName
);
287 WINBASEAPI DWORD WINAPI
GetConsoleAliasA(LPSTR Source
,LPSTR TargetBuffer
,DWORD TargetBufferLength
,LPSTR ExeName
);
288 WINBASEAPI DWORD WINAPI
GetConsoleAliasW(LPWSTR Source
,LPWSTR TargetBuffer
,DWORD TargetBufferLength
,LPWSTR ExeName
);
289 WINBASEAPI DWORD WINAPI
GetConsoleAliasesLengthA(LPSTR ExeName
);
290 WINBASEAPI DWORD WINAPI
GetConsoleAliasesLengthW(LPWSTR ExeName
);
291 WINBASEAPI DWORD WINAPI
GetConsoleAliasExesLengthA(VOID
);
292 WINBASEAPI DWORD WINAPI
GetConsoleAliasExesLengthW(VOID
);
293 WINBASEAPI DWORD WINAPI
GetConsoleAliasesA(LPSTR AliasBuffer
,DWORD AliasBufferLength
,LPSTR ExeName
);
294 WINBASEAPI DWORD WINAPI
GetConsoleAliasesW(LPWSTR AliasBuffer
,DWORD AliasBufferLength
,LPWSTR ExeName
);
295 WINBASEAPI DWORD WINAPI
GetConsoleAliasExesA(LPSTR ExeNameBuffer
,DWORD ExeNameBufferLength
);
296 WINBASEAPI DWORD WINAPI
GetConsoleAliasExesW(LPWSTR ExeNameBuffer
,DWORD ExeNameBufferLength
);