4 releases (stable)

2.0.0 Jun 27, 2021
1.0.1 Jun 1, 2021
0.9.0 May 31, 2021

#10 in #termion

35 downloads per month
Used in libtui

BSD-3-Clause

16KB
230 lines

XEKEYS

A simple program to gather key-presses.

Note:

  • None of the mod keys are case sensitive.
  • Ctrl does not work on '-', ';', ''', ',', '.', '[' or '+'.
  • Super only supports arrow keys as I found no way to support regular keys. Any pull requests on this issue would be appreciated.
  • Raw mode is needed for most of the key detection.

Simple example

extern crate xekeys;

use xekeys::{get_keys, Keys};

fn main() {
    loop {
        // Here we get the keypresses as a struct.
        let keys = get_keys();

        // Here we check if q is pressed and control is pressed and if so, we break.
        match keys {
            | Keys::CtrlChar('q') => break,
            | _ => {}
        };
    }
}

Motivation

When I was using termion, I came to the realization that I was unabled to detect ctrl+arrow keys, something I needed. So I made my own crate; but, to justify using this over termion, I added most of the functionality of termion key presses and some extra, such as more modifiers with arrow keys and function keys up to 20.

License

XEKEYS uses BSD-3 clause.

Termion Alternative:

I dont want to make a full termion alternative, termion is already great; but, if you want one, I suggest using this for keypresses, raw_tty for raw mode, lliw for styling, and I guess you can do the cursor movement using ANSI escape codes as well as clearing.

More Info:

No runtime deps