]> Repositorios git - scryer-prolog.git/commitdiff
Ignore `KeyEventKind::Release` events when reading a char
authorJavier Sagredo <[email protected]>
Tue, 3 Dec 2024 23:05:10 +0000 (00:05 +0100)
committerJavier Sagredo <[email protected]>
Tue, 3 Dec 2024 23:05:10 +0000 (00:05 +0100)
src/machine/system_calls.rs

index 247989196f55cb5337bb7f597f86df75f78dfa92..371b97e14ac4e0bc91889d84f49726840fe58765 100644 (file)
@@ -68,7 +68,7 @@ use cpu_time::ProcessTime;
 use std::time::{Duration, SystemTime};
 
 #[cfg(feature = "repl")]
-use crossterm::event::{read, Event, KeyCode, KeyEvent, KeyModifiers};
+use crossterm::event::{read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers};
 #[cfg(feature = "repl")]
 use crossterm::terminal::{disable_raw_mode, enable_raw_mode};
 
@@ -111,12 +111,14 @@ pub(crate) fn get_key() -> KeyEvent {
     loop {
         let key_ = read();
         if let Ok(Event::Key(key_)) = key_ {
-            match key_.code {
-                KeyCode::Char(_) | KeyCode::Enter | KeyCode::Tab => {
-                    key = key_;
-                    break;
+            if key_.kind != KeyEventKind::Release {
+                match key_.code {
+                    KeyCode::Char(_) | KeyCode::Enter | KeyCode::Tab => {
+                        key = key_;
+                        break;
+                    }
+                    _ => (),
                 }
-                _ => (),
             }
         }
     }