     for e in events
       try
         handler = @['nv_'+e[0]]
-        # optimize for put, we group the chars together
         if handler?
-          if e[0] == 'put'
-            handler.call @, (i[0] for i in e.slice(1)).join ''
+          # optimize for put, we group the chars together
+          if e[0].toString() == 'put'
+            handler.call @, e[1..]
           else
             for args in e[1..]
               handler.apply @, args

        @ctx.lineTo xx, y - @devicePixelRatio * offs[(xx / @devicePixelRatio) % 8]
      @ctx.stroke()

    @cursor_col += str.length

  nv_resize: (col, row) ->
    @total_col = col


  nv_normal_mode: -> document.body.className = 'normal-mode'

  nv_put: (chars) ->
    return if chars.length == 0

    # paint background
    @clear_block @cursor_col, @cursor_row, chars.length, 1

    # paint string
    @ctx.font = @get_canvas_font()
