Ignore KeyEventKind::Release events when reading a char
This commit is contained in:
@@ -68,7 +68,7 @@ use cpu_time::ProcessTime;
|
|||||||
use std::time::{Duration, SystemTime};
|
use std::time::{Duration, SystemTime};
|
||||||
|
|
||||||
#[cfg(feature = "repl")]
|
#[cfg(feature = "repl")]
|
||||||
use crossterm::event::{read, Event, KeyCode, KeyEvent, KeyModifiers};
|
use crossterm::event::{read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers};
|
||||||
#[cfg(feature = "repl")]
|
#[cfg(feature = "repl")]
|
||||||
use crossterm::terminal::{disable_raw_mode, enable_raw_mode};
|
use crossterm::terminal::{disable_raw_mode, enable_raw_mode};
|
||||||
|
|
||||||
@@ -111,6 +111,7 @@ pub(crate) fn get_key() -> KeyEvent {
|
|||||||
loop {
|
loop {
|
||||||
let key_ = read();
|
let key_ = read();
|
||||||
if let Ok(Event::Key(key_)) = key_ {
|
if let Ok(Event::Key(key_)) = key_ {
|
||||||
|
if key_.kind != KeyEventKind::Release {
|
||||||
match key_.code {
|
match key_.code {
|
||||||
KeyCode::Char(_) | KeyCode::Enter | KeyCode::Tab => {
|
KeyCode::Char(_) | KeyCode::Enter | KeyCode::Tab => {
|
||||||
key = key_;
|
key = key_;
|
||||||
@@ -120,6 +121,7 @@ pub(crate) fn get_key() -> KeyEvent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
disable_raw_mode().expect("failed to disable raw mode");
|
disable_raw_mode().expect("failed to disable raw mode");
|
||||||
key
|
key
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user