mirror of
https://github.com/crossterm-rs/crossterm.git
synced 2025-09-27 04:50:48 +00:00

* Add is_ and as_ methods to the event enums Often application code only cares about a small subset of possible events. These methods make it simpler to write code which checks whether an event is a particular event type or converts events into the specific type (returning an Option). This can help simplify some nested match blocks. E.g.: ```rust match event { Event::Key(key) if key.kind == KeyEventKind::Press => { ... } } ``` becomes: ```rust if let Some(key) = event.as_key_press() { ... } ``` Similar flexible methods are aded across all the event enums: - `Event::is_focus_gained()` - `Event::is_focus_lost()` - `Event::is_key()` - `Event::is_mouse()` - `Event::is_paste()` - `Event::is_resize()` - `Event::is_key_press()` - `Event::as_key_press() -> Option<&KeyEvent>` - `MouseEventKind::is_*()` - `MouseButton::is_*()` - `KeyEventKind::is_*()` - `KeyEvent::is_press()` - `KeyEvent::is_release()` - `KeyEvent::is_repeat()` - `KeyCode::is_*()` - `KeyCode::is_function_key(n)` - `KeyCode::is_char(c)` - `KeyCode::as_char() -> Option<char>` - `KeyCode::is_media_key(media)` - `KeyCode::is_modifier(modifier)` - add is_key_release() and is_key_repeat() checks - add as_key_event() - rename as_key_press() to as_key_press_event() - add as_key_repeat_event() - add as_key_release_event() - add as_mouse_event() - add as_paste_event() - more tests - update event-match and key-display examples
Crossterm Examples
The examples are compatible with the latest release.
Structure
├── examples
│ └── interactive-test
│ └── event-*
│ └── stderr
File Name | Description | Topics |
---|---|---|
examples/interactive-test |
interactive, walk through, demo | cursor, style, event |
event-* |
event reading demos | (async) event reading |
stderr |
crossterm over stderr demo | raw mode, alternate screen, custom output |
is_tty |
Is this instance a tty ? | tty |
Run examples
$ cargo run --example [file name]
To run the interactive-demo go into the folder examples/interactive-demo
and run cargo run
.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.