| 1 | #ifndef __WINE_WINCON_H | 
|---|
| 2 | #define __WINE_WINCON_H | 
|---|
| 3 |  | 
|---|
| 4 | #ifdef __cplusplus | 
|---|
| 5 | extern "C" { | 
|---|
| 6 | #endif | 
|---|
| 7 |  | 
|---|
| 8 | #define CTRL_C_EVENT        0 | 
|---|
| 9 | #define CTRL_BREAK_EVENT    1 | 
|---|
| 10 | #define CTRL_CLOSE_EVENT    2 | 
|---|
| 11 | #define CTRL_LOGOFF_EVENT   5 | 
|---|
| 12 | #define CTRL_SHUTDOWN_EVENT 6 | 
|---|
| 13 |  | 
|---|
| 14 | /* Console Mode flags */ | 
|---|
| 15 | #define ENABLE_PROCESSED_INPUT 0x01 | 
|---|
| 16 | #define ENABLE_LINE_INPUT      0x02 | 
|---|
| 17 | #define ENABLE_ECHO_INPUT      0x04 | 
|---|
| 18 | #define ENABLE_WINDOW_INPUT    0x08 | 
|---|
| 19 | #define ENABLE_MOUSE_INPUT     0x10 | 
|---|
| 20 | /* Wine only code (extension) */ | 
|---|
| 21 | #define WINE_ENABLE_LINE_INPUT_EMACS 0x80 | 
|---|
| 22 |  | 
|---|
| 23 | #define ENABLE_PROCESSED_OUTPUT   0x01 | 
|---|
| 24 | #define ENABLE_WRAP_AT_EOL_OUTPUT 0x02 | 
|---|
| 25 |  | 
|---|
| 26 |  | 
|---|
| 27 | typedef BOOL (* WINAPI PHANDLER_ROUTINE)(DWORD dwCtrlType); | 
|---|
| 28 |  | 
|---|
| 29 | /* Attributes flags: */ | 
|---|
| 30 |  | 
|---|
| 31 | #define FOREGROUND_BLUE      0x0001 /* text color contains blue. */ | 
|---|
| 32 | #define FOREGROUND_GREEN     0x0002 /* text color contains green. */ | 
|---|
| 33 | #define FOREGROUND_RED       0x0004 /* text color contains red. */ | 
|---|
| 34 | #define FOREGROUND_INTENSITY 0x0008 /* text color is intensified. */ | 
|---|
| 35 | #define BACKGROUND_BLUE      0x0010 /* background color contains blue. */ | 
|---|
| 36 | #define BACKGROUND_GREEN     0x0020 /* background color contains green. */ | 
|---|
| 37 | #define BACKGROUND_RED       0x0040 /* background color contains red. */ | 
|---|
| 38 | #define BACKGROUND_INTENSITY 0x0080 /* background color is intensified. */ | 
|---|
| 39 |  | 
|---|
| 40 | typedef struct _CONSOLE_CURSOR_INFO { | 
|---|
| 41 | DWORD       dwSize;   /* Between 1 & 100 for percentage of cell filled */ | 
|---|
| 42 | BOOL        bVisible; /* Visibility of cursor */ | 
|---|
| 43 | } CONSOLE_CURSOR_INFO, *LPCONSOLE_CURSOR_INFO; | 
|---|
| 44 |  | 
|---|
| 45 | #if 0 | 
|---|
| 46 | typedef struct tagCOORD | 
|---|
| 47 | { | 
|---|
| 48 | SHORT X; | 
|---|
| 49 | SHORT Y; | 
|---|
| 50 | } COORD, *LPCOORD; | 
|---|
| 51 | #endif | 
|---|
| 52 |  | 
|---|
| 53 | typedef struct tagSMALL_RECT | 
|---|
| 54 | { | 
|---|
| 55 | SHORT Left; | 
|---|
| 56 | SHORT Top; | 
|---|
| 57 | SHORT Right; | 
|---|
| 58 | SHORT Bottom; | 
|---|
| 59 | } SMALL_RECT,*LPSMALL_RECT; | 
|---|
| 60 |  | 
|---|
| 61 | typedef struct tagCONSOLE_SCREEN_BUFFER_INFO | 
|---|
| 62 | { | 
|---|
| 63 | COORD       dwSize; | 
|---|
| 64 | COORD       dwCursorPosition; | 
|---|
| 65 | WORD        wAttributes; | 
|---|
| 66 | SMALL_RECT  srWindow; | 
|---|
| 67 | COORD       dwMaximumWindowSize; | 
|---|
| 68 | } CONSOLE_SCREEN_BUFFER_INFO,*LPCONSOLE_SCREEN_BUFFER_INFO; | 
|---|
| 69 |  | 
|---|
| 70 | typedef struct tagCHAR_INFO | 
|---|
| 71 | { | 
|---|
| 72 | union | 
|---|
| 73 | { | 
|---|
| 74 | WCHAR UnicodeChar; | 
|---|
| 75 | CHAR AsciiChar; | 
|---|
| 76 | } Char; | 
|---|
| 77 | WORD        Attributes; | 
|---|
| 78 | } CHAR_INFO,*LPCHAR_INFO; | 
|---|
| 79 |  | 
|---|
| 80 | typedef struct tagKEY_EVENT_RECORD | 
|---|
| 81 | { | 
|---|
| 82 | BOOL        bKeyDown;               /* 04 */ | 
|---|
| 83 | WORD        wRepeatCount;           /* 08 */ | 
|---|
| 84 | WORD        wVirtualKeyCode;        /* 0A */ | 
|---|
| 85 | WORD        wVirtualScanCode;       /* 0C */ | 
|---|
| 86 | union                               /* 0E */ | 
|---|
| 87 | { | 
|---|
| 88 | WCHAR UnicodeChar;              /* 0E */ | 
|---|
| 89 | CHAR AsciiChar;                 /* 0E */ | 
|---|
| 90 | } uChar; | 
|---|
| 91 | DWORD       dwControlKeyState;      /* 10 */ | 
|---|
| 92 | } KEY_EVENT_RECORD,*LPKEY_EVENT_RECORD; | 
|---|
| 93 |  | 
|---|
| 94 | /* dwControlKeyState bitmask */ | 
|---|
| 95 | #define RIGHT_ALT_PRESSED       0x0001 | 
|---|
| 96 | #define LEFT_ALT_PRESSED        0x0002 | 
|---|
| 97 | #define RIGHT_CTRL_PRESSED      0x0004 | 
|---|
| 98 | #define LEFT_CTRL_PRESSED       0x0008 | 
|---|
| 99 | #define SHIFT_PRESSED           0x0010 | 
|---|
| 100 | #define NUMLOCK_ON              0x0020 | 
|---|
| 101 | #define SCROLLLOCK_ON           0x0040 | 
|---|
| 102 | #define CAPSLOCK_ON             0x0080 | 
|---|
| 103 | #define ENHANCED_KEY            0x0100 | 
|---|
| 104 |  | 
|---|
| 105 | typedef struct tagMOUSE_EVENT_RECORD | 
|---|
| 106 | { | 
|---|
| 107 | COORD       dwMousePosition; | 
|---|
| 108 | DWORD       dwButtonState; | 
|---|
| 109 | DWORD       dwControlKeyState; | 
|---|
| 110 | DWORD       dwEventFlags; | 
|---|
| 111 | } MOUSE_EVENT_RECORD,*LPMOUSE_EVENT_RECORD; | 
|---|
| 112 |  | 
|---|
| 113 | #define FROM_LEFT_1ST_BUTTON_PRESSED    0x0001 | 
|---|
| 114 | #define RIGHTMOST_BUTTON_PRESSED        0x0002 | 
|---|
| 115 | #define FROM_LEFT_2ND_BUTTON_PRESSED    0x0004 | 
|---|
| 116 | #define FROM_LEFT_3RD_BUTTON_PRESSED    0x0008 | 
|---|
| 117 | #define FROM_LEFT_4TH_BUTTON_PRESSED    0x0010 | 
|---|
| 118 |  | 
|---|
| 119 | #define MOUSE_MOVED                     0x0001 | 
|---|
| 120 | #define DOUBLE_CLICK                    0x0002 | 
|---|
| 121 | #define MOUSE_WHEELED                   0x0004 | 
|---|
| 122 |  | 
|---|
| 123 | typedef struct tagWINDOW_BUFFER_SIZE_RECORD | 
|---|
| 124 | { | 
|---|
| 125 | COORD       dwSize; | 
|---|
| 126 | } WINDOW_BUFFER_SIZE_RECORD,*LPWINDOW_BUFFER_SIZE_RECORD; | 
|---|
| 127 |  | 
|---|
| 128 | typedef struct tagMENU_EVENT_RECORD | 
|---|
| 129 | { | 
|---|
| 130 | UINT        dwCommandId; /* perhaps UINT16 ??? */ | 
|---|
| 131 | } MENU_EVENT_RECORD,*LPMENU_EVENT_RECORD; | 
|---|
| 132 |  | 
|---|
| 133 | typedef struct tagFOCUS_EVENT_RECORD | 
|---|
| 134 | { | 
|---|
| 135 | BOOL      bSetFocus; /* perhaps BOOL16 ??? */ | 
|---|
| 136 | } FOCUS_EVENT_RECORD,*LPFOCUS_EVENT_RECORD; | 
|---|
| 137 |  | 
|---|
| 138 | typedef struct tagINPUT_RECORD | 
|---|
| 139 | { | 
|---|
| 140 | WORD                EventType;              /* 00 */ | 
|---|
| 141 | union | 
|---|
| 142 | { | 
|---|
| 143 | KEY_EVENT_RECORD KeyEvent; | 
|---|
| 144 | MOUSE_EVENT_RECORD MouseEvent; | 
|---|
| 145 | WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; | 
|---|
| 146 | MENU_EVENT_RECORD MenuEvent; | 
|---|
| 147 | FOCUS_EVENT_RECORD FocusEvent; | 
|---|
| 148 | } Event; | 
|---|
| 149 | } INPUT_RECORD,*LPINPUT_RECORD; | 
|---|
| 150 |  | 
|---|
| 151 | /* INPUT_RECORD.wEventType */ | 
|---|
| 152 | #define KEY_EVENT                       0x01 | 
|---|
| 153 | #define MOUSE_EVENT                     0x02 | 
|---|
| 154 | #define WINDOW_BUFFER_SIZE_EVENT        0x04 | 
|---|
| 155 | #define MENU_EVENT                      0x08 | 
|---|
| 156 | #define FOCUS_EVENT                     0x10 | 
|---|
| 157 |  | 
|---|
| 158 | #define CONSOLE_TEXTMODE_BUFFER  1 | 
|---|
| 159 |  | 
|---|
| 160 | #ifdef __i386__ | 
|---|
| 161 | /* Note: this should return a COORD, but calling convention for returning | 
|---|
| 162 | * structures is different between Windows and gcc on i386. */ | 
|---|
| 163 | DWORD WINAPI GetLargestConsoleWindowSize(HANDLE); | 
|---|
| 164 |  | 
|---|
| 165 | //inline static COORD __wine_GetLargestConsoleWindowSize_wrapper(HANDLE h) | 
|---|
| 166 | //{ | 
|---|
| 167 | //    DWORD dw = GetLargestConsoleWindowSize(h); | 
|---|
| 168 | //    return *(COORD *)&dw; | 
|---|
| 169 | //} | 
|---|
| 170 | //#define GetLargestConsoleWindowSize(h) __wine_GetLargestConsoleWindowSize_wrapper(h) | 
|---|
| 171 |  | 
|---|
| 172 | #else  /* __i386__ */ | 
|---|
| 173 | COORD WINAPI GetLargestConsoleWindowSize(HANDLE); | 
|---|
| 174 | #endif  /* __i386__ */ | 
|---|
| 175 |  | 
|---|
| 176 | BOOL WINAPI   AllocConsole(VOID); | 
|---|
| 177 | HANDLE WINAPI CreateConsoleScreenBuffer( DWORD dwDesiredAccess, DWORD dwShareMode, | 
|---|
| 178 | LPSECURITY_ATTRIBUTES sa, DWORD dwFlags, | 
|---|
| 179 | LPVOID lpScreenBufferData); | 
|---|
| 180 | BOOL WINAPI   FillConsoleOutputAttribute( HANDLE hConsoleOutput, WORD wAttribute, DWORD nLength, | 
|---|
| 181 | COORD dwCoord, LPDWORD lpNumAttrsWritten); | 
|---|
| 182 | BOOL WINAPI   FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,LPDWORD); | 
|---|
| 183 | BOOL WINAPI   FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,LPDWORD); | 
|---|
| 184 | #define       FillConsoleOutputCharacter WINELIB_NAME_AW(FillConsoleOutputCharacter) | 
|---|
| 185 | BOOL WINAPI   FlushConsoleInputBuffer( HANDLE handle); | 
|---|
| 186 | BOOL WINAPI   FreeConsole(VOID); | 
|---|
| 187 | BOOL WINAPI   GenerateConsoleCtrlEvent( DWORD dwCtrlEvent, DWORD dwProcessGroupID); | 
|---|
| 188 | UINT WINAPI   GetConsoleCP(VOID); | 
|---|
| 189 | BOOL WINAPI   GetConsoleCursorInfo( HANDLE hcon, LPCONSOLE_CURSOR_INFO cinfo); | 
|---|
| 190 | BOOL WINAPI   GetConsoleMode( HANDLE hcon,LPDWORD mode); | 
|---|
| 191 | UINT WINAPI   GetConsoleOutputCP(VOID); | 
|---|
| 192 | BOOL WINAPI   GetConsoleScreenBufferInfo(HANDLE hConsoleOutput, | 
|---|
| 193 | LPCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo); | 
|---|
| 194 | DWORD WINAPI  GetConsoleTitleA(LPSTR title,DWORD size); | 
|---|
| 195 | DWORD WINAPI  GetConsoleTitleW(LPWSTR title, DWORD size); | 
|---|
| 196 | #define       GetConsoleTitle WINELIB_NAME_AW(GetConsoleTitle) | 
|---|
| 197 | BOOL WINAPI   GetNumberOfConsoleInputEvents( HANDLE hcon,LPDWORD nrofevents); | 
|---|
| 198 | BOOL WINAPI   GetNumberOfConsoleMouseButtons(LPDWORD nrofbuttons); | 
|---|
| 199 | BOOL WINAPI   PeekConsoleInputA( HANDLE handle, LPINPUT_RECORD buffer, DWORD count, LPDWORD read ); | 
|---|
| 200 | BOOL WINAPI   PeekConsoleInputW( HANDLE handle, LPINPUT_RECORD buffer, DWORD count, LPDWORD read ); | 
|---|
| 201 | #define       PeekConsoleInput WINELIB_NAME_AW(PeekConsoleInput) | 
|---|
| 202 | BOOL WINAPI   ReadConsoleA(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, | 
|---|
| 203 | LPDWORD lpNumberOfCharsRead, LPVOID lpReserved); | 
|---|
| 204 | BOOL WINAPI   ReadConsoleW(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, | 
|---|
| 205 | LPDWORD lpNumberOfCharsRead, LPVOID lpReserved); | 
|---|
| 206 | #define       ReadConsole WINELIB_NAME_AW(ReadConsole) | 
|---|
| 207 | BOOL WINAPI   ReadConsoleInputA(HANDLE hConsoleInput, LPINPUT_RECORD lpBuffer, DWORD nLength, | 
|---|
| 208 | LPDWORD lpNumberOfEventsRead); | 
|---|
| 209 | BOOL WINAPI   ReadConsoleInputW(HANDLE hConsoleInput, LPINPUT_RECORD lpBuffer, DWORD nLength, | 
|---|
| 210 | LPDWORD lpNumberOfEventsRead); | 
|---|
| 211 | #define       ReadConsoleInput WINELIB_NAME_AW(ReadConsoleInput) | 
|---|
| 212 | BOOL WINAPI   ReadConsoleOutputA( HANDLE hConsoleOutput, LPCHAR_INFO lpBuffer, COORD dwBufferSize, | 
|---|
| 213 | COORD dwBufferCoord, LPSMALL_RECT lpReadRegion ); | 
|---|
| 214 | BOOL WINAPI   ReadConsoleOutputW( HANDLE hConsoleOutput, LPCHAR_INFO lpBuffer, COORD dwBufferSize, | 
|---|
| 215 | COORD dwBufferCoord, LPSMALL_RECT lpReadRegion ); | 
|---|
| 216 | #define       ReadConsoleOutput WINELIB_NAME_AW(ReadConsoleOutput) | 
|---|
| 217 | BOOL WINAPI   ReadConsoleOutputAttribute( HANDLE hConsoleOutput, LPWORD lpAttribute, DWORD nLength, | 
|---|
| 218 | COORD dwReadCoord, LPDWORD lpNumberOfAttrsRead); | 
|---|
| 219 | BOOL WINAPI   ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,LPDWORD); | 
|---|
| 220 | BOOL WINAPI   ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,LPDWORD); | 
|---|
| 221 | #define       ReadConsoleOutputCharacter WINELIB_NAME_AW(ReadConsoleOutputCharacter) | 
|---|
| 222 | BOOL WINAPI   ScrollConsoleScreenBufferA( HANDLE hConsoleOutput, LPSMALL_RECT lpScrollRect, | 
|---|
| 223 | LPSMALL_RECT lpClipRect, COORD dwDestOrigin, | 
|---|
| 224 | LPCHAR_INFO lpFill); | 
|---|
| 225 | BOOL WINAPI   ScrollConsoleScreenBufferW( HANDLE hConsoleOutput, LPSMALL_RECT lpScrollRect, | 
|---|
| 226 | LPSMALL_RECT lpClipRect, COORD dwDestOrigin, | 
|---|
| 227 | LPCHAR_INFO lpFill); | 
|---|
| 228 | #define       ScrollConsoleScreenBuffer WINELIB_NAME_AW(ScrollConsoleScreenBuffer) | 
|---|
| 229 | BOOL WINAPI   SetConsoleActiveScreenBuffer( HANDLE hConsoleOutput); | 
|---|
| 230 | BOOL WINAPI   SetConsoleCP(UINT cp); | 
|---|
| 231 | BOOL WINAPI   SetConsoleCtrlHandler( PHANDLER_ROUTINE func, BOOL add); | 
|---|
| 232 | BOOL WINAPI   SetConsoleCursorInfo( HANDLE hcon, LPCONSOLE_CURSOR_INFO cinfo); | 
|---|
| 233 | BOOL WINAPI   SetConsoleCursorPosition(HANDLE,COORD); | 
|---|
| 234 | BOOL WINAPI   SetConsoleMode( HANDLE hcon, DWORD mode); | 
|---|
| 235 | BOOL WINAPI   SetConsoleOutputCP(UINT cp); | 
|---|
| 236 | BOOL WINAPI   SetConsoleScreenBufferSize(HANDLE hConsoleOutput, COORD dwSize); | 
|---|
| 237 | BOOL WINAPI   SetConsoleTextAttribute( HANDLE hConsoleOutput,WORD wAttr); | 
|---|
| 238 | BOOL WINAPI   SetConsoleTitleA(LPCSTR title); | 
|---|
| 239 | BOOL WINAPI   SetConsoleTitleW(LPCWSTR title); | 
|---|
| 240 | #define       SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle) | 
|---|
| 241 | BOOL WINAPI   SetConsoleWindowInfo( HANDLE hcon, BOOL bAbsolute, LPSMALL_RECT window); | 
|---|
| 242 | BOOL WINAPI   WriteConsoleA(HANDLE,CONST VOID *,DWORD,LPDWORD,LPVOID); | 
|---|
| 243 | BOOL WINAPI   WriteConsoleW(HANDLE, CONST VOID *lpBuffer, DWORD,LPDWORD,LPVOID); | 
|---|
| 244 | #define       WriteConsole WINELIB_NAME_AW(WriteConsole) | 
|---|
| 245 | BOOL WINAPI   WriteConsoleInputA(HANDLE,const INPUT_RECORD *,DWORD,LPDWORD); | 
|---|
| 246 | BOOL WINAPI   WriteConsoleInputW(HANDLE,const INPUT_RECORD *,DWORD,LPDWORD); | 
|---|
| 247 | #define       WriteConsoleInput WINELIB_NAME_AW(WriteConsoleInput) | 
|---|
| 248 | BOOL WINAPI   WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,LPSMALL_RECT); | 
|---|
| 249 | BOOL WINAPI   WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,LPSMALL_RECT); | 
|---|
| 250 | #define       WriteConsoleOutput WINELIB_NAME_AW(WriteConsoleOutput) | 
|---|
| 251 | BOOL WINAPI   WriteConsoleOutputAttribute(HANDLE,CONST WORD *,DWORD,COORD,LPDWORD); | 
|---|
| 252 | BOOL WINAPI   WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,LPDWORD); | 
|---|
| 253 | BOOL WINAPI   WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,LPDWORD); | 
|---|
| 254 | #define       WriteConsoleOutputCharacter WINELIB_NAME_AW(WriteConsoleOutputCharacter) | 
|---|
| 255 |  | 
|---|
| 256 | #ifdef __cplusplus | 
|---|
| 257 | } | 
|---|
| 258 | #endif | 
|---|
| 259 |  | 
|---|
| 260 | #endif  /* __WINE_WINCON_H */ | 
|---|