【发布时间】: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,
}
}
};
}
}
打印光标的位置并不重要。这只是他们示例的一部分。
谢谢!
【问题讨论】: