class Reline::KeyStroke

def match_unknown_escape_sequence(input)

returns match status of CSI/SS3 sequence and matched length
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