7 const struct wtermdesc {
18 {
ESCAPE_INITC,
"\x1b]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\", },
40 for(w = wterms ; w->tinfo; ++w){
47 ti->inhandle = GetStdHandle(STD_INPUT_HANDLE);
48 ti->outhandle = GetStdHandle(STD_OUTPUT_HANDLE);
49 if(ti->inhandle == INVALID_HANDLE_VALUE){
50 logerror(
"couldn't get input handle");
53 if(ti->outhandle == INVALID_HANDLE_VALUE){
54 logerror(
"couldn't get output handle");
57 if(!SetConsoleOutputCP(CP_UTF8)){
58 logerror(
"couldn't set output page to utf8");
61 if(!SetConsoleCP(CP_UTF8)){
62 logerror(
"couldn't set input page to utf8");
66 if(!GetConsoleMode(ti->inhandle, &inmode)){
67 logerror(
"couldn't get input console mode");
72 inmode &= ~ENABLE_INSERT_MODE;
73 inmode |= ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT
74 | ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS
75 | ENABLE_WINDOW_INPUT | ENABLE_VIRTUAL_TERMINAL_INPUT;
76 if(!SetConsoleMode(ti->inhandle, inmode)){
77 logerror(
"couldn't set input console mode");
83 if(!SetConsoleMode(ti->outhandle, ENABLE_PROCESSED_OUTPUT
84 | ENABLE_WRAP_AT_EOL_OUTPUT
85 | ENABLE_VIRTUAL_TERMINAL_PROCESSING
86 | DISABLE_NEWLINE_AUTO_RETURN
87 | ENABLE_LVB_GRID_WORLDWIDE)){
88 logerror(
"couldn't set output console mode");
91 loginfo(
"verified Windows ConPTY");
96 const char* tp = getenv(
"TERM_PROGRAM");
98 if(strcmp(tp,
"mintty") == 0){
99 const char* ver = getenv(
"TERM_PROGRAM_VERSION");
#define logerror(fmt,...)
queried_terminals_e qterm
int grow_esc_table(tinfo *ti, const char *tstr, escape_e esc, size_t *tlen, size_t *tused)
int prepare_windows_terminal(struct tinfo *ti, size_t *tablelen, size_t *tableused)