# 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
```rust
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](https://lib.rs/crates/raw_tty) for raw mode, [lliw](https://github.com/curlpipe/lliw) for styling, and I guess you can do the cursor movement using ANSI escape codes as well as clearing.
## More Info:
* [Usage](https://codeberg.org/RustedTerrier/xekeys/wiki/Usage/)