Coder Social home page Coder Social logo

windows1x-virtualterminal-rs's Introduction

windows1x-virtualterminal-rs

This package provides these features.

  • Enable ANSI Escape sequence on Windows1x
  • Read one key from the terminal without waiting for the Enter key pressed

Enable ANSI Escape sequence on Windows1x

enable_stdout and enable_stderr set the bit for ENABLE_VIRTUAL_TERMINAL_PROCESSING of the console mode.

examples/color.rs

fn main() {
    if let Ok(_) = virtualterminal::enable_stdout() {
        println!("\x1B[36m(enabled)\x1B[0m");
    }
    // When the return value of enable_stdout is dropped,
    // virtual terminal processing is disabled.
    println!("\x1B[36m(disabled)\x1B[0m");
}

image

Read one key from the terminal without waiting for the Enter key pressed

examples/getkey.rs

fn main() {
    if let Ok(_) = virtualterminal::enable_stdin() {
        if let Ok(_) = virtualterminal::make_raw() {
            if let Ok(key) = virtualterminal::getkey() {
                println!("{}", key.replace("\x1B", "ESC"));
            }
        }
        // When the return value of make_raw() is droppped,
        // the mode is changed to cooked mode.
    }
    // When the return value of enable_stdin() is droppped,
    // virtual_terminal_input is disabled.
}
  • virtualterminal::enable_stdin() enables the virtual terminal input mode of Windows1x.
  • virtualterminal::make_raw() makes the terminal raw-mode.

image

This code does NOT work as expected

examples/ng.rs

fn main() {
    let _ = virtualterminal::enable_stdout().unwrap();
    println!("\x1B[36m(enabled)\x1B[0m");
}

The printed text is not colored because the old state is restored by drop before println! is executed.

windows1x-virtualterminal-rs's People

Contributors

hymkor avatar

Stargazers

sheepla avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.