From 17082597464198fe84be80313b7d51e1e57de639 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 28 Feb 2026 19:32:20 +0100 Subject: folder restructuring --- src/client/platform.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/client/platform.rs (limited to 'src/client/platform.rs') diff --git a/src/client/platform.rs b/src/client/platform.rs new file mode 100644 index 0000000..817c39d --- /dev/null +++ b/src/client/platform.rs @@ -0,0 +1,28 @@ +#[cfg(windows)] +pub mod win { + use std::io; + use winapi::um::consoleapi::GetConsoleMode; + use winapi::um::consoleapi::SetConsoleMode; + use winapi::um::wincon::ENABLE_VIRTUAL_TERMINAL_PROCESSING; + use winapi::um::wincon::ENABLE_ECHO_INPUT; + use winapi::um::winbase::STD_OUTPUT_HANDLE; + use winapi::um::processenv::GetStdHandle; + use winapi::shared::minwindef::DWORD; + + pub fn enable_vt() -> io::Result<()> { + unsafe { + let h = GetStdHandle(STD_OUTPUT_HANDLE); + if h.is_null() { return Err(io::Error::last_os_error()); } + + let mut mode: DWORD = 0; + if GetConsoleMode(h, &mut mode) == 0 { + return Err(io::Error::last_os_error()); + } + let new = (mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING) & !ENABLE_ECHO_INPUT; + if SetConsoleMode(h, new) == 0 { + return Err(io::Error::last_os_error()); + } + Ok(()) + } + } +} -- cgit v1.2.3