1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
//! Provides a mechanism for interact with the windows console //! //! This library implements most of the methods in: //! //! `https://docs.microsoft.com/en-us/windows/console/console-functions` //! //! # Example //! Here a quick example of how [`WinConsole`] can be use, as you can see we don't cache the //! `WinConsole`, we use `WinConsole::output` or `WinConsole::input` to ensure a call to //! [`get_std_handle`] and get a fresh handle each time due we can't know when [`set_std_handle`] //! could be call. //! //! [`WinConsole`]: console/struct.WinConsole.html //! [`get_std_handle`]: console/struct.WinConsole.html#method.get_std_handle //! [`set_std_handle`]: console/struct.WinConsole.html#method.set_std_handle //! //! ```rust //! use win32console::console::WinConsole; //! use win32console::input::*; //! //! fn main() { //! // Virtual key codes //! // https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes //! const ESCAPE : u16 = 0x1B; //! const BACKSPACE: u16 = 0x08; //! const ENTER : u16 = 0x0D; //! const SPACE : u16 = 0x20; //! //! loop{ //! // Get the current input event //! if let KeyEvent(key) = WinConsole::input().read_single_input().unwrap(){ //! // Only check for key down events //! if key.key_down{ //! let char_value = key.u_char; //! // Write only if is alphanumeric or punctuation //! if char_value.is_ascii_alphanumeric() || char_value.is_ascii_punctuation(){ //! let mut value : [u8; 1] = [0]; //! char_value.encode_utf8(&mut value); //! WinConsole::output().write_utf8(&value); //! } //! else{ //! match key.virtual_key_code { //! ESCAPE => { break; }, //! ENTER => { WinConsole::output().write_utf8("\n".as_bytes()); } //! SPACE => { WinConsole::output().write_utf8(" ".as_bytes()); }, //! BACKSPACE => { WinConsole::output().write_utf8(b"\x08 \x08"); }, //! _ => {} //! } //! } //! } //! } //! } //! } //! ``` /// Provides the `WinConsole` that wraps calls to native methods to interact with the console. pub mod console; /// Includes console related structs as `ConsoleColor`, `CharInfo` or `ConsoleCursorInfo`. pub mod structs; pub mod input;