+2018-10-24 David Gressett <texasgaidheal@users.osdn.me>
+
+ Improve WinXP/Vista console I/O support.
+
+ * include/wincon.h (AddConsoleAlias, GetConsoleAlias)
+ (GetConsoleAliases, GetConsoleAliasExes, GetConsoleAliasesLength)
+ (GetConsoleAliasExesLength, GetConsoleOriginalTitle): New function
+ name aliases; define them, mapping them conditionally to represent...
+ [UNICODE]: ...their corresponding UTF-16LE function names, else...
+ [!UNICODE]: ...their corresponding ASCII/DBCS function names.
+ (COMMON_LVB_LEADING_BYTE, COMMON_LVB_TRAILING_BYTE
+ (COMMON_LVB_GRID_HORIZONTAL, COMMON_LVB_GRID_LVERTICAL)
+ (COMMON_LVB_GRID_RVERTICAL, COMMON_LVB_REVERSE_VIDEO)
+ (COMMON_LVB_UNDERSCORE, ENABLE_VIRTUAL_TERMINAL_INPUT)
+ (ENABLE_VIRTUAL_TERMINAL_PROCESSING, DISABLE_NEWLINE_AUTO_RETURN)
+ (ENABLE_LVB_GRID_WORLDWIDE,(MOUSE_HWHEELED): Define them.
+ (GetConsoleAliasA, GetConsoleAliasW, HandlerRoutine): Declare.
+ (CONSOLE_FULLSCREEN, CONSOLE_FULLSCREEN_HARDWARE): Define when...
+ [_WIN32_WINNT >= 0x0500]: ...this prevails; additionally...
+ (GetConsoleFontSize): ...declare function.
+ (CONSOLE_NO_SELECTION, CONSOLE_SELECTION_NOT_EMPTY)
+ (CONSOLE_SELECTION_IN_PROGRESS, CONSOLE_MOUSE_SELECTION)
+ (CONSOLE_MOUSE_DOWN): Define them; make them visible only when...
+ [_WIN32_WINNT >= 0x0501]: ...this prevails.
+ (struct _CONSOLE_FONT_INFO): Make it visible, only when...
+ [_WIN32_WINNT >= 0x0501]: ...this prevails; when visible, map it to...
+ (CONSOLE_FONT_INFO, PCONSOLE_FONT_INFO): ...these typedefs.
+ (struct _CONSOLE_SELECTION_INFO): Declare it; visible only when...
+ [_WIN32_WINNT >= 0x0501]: ...this prevails; when visible, map it to...
+ (CONSOLE_SELECTION_INFO, PCONSOLE_SELECTION_INFO): ...these typedefs.
+ [_WIN32_WINNT >= 0x0501] (AddConsoleAliasA, AddConsoleAliasW)
+ (GetConsoleAliasesA, GetConsoleAliasesW, GetConsoleAliasExesA)
+ (GetConsoleAliasExesW, GetConsoleAliasesLengthA)
+ (GetConsoleAliasesLengthW, GetConsoleAliasExesLengthA)
+ (GetConsoleAliasExesLengthW, GetConsoleSelectionInfo)
+ (GetCurrentConsoleFont): Declare functions.
+ [_WIN32_WINNT >= 0x0600] (HISTORY_NO_DUP_FLAG): Define it.
+ (struct _CONSOLE_FONT_INFOEX): New structure; declare it only when...
+ [_WIN32_WINNT >= 0x0600]: ...this prevails; when declared, map to...
+ (CONSOLE_FONT_INFOEX, PCONSOLE_FONT_INFOEX): ...these typedefs.
+ (CONSOLE_HISTORY_INFO, PCONSOLE_HISTORY_INFO): New typedefs; they
+ map to an anonymous structure, and are visible only when...
+ [_WIN32_WINNT >= 0x0600]: ...this prevails.
+ (struct _CONSOLE_READCONSOLE_CONTROL): New structure; declare when...
+ [_WIN32_WINNT >= 0x0600]: ...this prevails; when declared, map to...
+ (CONSOLE_READCONSOLE_CONTROL, PCONSOLE_READCONSOLE_CONTROL): ...these.
+ (struct _CONSOLE_SCREEN_BUFFER_INFOEX): New structure; declare when...
+ [_WIN32_WINNT >= 0x0600]: ...this prevails; when declared, map to...
+ (CONSOLE_SCREEN_BUFFER_INFOEX, PCONSOLE_SCREEN_BUFFER_INFOEX):
+ ...these typedefs.
+ [_WIN32_WINNT >= 0x0600] (GetConsoleHistoryInfo)
+ (GetConsoleOriginalTitleA, GetConsoleOriginalTitleW)
+ (GetConsoleScreenBufferInfoEx, GetCurrentConsoleFontEx)
+ (SetConsoleHistoryInfo, SetConsoleScreenBufferInfoEx)
+ (SetCurrentConsoleFontEx): Declare functions.
+
2018-09-03 Keith Marshall <keith@users.osdn.me>
Prepare and publish MinGW.org WSL-5.1.1 release.
#define BACKGROUND_GREEN 32
#define BACKGROUND_RED 64
#define BACKGROUND_INTENSITY 128
+#define COMMON_LVB_LEADING_BYTE 256
+#define COMMON_LVB_TRAILING_BYTE 512
+#define COMMON_LVB_GRID_HORIZONTAL 1024
+#define COMMON_LVB_GRID_LVERTICAL 2048
+#define COMMON_LVB_GRID_RVERTICAL 4096
+#define COMMON_LVB_REVERSE_VIDEO 16384
+#define COMMON_LVB_UNDERSCORE 32768
#if (_WIN32_WINNT >= 0x0501)
-#define CONSOLE_FULLSCREEN_MODE 1
-#define CONSOLE_WINDOWED_MODE 2
+#define CONSOLE_FULLSCREEN_MODE 1
+#define CONSOLE_WINDOWED_MODE 2
+#define CONSOLE_NO_SELECTION 0
+#define CONSOLE_SELECTION_IN_PROGRESS 1
+#define CONSOLE_SELECTION_NOT_EMPTY 2
+#define CONSOLE_MOUSE_SELECTION 4
+#define CONSOLE_MOUSE_DOWN 8
#endif
#define CTRL_C_EVENT 0
#define CTRL_BREAK_EVENT 1
#define ENABLE_QUICK_EDIT_MODE 64
#define ENABLE_EXTENDED_FLAGS 128
#define ENABLE_AUTO_POSITION 256
+#define ENABLE_VIRTUAL_TERMINAL_INPUT 512
#define ENABLE_PROCESSED_OUTPUT 1
#define ENABLE_WRAP_AT_EOL_OUTPUT 2
+#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 4
+#define DISABLE_NEWLINE_AUTO_RETURN 8
+#define ENABLE_LVB_GRID_WORLDWIDE 16
+#if (_WIN32_WINNT >= 0x0600)
+#define HISTORY_NO_DUP_FLAG 1
+#endif
#define KEY_EVENT 1
#define MOUSE_EVENT 2
#define WINDOW_BUFFER_SIZE_EVENT 4
#define MOUSE_MOVED 1
#define DOUBLE_CLICK 2
#define MOUSE_WHEELED 4
+#define MOUSE_HWHEELED 8
+#if (_WIN32_WINNT >= 0x0500)
+#define CONSOLE_FULLSCREEN 1
+#define CONSOLE_FULLSCREEN_HARDWARE 2
+#endif
typedef struct _CHAR_INFO {
union {
SHORT X;
SHORT Y;
} COORD, *PCOORD;
+#if (_WIN32_WINNT >= 0x0501)
typedef struct _CONSOLE_FONT_INFO {
DWORD nFont;
COORD dwFontSize;
} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
+#endif
+#if (_WIN32_WINNT >= 0x600)
+typedef struct _CONSOLE_FONT_INFOEX {
+ ULONG cbSize;
+ DWORD nFont;
+ COORD dwFontSize;
+ UINT FontFamily;
+ UINT FontWeight;
+ WCHAR FaceName[LF_FACESIZE];
+} CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
+typedef struct {
+ UINT cbSize;
+ UINT HistoryBufferSize;
+ UINT NumberOfHistoryBuffers;
+ DWORD dwFlags;
+} CONSOLE_HISTORY_INFO, *PCONSOLE_HISTORY_INFO;
+typedef struct _CONSOLE_READCONSOLE_CONTROL {
+ ULONG nLength;
+ ULONG nInitialChars;
+ ULONG dwCtrlWakeupMask;
+ ULONG dwControlKeyState;
+} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
+#endif
+
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
COORD dwSize;
COORD dwCursorPosition;
SMALL_RECT srWindow;
COORD dwMaximumWindowSize;
} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
+#if (_WIN32_WINNT >= 0x0600)
+typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX {
+ ULONG cbSize;
+ COORD dwSize;
+ COORD dwCursorPosition;
+ WORD wAttributes;
+ SMALL_RECT srWindow;
+ COORD dwMaximumWindowSize;
+ WORD wPopupAttributes;
+ BOOL bFullscreenSupported;
+ COLORREF ColorTable[16];
+} CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+typedef struct _CONSOLE_SELECTION_INFO {
+ DWORD dwFlags;
+ COORD dwSelectionAnchor;
+ SMALL_RECT srSelection;
+} CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO;
+#endif
typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(DWORD);
typedef struct _KEY_EVENT_RECORD {
BOOL bKeyDown;
} Event;
} INPUT_RECORD,*PINPUT_RECORD;
+#if (_WIN32_WINNT >= 0x0501)
+BOOL WINAPI AddConsoleAliasA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI AddConsoleAliasW(LPCWSTR,LPCWSTR,LPCWSTR);
+#endif
BOOL WINAPI AllocConsole(void);
#if (_WIN32_WINNT >= 0x0501)
#define ATTACH_PARENT_PROCESS ((DWORD)-1)
BOOL WINAPI FlushConsoleInputBuffer(HANDLE);
BOOL WINAPI FreeConsole(void);
BOOL WINAPI GenerateConsoleCtrlEvent(DWORD,DWORD);
+DWORD WINAPI GetConsoleAliasA(LPSTR,LPSTR,DWORD,LPSTR);
+DWORD WINAPI GetConsoleAliasW(LPWSTR,LPWSTR,DWORD,LPWSTR);
+#if (_WIN32_WINNT >= 0x0501)
+DWORD WINAPI GetConsoleAliasesA(LPSTR,DWORD,LPSTR);
+DWORD WINAPI GetConsoleAliasesW(LPWSTR,DWORD,LPWSTR);
+DWORD WINAPI GetConsoleAliasExesA(LPSTR,DWORD);
+DWORD WINAPI GetConsoleAliasExesW(LPWSTR,DWORD);
+DWORD WINAPI GetConsoleAliasesLengthA(LPSTR);
+DWORD WINAPI GetConsoleAliasesLengthW(LPWSTR);
+DWORD WINAPI GetConsoleAliasExesLengthA(void);
+DWORD WINAPI GetConsoleAliasExesLengthW(void);
+#endif
UINT WINAPI GetConsoleCP(void);
+#if (_WIN32_WINNT >= 0x0500)
+COORD WINAPI GetConsoleFontSize(HANDLE,DWORD);
+#endif
BOOL WINAPI GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO);
+#if (_WIN32_WINNT >= 0x0600)
+BOOL WINAPI GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO);
+#endif
BOOL WINAPI GetConsoleMode(HANDLE,PDWORD);
+#if (_WIN32_WINNT >= 0x0600)
+DWORD WINAPI GetConsoleOriginalTitleA(LPSTR,DWORD);
+DWORD WINAPI GetConsoleOriginalTitleW(LPWSTR,DWORD);
+#endif
UINT WINAPI GetConsoleOutputCP(void);
+#if (_WIN32_WINNT >= 0x0501)
+BOOL WINAPI GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO);
+#endif
BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO);
+#if (_WIN32_WINNT >= 0x0600)
+BOOL WINAPI GetConsoleScreenBufferInfoEx(HANDLE,PCONSOLE_SCREEN_BUFFER_INFOEX);
+#endif
DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD);
DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD);
#if (_WIN32_WINNT >= 0x0500)
#endif
#if (_WIN32_WINNT >= 0x0501)
DWORD WINAPI GetConsoleProcessList(LPDWORD, DWORD);
+BOOL WINAPI GetCurrentConsoleFont(HANDLE,BOOL,PCONSOLE_FONT_INFO);
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+BOOL WINAPI GetCurrentConsoleFontEx(HANDLE,BOOL,PCONSOLE_FONT_INFOEX);
#endif
COORD WINAPI GetLargestConsoleWindowSize(HANDLE);
BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD);
BOOL WINAPI GetNumberOfConsoleMouseButtons(PDWORD);
+BOOL WINAPI HandlerRoutine(DWORD);
BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
BOOL WINAPI PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID);
#if (_WIN32_WINNT >= 0x0501)
BOOL WINAPI SetConsoleDisplayMode(HANDLE,DWORD,PCOORD);
#endif
+#if (_WIN32_WINNT >= 0x0600)
+BOOL WINAPI SetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO);
+#endif
BOOL WINAPI SetConsoleMode(HANDLE,DWORD);
BOOL WINAPI SetConsoleOutputCP(UINT);
+#if (_WIN32_WINNT >= 0x0600)
+BOOL WINAPI SetConsoleScreenBufferInfoEx(HANDLE,PCONSOLE_SCREEN_BUFFER_INFOEX);
+#endif
BOOL WINAPI SetConsoleScreenBufferSize(HANDLE,COORD);
BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD);
BOOL WINAPI SetConsoleTitleA(LPCSTR);
BOOL WINAPI SetConsoleTitleW(LPCWSTR);
BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*);
+#if (_WIN32_WINNT >= 0x0600)
+BOOL WINAPI SetCurrentConsoleFontEx(HANDLE,BOOL,PCONSOLE_FONT_INFOEX);
+#endif
BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD);
#ifdef UNICODE
+#define AddConsoleAlias AddConsoleAliasW
#define FillConsoleOutputCharacter FillConsoleOutputCharacterW
+#define GetConsoleAlias GetConsoleAliasW
+#define GetConsoleAliases GetConsoleAliasesW
+#define GetConsoleAliasExes GetConsoleAliasExesW
+#define GetConsoleAliasesLength GetConsoleAliasesLengthW
+#define GetConsoleAliasExesLength GetConsoleAliasExesLengthW
+#define GetConsoleOriginalTitle GetConsoleOriginalTitleW
#define GetConsoleTitle GetConsoleTitleW
#define PeekConsoleInput PeekConsoleInputW
#define ReadConsole ReadConsoleW
#define WriteConsoleOutput WriteConsoleOutputW
#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
#else
+#define AddConsoleAlias AddConsoleAliasA
#define FillConsoleOutputCharacter FillConsoleOutputCharacterA
+#define GetConsoleAlias GetConsoleAliasA
+#define GetConsoleAliases GetConsoleAliasesA
+#define GetConsoleAliasExes GetConsoleAliasExesA
+#define GetConsoleAliasesLength GetConsoleAliasesLengthA
+#define GetConsoleAliasExesLength GetConsoleAliasExesLengthA
+#define GetConsoleOriginalTitle GetConsoleOriginalTitleA
#define GetConsoleTitle GetConsoleTitleA
#define PeekConsoleInput PeekConsoleInputA
#define ReadConsole ReadConsoleA