Cygwin: console: Disable xterm mode for non cygwin process only.
- Special function keys such as arrow keys or function keys do not work in ConEmu with cygwin-connector after commit 6a06c6bc8f8492ea09aa3ae180fe94e4ac265611. This patch fixes the issue.
This commit is contained in:
parent
bb30582a99
commit
d7478090d6
@ -33,17 +33,6 @@ details. */
|
|||||||
#include "child_info.h"
|
#include "child_info.h"
|
||||||
#include "cygwait.h"
|
#include "cygwait.h"
|
||||||
|
|
||||||
/* Not yet defined in Mingw-w64 */
|
|
||||||
#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 */
|
|
||||||
|
|
||||||
/* Don't make this bigger than NT_MAX_PATH as long as the temporary buffer
|
/* Don't make this bigger than NT_MAX_PATH as long as the temporary buffer
|
||||||
is allocated using tmp_pathbuf!!! */
|
is allocated using tmp_pathbuf!!! */
|
||||||
#define CONVERT_LIMIT NT_MAX_PATH
|
#define CONVERT_LIMIT NT_MAX_PATH
|
||||||
@ -2975,14 +2964,6 @@ fhandler_console::fixup_after_fork_exec (bool execing)
|
|||||||
{
|
{
|
||||||
set_unit ();
|
set_unit ();
|
||||||
setup_io_mutex ();
|
setup_io_mutex ();
|
||||||
if (wincap.has_con_24bit_colors () && !con_is_legacy)
|
|
||||||
{
|
|
||||||
DWORD dwMode;
|
|
||||||
/* Disable xterm compatible mode in input */
|
|
||||||
GetConsoleMode (get_handle (), &dwMode);
|
|
||||||
dwMode &= ~ENABLE_VIRTUAL_TERMINAL_INPUT;
|
|
||||||
SetConsoleMode (get_handle (), dwMode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// #define WINSTA_ACCESS (WINSTA_READATTRIBUTES | STANDARD_RIGHTS_READ | STANDARD_RIGHTS_WRITE | WINSTA_CREATEDESKTOP | WINSTA_EXITWINDOWS)
|
// #define WINSTA_ACCESS (WINSTA_READATTRIBUTES | STANDARD_RIGHTS_READ | STANDARD_RIGHTS_WRITE | WINSTA_CREATEDESKTOP | WINSTA_EXITWINDOWS)
|
||||||
|
@ -31,19 +31,9 @@ details. */
|
|||||||
#define ALWAYS_USE_PCON false
|
#define ALWAYS_USE_PCON false
|
||||||
#define USE_API_HOOK true
|
#define USE_API_HOOK true
|
||||||
|
|
||||||
/* Not yet defined in Mingw-w64 */
|
|
||||||
#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 PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE
|
#ifndef PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE
|
||||||
#define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE 0x00020016
|
#define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE 0x00020016
|
||||||
#endif /* PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE */
|
#endif /* PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE */
|
||||||
#ifndef ENABLE_VIRTUAL_TERMINAL_INPUT
|
|
||||||
#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200
|
|
||||||
#endif /* ENABLE_VIRTUAL_TERMINAL_INPUT */
|
|
||||||
|
|
||||||
extern "C" int sscanf (const char *, const char *, ...);
|
extern "C" int sscanf (const char *, const char *, ...);
|
||||||
extern "C" int ttyname_r (int, char*, size_t);
|
extern "C" int ttyname_r (int, char*, size_t);
|
||||||
|
@ -610,7 +610,26 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (fh && fh->get_major () == DEV_CONS_MAJOR)
|
else if (fh && fh->get_major () == DEV_CONS_MAJOR)
|
||||||
attach_to_console = true;
|
{
|
||||||
|
attach_to_console = true;
|
||||||
|
if (wincap.has_con_24bit_colors () && !iscygwin ())
|
||||||
|
{
|
||||||
|
DWORD dwMode;
|
||||||
|
if (fd == 0)
|
||||||
|
{
|
||||||
|
/* Disable xterm compatible mode in input */
|
||||||
|
GetConsoleMode (fh->get_handle (), &dwMode);
|
||||||
|
dwMode &= ~ENABLE_VIRTUAL_TERMINAL_INPUT;
|
||||||
|
SetConsoleMode (fh->get_handle (), dwMode);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetConsoleMode (fh->get_output_handle (), &dwMode);
|
||||||
|
dwMode &= ~ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
||||||
|
SetConsoleMode (fh->get_output_handle (), dwMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set up needed handles for stdio */
|
/* Set up needed handles for stdio */
|
||||||
|
@ -93,4 +93,16 @@ details. */
|
|||||||
use this function. Use GetSystemWindowsDirectoryW. */
|
use this function. Use GetSystemWindowsDirectoryW. */
|
||||||
#define GetWindowsDirectoryW dont_use_GetWindowsDirectory
|
#define GetWindowsDirectoryW dont_use_GetWindowsDirectory
|
||||||
#define GetWindowsDirectoryA dont_use_GetWindowsDirectory
|
#define GetWindowsDirectoryA dont_use_GetWindowsDirectory
|
||||||
|
|
||||||
|
/* For console with xterm compatible mode */
|
||||||
|
/* Not yet defined in Mingw-w64 */
|
||||||
|
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
|
||||||
|
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
|
||||||
|
#endif /* ENABLE_VIRTUAL_TERMINAL_PROCESSING */
|
||||||
|
#ifndef ENABLE_VIRTUAL_TERMINAL_INPUT
|
||||||
|
#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200
|
||||||
|
#endif /* ENABLE_VIRTUAL_TERMINAL_INPUT */
|
||||||
|
#ifndef DISABLE_NEWLINE_AUTO_RETURN
|
||||||
|
#define DISABLE_NEWLINE_AUTO_RETURN 0x0008
|
||||||
|
#endif /* DISABLE_NEWLINE_AUTO_RETURN */
|
||||||
#endif /*_WINLEAN_H*/
|
#endif /*_WINLEAN_H*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user