old_contents: try:
      from msvcrt import kbhit
  except ImportError:
      import termios, fcntl, sys, os
  
      """
      Returns True if a key was pressed
      Reads from standard input
      """
      def kbhit():
          fd = sys.stdin.fileno()
          oldterm = termios.tcgetattr(fd)
          newattr = termios.tcgetattr(fd)
          newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
          termios.tcsetattr(fd, termios.TCSANOW, newattr)
          oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
          fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
          try:
              while True:
                  try:
                      c = sys.stdin.read(1)
                      return True
                  except IOError:
                      return False
          finally:
              termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
              fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
new_contents: try:
      from msvcrt import kbhit
  except ImportError:
      import termios, fcntl, sys, os
  
      """
      Returns True if a key was pressed
      Reads from standard input
      """
      def kbhit():
          fd = sys.stdin.fileno()
          oldterm = termios.tcgetattr(fd)
          newattr = termios.tcgetattr(fd)
          newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
          termios.tcsetattr(fd, termios.TCSANOW, newattr)
          oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
          fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
          try:
              while True:
                  try:
                      c = sys.stdin.read(1)
                      return True
                  except IOError:
                      return False
          finally:
              termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
              fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
  
subject: Update kbhit.py