【问题标题】:Detecting key release with crossterm with rust使用带有生锈的交叉项检测密钥释放
【发布时间】:2022-11-13 23:56:27
【问题描述】:

我正在尝试检测键释放而不是使用交叉项按下。 我正在使用名为 event-stream-tokio 的基本示例。我需要该项目的 tokio 运行时。

示例代码链接:https://github.com/crossterm-rs/crossterm/blob/master/examples/event-stream-tokio.rs

无论如何,当我试图修改示例以捕获按键释放而不是按下时 - 我无法这样做。仅检测印刷机种类。

有人知道如何使它工作吗?

这是我在该示例中更改的功能:

async fn print_events() {
    let mut reader = EventStream::new();

    loop {
        let mut delay = Delay::new(Duration::from_millis(1_000)).fuse();
        let mut event = reader.next().fuse();

        select! {
            _ = delay => { println!(".\r"); },
            maybe_event = event => {
                match maybe_event {
                    Some(Ok(event)) => {
                        println!("Event::{:?}\r", event);

                        if event == Event::Key(
                            // Here I changed the example
                            KeyEvent::new_with_kind(
                                KeyCode::Char('c'),
                                KeyModifiers::NONE,
                                KeyEventKind::Release
                            )) {
                            println!("c key was released!. position is: {:?}\r", position());
                        }

                        if event == Event::Key(KeyCode::Esc.into()) {
                            break;
                        }
                    }
                    Some(Err(e)) => println!("Error: {:?}\r", e),
                    None => break,
                }
            }
        };
    }
}

打印光标的位置并不重要。这只是他们示例的一部分。

谢谢!

【问题讨论】:

    标签: windows rust crossterm


    【解决方案1】:

    终端的默认行为是你得到的不是流关键状态事件但是一股文本- 的输入的字符.没有按键的概念。

    然而,kitty keyboard protocol 是一组扩展一些终端支持允许报告按键事件,这就是crosstermKeyEventKind 的意义所在。您必须使用PushKeyboardEnhancementFlags 启用这些功能,并且您必须使用实现该扩展的终端。否则,您将永远不会看到发布事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多