Go to file
IGI-111 0e74a7672f added more special keys
Key now supports Home, End, PageUp, PageDown, Delete, Insert and
Function keys. All this is done through the detection of both VT100
escape codes and more modern standard counterparts.
For instance, F2 can be both
    ESC OQ
on VT100, screen, and some versions of xterm and
    ESC [12~
on rxvt and other xterm versions depending on your terminal
2016-07-15 07:41:31 +02:00
examples Add more examples 2016-07-02 15:07:20 +02:00
src added more special keys 2016-07-15 07:41:31 +02:00
.gitignore Add README 2016-03-06 14:55:01 +01:00
Cargo.toml Merge branch 'master' of github.com:Ticki/libterm 2016-07-03 13:36:46 +02:00
LICENSE Add license 2016-03-08 09:30:24 +01:00
README.md Fix cargo example 2016-07-03 13:46:18 +02:00
image.png Example image 2016-03-16 08:11:35 +01:00

README.md

Termion

Termion is a pure Rust, bindless library for low-level handling, manipulating and reading information about terminals. This provides a full-featured alternative to Termbox.

Termion aims to be simple and yet expressive. It is bindless, meaning that it is not a front-end to some other library (e.g., ncurses or termbox), but a standalone library directly talking to the TTY.

Supports Redox, Mac OS X, and Linux (or, in general, ANSI terminals).

Documentation. | Examples.

A note on stability

Although small breaking changes might happen, I will try my best to avoid them, and this crate can generally be considered stable.

Cargo.toml

For nightly, add

[dependencies.termion]
git = "https://github.com/ticki/termion.git"

For stable,

[dependencies.termion]
git = "https://github.com/ticki/termion.git"
default-features = false

Features

  • Raw mode.
  • 256-color mode.
  • Cursor movement.
  • Color output.
  • Calculating ANSI escapes.
  • Text formatting.
  • Console size.
  • Control sequences.
  • Termios control.
  • Password input.
  • Redox support.
  • Panic-free error handling.
  • Special keys events (modifiers, special keys, etc.).
  • Allocation-free.
  • Asynchronous key events.
  • Carefully tested.

and much more.

Example

extern crate termion;

use termion::{TermWrite, color, Style};

use std::io;

fn main() {
    let stdout = io::stdout();
    let mut stdout = stdout.lock();

    stdout.color(color::Red).unwrap();
    println!("Red");

    stdout.color(color::Blue).unwrap();
    println!("Blue");

    stdout.style(Style::Bold).unwrap();
    println!("Blue'n'Bold");

    stdout.reset().unwrap();
    stdout.style(Style::Italic).unwrap();
    println!("Just plain italic")
}

Usage

See examples/, and the documentation, which can be rendered using cargo doc.

For a more complete example, see a minesweeper implementation, that I made for Redox using termion.

TODO

  • Mouse input

License

MIT/X11.