[Tutor] key detection
Alex Kleider
akleider at sonic.net
Wed May 6 07:24:14 CEST 2015
On 2015-05-05 15:36, Alan Gauld wrote:
> On 05/05/15 22:30, Jim Mooney Py3.4.3winXP wrote:
>> Can python detect a keypress?
The following works for my (on my Ubuntu platform) system
although probably won't be of much use on a Redmond OS.
#!/usr/bin/env python3
# file: 'readchar.py'
"""
Provides readchar()
Implementation of a way to get a single character of input
without waiting for the user to hit <Enter>.
(OS is Linux, Ubuntu 14.04)
"""
import tty, sys, termios
class ReadChar():
def __enter__(self):
self.fd = sys.stdin.fileno()
self.old_settings = termios.tcgetattr(self.fd)
tty.setraw(sys.stdin.fileno())
return sys.stdin.read(1)
def __exit__(self, type, value, traceback):
termios.tcsetattr(self.fd, termios.TCSADRAIN, self.old_settings)
def readchar():
with ReadChar() as rc:
return rc
def testrc():
print\
("Testing ReadChar: enter a character and we'll report what it is.")
while True:
char = readchar()
if ord(char) <= 32:
print("You entered character with ordinal {}, aka {}."
.format(ord(char), repr(char)))
else:
print("You entered character '{}'."
.format(char))
if char in "^C^D":
break
if __name__ == "__main__":
testrc()
To give credit where credit is due: I seem to remember cobbling this
together
based on something that was discussed on this mailing list quite some
time ago.
i.e. it's not original work:-)
More information about the Tutor
mailing list