Skip to content
Safe bindings for the termios library.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Add Android support Oct 8, 2018
.gitignore creates safe FFI wrapper for termios library Feb 1, 2015
.travis.yml Bump minimum supported Rust to 1.13.0 Oct 8, 2018
Cargo.toml Bump version to v0.3.1 Oct 8, 2018
LICENSE adds package metadata Feb 1, 2015 Add Android support Oct 8, 2018

Termios Rust Bindings

The termios crate provides safe bindings for the Rust programming language to the terminal I/O interface implemented by Unix operating systems. The safe bindings are a small wrapper around the raw C functions, which converts integer return values to std::io::Result to indicate success or failure.


In order to use the termios crate, you must have a native libc library that implements the termios API. This should be available on any Unix operating system. This library contains the termios definitions for the following platforms:

  • Linux (x86_64, armv6l)
  • Android (x86)
  • OS X (x86_64)
  • FreeBSD (amd64)
  • OpenBSD (amd64)
  • DragonFly BSD (x86_64)


Add termios as a dependency in Cargo.toml:

termios = "0.3"

Import the termios crate and any symbols needed from termios. You may also need std::os::unix::io::RawFd for file descriptors and std::io::Result to propagate errors.

extern crate termios;

use std::io;
use std::os::unix::io::RawFd;

use termios::*;

fn setup_fd(fd: RawFd) -> io::Result<()> {
  let mut termios = try!(Termios::from_fd(fd));

  termios.c_iflag = IGNPAR | IGNBRK;
  termios.c_oflag = 0;
  termios.c_cflag = CS8 | CREAD | CLOCAL;
  termios.c_lflag = 0;

  try!(cfsetspeed(&mut termios, B9600));
  try!(tcsetattr(fd, TCSANOW, &termios));
  try!(tcflush(fd, TCIOFLUSH));




Copyright © 2015 David Cuddeback

Distributed under the MIT License.

You can’t perform that action at this time.