diff options
Diffstat (limited to 'src/utils.rs')
-rw-r--r-- | src/utils.rs | 24 |
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) +} |