diff --git a/crates/nu-cli/src/commands/keybindings_listen.rs b/crates/nu-cli/src/commands/keybindings_listen.rs index 56106dc43b..9e2139c617 100644 --- a/crates/nu-cli/src/commands/keybindings_listen.rs +++ b/crates/nu-cli/src/commands/keybindings_listen.rs @@ -98,7 +98,14 @@ pub fn print_events(config: &Config, span: Span) -> Result { loop { let event = crossterm::event::read() .map_err(|err| IoError::new_internal(err, "Could not read event"))?; - if event == Event::Key(KeyCode::Esc.into()) { + // match Esc with no modifiers, but ignoring KeyEventState (e.g. NumLock/CapsLock) + if let Event::Key(KeyEvent { + code: KeyCode::Esc, + modifiers: crossterm::event::KeyModifiers::NONE, + kind: crossterm::event::KeyEventKind::Press, + .. + }) = event + { break; } // stdout.queue(crossterm::style::Print(format!("event: {:?}", &event)))?;