diff options
Diffstat (limited to 'src/platform')
| -rw-r--r-- | src/platform/windows.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 9742b52c..9e39a715 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -16,6 +16,20 @@ use std::{ mod clipboard_image; mod config_backup; +pub(crate) fn windows_virtual_terminal_input_active() -> bool { + use windows_sys::Win32::Foundation::INVALID_HANDLE_VALUE; + use windows_sys::Win32::System::Console::{ + GetConsoleMode, GetStdHandle, ENABLE_VIRTUAL_TERMINAL_INPUT, STD_INPUT_HANDLE, + }; + + let handle = unsafe { GetStdHandle(STD_INPUT_HANDLE) }; + if handle.is_null() || handle == INVALID_HANDLE_VALUE { + return false; + } + let mut mode = 0; + (unsafe { GetConsoleMode(handle, &mut mode) } != 0) && mode & ENABLE_VIRTUAL_TERMINAL_INPUT != 0 +} + pub(crate) fn classify_child_exit(status: &portable_pty::ExitStatus) -> super::ChildExitReason { // STATUS_CONTROL_C_EXIT is reported without a Unix signal by portable-pty. if status.exit_code() == 0xC000013A { |
