code: def prepare_modes
      buf = [0, 0, 0, 0, 0, 0, ''].pack("IIIICCA*")
      $stdout.ioctl(TCGETS, buf)
      @old_modes = buf.unpack("IIIICCA*")
      new_modes = @old_modes.clone
      new_modes[3] &= ~ECHO # echo off
      new_modes[3] &= ~ICANON # one char @ a time
      $stdout.ioctl(TCSETS, new_modes.pack("IIIICCA*"))
      print "\e[2J" # clear screen
      print "\e[H" # go home
      print "\e[?47h" # kick xterm into the alt screen
      print "\e[?1000h" # kindly ask for mouse positions to make up for it
      self.cursor = false
      flush
    end
docs: had to convert these from C... fun