From 8a172fdbda3e3292949796671ff82d599a84fa00 Mon Sep 17 00:00:00 2001 From: Ticki Date: Sun, 6 Mar 2016 14:55:01 +0100 Subject: [PATCH] Add README --- .gitignore | 2 ++ Cargo.toml | 6 ++++++ README.md | 14 ++++++++++++++ examples/simple.rs | 28 ++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 README.md create mode 100644 examples/simple.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a9d37c5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +target +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..ada7bca --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "libterm" +version = "0.1.0" +authors = ["Ticki "] + +[dependencies] diff --git a/README.md b/README.md new file mode 100644 index 0000000..48d86a1 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +libterm +======= + +A Rust Termios wrapper, providing various useful abstractions for dealing with terminals. + +Usage +----- + +See `examples/`. + +License +------- + +MIT. diff --git a/examples/simple.rs b/examples/simple.rs new file mode 100644 index 0000000..b446ba7 --- /dev/null +++ b/examples/simple.rs @@ -0,0 +1,28 @@ +extern crate libterm; + +use libterm::{TermControl, raw_mode}; +use std::io::{Read, Write, stdout, stdin}; + +fn main() { + let raw = raw_mode(); + let mut stdout = stdout(); + let mut stdin = stdin(); + + stdout.goto(5, 5); + stdout.clear(); + stdout.write(b"yo, 'q' will exit."); + stdout.flush(); + + let mut bytes = stdin.bytes(); + loop { + let b = bytes.next().unwrap().unwrap(); + + match b { + b'q' => return, + b'c' => stdout.clear(), + a => stdout.write(&[a]), + }; + + stdout.flush(); + } +}