On Sun, Feb 19, 2017 at 12:13 AM, Douglas Crawford via vcf-midatlantic < vcf-midatlantic@lists.vintagecomputerfederation.org> wrote:
:) How to poll the keyboard for a keypress, non blocking.
Python <http://rosettacode.org/wiki/Category:Python>
#!/usr/bin/env python import __future__import sysif sys.version_info.major < 3: import thread as _threadelse: import _threadimport time
try: from msvcrt import getch # try to import Windows versionexcept ImportError: def getch(): # define non-Windows version import tty, termios fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno()) ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return ch
char = None def keypress(): global char char = getch()
_thread.start_new_thread(keypress, ()) while True: if char is not None: print("Key pressed is " + char.decode('utf-8')) break print("Program is running") time.sleep(5)
PureBasic <http://rosettacode.org/wiki/Category:PureBasic>
Returns a character string if a key is pressed during the call of Inkey(). It doesn't interrupt (halt) the program flow.
If special keys (non-ASCII) have to be handled, RawKey() should be called after Inkey().
k$ = Inkey()
I use python for some little things here too Never having tried this in python, so I had to look this up not sure where that code which you found came from I just looked on the python org website And there appears to be a "getkey" library https://pypi.python.org/pypi/getkey/0.6.5 eg. from getkey import getkey, keys key = getkey() if key == keys.UP: ... # Handle the UP key elif key == keys.DOWN: ... # Handle the DOWN key else: # Handle other text characters buffer += key print(buffer)