15个版本 (4个重大更改)
0.5.0 | 2019年10月21日 |
---|---|
0.3.9 | 2019年8月2日 |
0.3.8 | 2019年7月25日 |
0.1.0 | 2019年1月27日 |
#7 in #key-input
每月下载量 1,722
用于 7 个crate (5 直接)
91KB
1.5K SLoC
Crossterm Input
该crossterm_input
crate已废弃且不再维护。GitHub仓库将很快归档。所有代码正在移至crossterm
crate。您可以在将子crate合并到crossterm crate问题中了解更多信息。
此crate允许您跨平台读取用户输入。它支持所有UNIX和Windows 7及以下的终端(并非所有终端都经过测试,更多信息请参阅已测试的终端)。
crossterm_input
是crossterm
crate的一个子crate。您可以直接使用它,但强烈建议您启用input
功能来使用crossterm
crate。
特性
- 跨平台
- 多线程(发送、同步)
- 详细文档
- 依赖项少
- 输入
- 读取字符
- 读取行
- 读取键输入事件(异步/同步)
- 读取鼠标输入事件(按下、释放、位置、按钮)
- 原始屏幕
入门
点击以显示Cargo.toml。
[dependencies]
# All crossterm features are enabled by default.
crossterm = "0.11"
use crossterm::{input, InputEvent, KeyEvent, MouseButton, MouseEvent, RawScreen, Result};
fn main() -> Result<()> {
// Keep _raw around, raw mode will be disabled on the _raw is dropped
let _raw = RawScreen::into_raw_mode()?;
let input = input();
input.enable_mouse_mode()?;
let mut sync_stdin = input.read_sync();
loop {
if let Some(event) = sync_stdin.next() {
match event {
InputEvent::Keyboard(KeyEvent::Esc) => break,
InputEvent::Keyboard(KeyEvent::Left) => println!("Left arrow"),
InputEvent::Mouse(MouseEvent::Press(MouseButton::Left, col, row)) => {
println!("Left mouse button pressed at {}x{}", col, row);
}
_ => println!("Other event {:?}", event),
}
}
}
input.disable_mouse_mode()
} // <- _raw dropped = raw mode disabled
其他资源
作者
- Timon Post - 项目负责人 & 创建者
- Dave Ho - 贡献者
许可证
本项目采用MIT许可证 - 请参阅LICENSE文件以获取详细信息
依赖项
~0.6–1.2MB
~19K SLoC