mirror of
https://github.com/janet-lang/janet
synced 2025-06-08 01:24:12 +00:00
Merge branch 'shell-win-feature-check'
This commit is contained in:
commit
c3a06686c2
@ -30,6 +30,7 @@
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <shlwapi.h>
|
#include <shlwapi.h>
|
||||||
|
#include <versionhelpers.h>
|
||||||
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
|
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
|
||||||
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
|
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
|
||||||
#endif
|
#endif
|
||||||
@ -146,9 +147,13 @@ static void setup_console_output(void) {
|
|||||||
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
|
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||||
DWORD dwMode = 0;
|
DWORD dwMode = 0;
|
||||||
GetConsoleMode(hOut, &dwMode);
|
GetConsoleMode(hOut, &dwMode);
|
||||||
|
if (IsWindows10OrGreater()) {
|
||||||
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
||||||
|
}
|
||||||
SetConsoleMode(hOut, dwMode);
|
SetConsoleMode(hOut, dwMode);
|
||||||
|
if (IsValidCodePage(65001)) {
|
||||||
SetConsoleOutputCP(65001);
|
SetConsoleOutputCP(65001);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ansi terminal raw mode */
|
/* Ansi terminal raw mode */
|
||||||
@ -160,8 +165,10 @@ static int rawmode(void) {
|
|||||||
dwMode &= ~ENABLE_LINE_INPUT;
|
dwMode &= ~ENABLE_LINE_INPUT;
|
||||||
dwMode &= ~ENABLE_INSERT_MODE;
|
dwMode &= ~ENABLE_INSERT_MODE;
|
||||||
dwMode &= ~ENABLE_ECHO_INPUT;
|
dwMode &= ~ENABLE_ECHO_INPUT;
|
||||||
|
if (IsWindows10OrGreater()) {
|
||||||
dwMode |= ENABLE_VIRTUAL_TERMINAL_INPUT;
|
dwMode |= ENABLE_VIRTUAL_TERMINAL_INPUT;
|
||||||
dwMode &= ~ENABLE_PROCESSED_INPUT;
|
dwMode &= ~ENABLE_PROCESSED_INPUT;
|
||||||
|
}
|
||||||
if (!SetConsoleMode(hOut, dwMode)) return 1;
|
if (!SetConsoleMode(hOut, dwMode)) return 1;
|
||||||
gbl_israwmode = 1;
|
gbl_israwmode = 1;
|
||||||
return 0;
|
return 0;
|
||||||
@ -176,8 +183,10 @@ static void norawmode(void) {
|
|||||||
dwMode |= ENABLE_LINE_INPUT;
|
dwMode |= ENABLE_LINE_INPUT;
|
||||||
dwMode |= ENABLE_INSERT_MODE;
|
dwMode |= ENABLE_INSERT_MODE;
|
||||||
dwMode |= ENABLE_ECHO_INPUT;
|
dwMode |= ENABLE_ECHO_INPUT;
|
||||||
|
if (IsWindows10OrGreater()) {
|
||||||
dwMode &= ~ENABLE_VIRTUAL_TERMINAL_INPUT;
|
dwMode &= ~ENABLE_VIRTUAL_TERMINAL_INPUT;
|
||||||
dwMode |= ENABLE_PROCESSED_INPUT;
|
dwMode |= ENABLE_PROCESSED_INPUT;
|
||||||
|
}
|
||||||
SetConsoleMode(hOut, dwMode);
|
SetConsoleMode(hOut, dwMode);
|
||||||
gbl_israwmode = 0;
|
gbl_israwmode = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user