class Reline::KeyStroke

def expand(input)

def expand(input)
  input = compress_meta_key(input)
  lhs = key_mapping.keys.select { |item| start_with?(input, item) }.sort_by(&:size).last
  return input unless lhs
  rhs = key_mapping[lhs]
  case rhs
  when String
    rhs_bytes = rhs.bytes
    expand(expand(rhs_bytes) + expand(input.drop(lhs.size)))
  when Symbol
    [rhs] + expand(input.drop(lhs.size))
  when Array
    rhs
  end
end