summaryrefslogtreecommitdiffstats
path: root/src/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/utils.rs b/src/utils.rs
index d1ffed8..58319ea 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -1,4 +1,6 @@
use crate::error::{Error, PermissionType, Result};
+use crossterm::event::{read, Event, KeyCode, KeyEvent};
+use crossterm::terminal;
use std::fs::File;
use std::io::ErrorKind;
use std::path::PathBuf;
@@ -22,3 +24,25 @@ pub fn create_file(filename: &PathBuf) -> Result<File> {
}
})
}
+
+pub fn wait_for_char(c: char) -> Result<bool> {
+ terminal::enable_raw_mode()?;
+ let mut pressed = false;
+ loop {
+ match read()? {
+ Event::Key(KeyEvent {
+ code: KeyCode::Char(ch),
+ ..
+ }) if ch == c => {
+ pressed = true;
+ break;
+ }
+ Event::Key(_) => {
+ break;
+ }
+ _ => (),
+ }
+ }
+ terminal::disable_raw_mode()?;
+ Ok(pressed)
+}