class Reline::KeyStroke
def match_unknown_escape_sequence(input)
def match_unknown_escape_sequence(input) idx = 0 return [:unmatched, nil] unless input[idx] == ESC_BYTE idx += 1 idx += 1 if input[idx] == ESC_BYTE case input[idx] when nil return [:matching, nil] when 91 # == '['.ord # CSI sequence idx += 1 idx += 1 while idx < input.size && CSI_PARAMETER_BYTES_RANGE.cover?(input[idx]) idx += 1 while idx < input.size && CSI_INTERMEDIATE_BYTES_RANGE.cover?(input[idx]) input[idx] ? [:matched, idx + 1] : [:matching, nil] when 79 # == 'O'.ord # SS3 sequence input[idx + 1] ? [:matched, idx + 2] : [:matching, nil] else if idx == 1 # `ESC char`, make it :unmatched so that it will be handled correctly in `read_2nd_character_of_key_sequence` [:unmatched, nil] else # `ESC ESC char` [:matched, idx + 1] end end end