use k_board::{Keyboard, Keys};
fn main() {
println!("[*] I use k_board lightweight software");
println!("[ ] I use heavyweight software");
for key in Keyboard::new() {
match key {
Keys::Up => {
std::process::Command::new("clear").status().unwrap();
println!("[*] I use k_board lightweight software");
println!("[ ] I use heavyweight software");
}
Keys::Down => {
std::process::Command::new("clear").status().unwrap();
println!("[ ] I use k_board lightweight software");
println!("[*] I use heavyweight software");
}
Keys::Enter => {
break;
}
_ => {}
}
}
}
3条答案
按热度按时间carvr3hs1#
使用crate device_query,您可以查询键盘状态,而无需使用活动窗口。你只需要在
Cargo.toml
文件中添加这个crate的依赖项:它的用法很简单,类似于
kbhit()
和getch()
。不同的是,你会收到一个Vec
的按键(Keycode
),如果没有按键,这个Vec
将是空的。一次调用就可以同时使用kbhit()
和getch()
的功能。这个程序将打印出控制台上所有按下的键。要检查是否按下了任何键(仅适用于
kbhit()
),可以在返回的Vec<>
上使用is_empty()
,如下所示:uidvcgyl2#
你仍然可以做一些事情,
iih3973s3#
你可以在rust中获取键盘事件而不需要按回车键。作为开发依赖项添加到k_board,这是一个轻量级的crate,开发的目的是使用低级资源在原始模式下提供键盘监听器(它不像其他crate那样具有依赖项),我附上了如何从键盘捕获任何字母。
cargo add k_board
这里我附上钥匙和事件的清单