#input-event #terminal-input #key-input #crossterm #events

已废弃 crossterm_input

一个用于读取用户输入的跨平台库

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

Download history 439/week @ 2023-11-20 360/week @ 2023-11-27 232/week @ 2023-12-04 272/week @ 2023-12-11 390/week @ 2023-12-18 275/week @ 2023-12-25 197/week @ 2024-01-01 592/week @ 2024-01-08 513/week @ 2024-01-15 476/week @ 2024-01-22 336/week @ 2024-01-29 375/week @ 2024-02-05 408/week @ 2024-02-12 303/week @ 2024-02-19 536/week @ 2024-02-26 422/week @ 2024-03-04

每月下载量 1,722
用于 7 个crate (5 直接)

MIT 协议

91KB
1.5K SLoC

Lines of Code Latest Version MIT docs Join us on Discord

Crossterm Input

crossterm_input crate已废弃且不再维护。GitHub仓库将很快归档。所有代码正在移至crossterm crate。您可以在将子crate合并到crossterm crate问题中了解更多信息。

此crate允许您跨平台读取用户输入。它支持所有UNIX和Windows 7及以下的终端(并非所有终端都经过测试,更多信息请参阅已测试的终端)。

crossterm_inputcrossterm 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