Check for keystroke
Brian
ThisIsNotMyReal at ddress.com
Wed Sep 22 20:15:22 EDT 2004
It took a little bit of coaxing, but I finally got it to run.
Unfortunately, it still pauses while waiting for a keystroke. Am I
missing something?
Fixed code:
import termios, sys, os
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd) # Old term info for restoration later
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ICANON & ~termios.ECHO
new[6][termios.VMIN] = 1
new[6][termios.VTIME] = 0
termios.tcsetattr(fd, termios.TCSANOW, new)
while 1:
try:
command = os.read(fd, 1)
print command+">", #Echo manually
if command == 'p':
termios.tcsetattr(fd, termios.TCSADRAIN, old)
#Terminal back to line mode
break
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, old)
Lee Phillips <lee at leeHYPHENphillips.org.invalid> wrote in
news:slrncl3upc.b6e.lee at bad-bart.lcp.nrl.navy.mil:
> import termios
> # in your method:
> old = termios.tcgetattr(fd) # Old term info for restoration
> later new = termios.tcgetattr(fd)
> new[3] = new[3] & ~termios.ICANON & ~termios.ECHO
> new[6][termios.VMIN] = 1
> new[6][termios.VTIME] = 0
> termios.tcsetattr(fd, termios.TCSANOW, new)
>
> while 1:
> try:
> command = os.read(fd, 1)
> print command+">", #Echo manually
> if command == '0':
> termios.tcsetattr(fd, termios.TCSADRAIN, old)
> #Terminal back to line mode
> break
> elif command == 'b':
> # do something....
> # and so on.....
> finally:
> termios.tcsetattr(fd, termios.TCSAFLUSH, old)
>
More information about the Python-list
mailing list