On Mar 31 22:47, Takashi Yano wrote: > - Add 24 bit color support using xterm compatibility mode in > Windows 10 1703 or later. > - Add fake 24 bit color support for legacy console, which uses > the nearest color from 16 system colors. > --- > winsup/cygwin/environ.cc | 7 +- > winsup/cygwin/fhandler.h | 4 + > winsup/cygwin/fhandler_console.cc | 229 +++++++++++++++++++++++++----- > winsup/cygwin/select.cc | 8 ++ > winsup/cygwin/wincap.cc | 10 ++ > winsup/cygwin/wincap.h | 2 + > 6 files changed, 227 insertions(+), 33 deletions(-) > > diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc > index 21f13734c..c27d10fe1 100644 > --- a/winsup/cygwin/environ.cc > +++ b/winsup/cygwin/environ.cc > @@ -869,10 +869,15 @@ win32env_to_cygenv (PWCHAR rawenv, bool posify) > char *newp; > int i; > int sawTERM = 0; > - static char NO_COPY cygterm[] = "TERM=cygwin"; > + static char NO_COPY cygterm[] = "TERM=xterm-256color"; > char *tmpbuf = tp.t_get (); > PWCHAR w; > > + /* If console has 24 bit color capability, TERM=xterm-256color, > + otherwise, TERM=cygwin */ > + if (!wincap.has_con_24bit_colors ()) > + strncpy (cygterm, "TERM=cygwin", sizeof (cygterm)); > +
This hunk is ok, but I wonder if the time hasn't come to simplify the original code. The `static char NO_COPY' only makes marginal sense since it's strdup'ed anyway. What if we just define two const char's like this const char cygterm[] = "TERM=cygwin"; const char xterm[] = "TERM=xterm-256color"; and then just strdup them conditionally: if (!sawTERM) envp[i++] = strdup (wincap.has_con_24bit_colors () ? xterm : cygterm); What do you think? > +#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING > +#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 > +#endif /* ENABLE_VIRTUAL_TERMINAL_PROCESSING */ > +#ifndef DISABLE_NEWLINE_AUTO_RETURN > +#define DISABLE_NEWLINE_AUTO_RETURN 0x0008 > +#endif /* DISABLE_NEWLINE_AUTO_RETURN */ > +#ifndef ENABLE_VIRTUAL_TERMINAL_INPUT > +#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 > +#endif /* ENABLE_VIRTUAL_TERMINAL_INPUT */ Sorry, didn't notice this before: Please prepend this block with a comment along the lines of "/* Not yet defined in Mingw-w64 */" > diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc > index 9b18e8f80..28adcf3e7 100644 > --- a/winsup/cygwin/select.cc > +++ b/winsup/cygwin/select.cc > @@ -1053,6 +1053,14 @@ peek_console (select_record *me, bool) > else if (irec.Event.KeyEvent.uChar.UnicodeChar > || fhandler_console::get_nonascii_key (irec, tmpbuf)) > return me->read_ready = true; > + /* Allow Ctrl-Space for ^@ */ > + else if ( (irec.Event.KeyEvent.wVirtualKeyCode == VK_SPACE > + || irec.Event.KeyEvent.wVirtualKeyCode == '2') > + && (irec.Event.KeyEvent.dwControlKeyState & > + (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)) > + && !(irec.Event.KeyEvent.dwControlKeyState > + & (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED)) ) > + return me->read_ready = true; > } > /* Ignore key up events, except for Alt+Numpad events. */ > else if (is_alt_numpad_event (&irec)) Doesn't this belong into the select patch? Thanks, Corinna -- Corinna Vinschen Cygwin Maintainer
signature.asc
Description: PGP signature