def handle_char char
if char == "\n" && !@multiline
handler.call self, @text if handler
self.value = ''
elsif char == :backspace
if @index > 0
@index -= 1
@text.slice! @index, 1
end
elsif char == :delete
if @index < @text.size
@text.slice! @index, 1
end
elsif char == :left
@index -= 1 if @index > 0
elsif char == :right
@index += 1 if @index < @text.size
elsif char == :home
@index = 0
elsif char == :end
@index = @text.size
elsif char.is_a? String
if text.size < width
@text.insert @index, char
@index += 1
end
end
redraw
end