diff --git a/src/input/decode.rs b/src/input/decode.rs index 08d9f88b7..bc9eb2c4c 100644 --- a/src/input/decode.rs +++ b/src/input/decode.rs @@ -133,13 +133,13 @@ fn parse_escape_sequence( buffer: &mut Vec, have_escape_prefix: &mut bool, ) -> Option { - assert!(buffer.len() <= 2); + assert!(matches!(buffer.as_slice(), b"\x1b" | b"\x1b\x1b")); let recursive_invocation = buffer.len() == 2; let Some(next) = self.read_sequence_byte(buffer) else { return Some(KeyEvent::from_raw(key::ESCAPE)); }; let invalid = KeyEvent::from_raw(key::INVALID); - if recursive_invocation && next == b'\x1b' { + if !recursive_invocation && next == b'\x1b' { return Some( match self.parse_escape_sequence(buffer, have_escape_prefix) { Some(mut nested_sequence) => {