On 18 Mrz., 22:18, [EMAIL PROTECTED] (John Fisher) wrote: > Hi Group, > > I have been absent a while, mainly because I have been getting better at > figuring out my own Python problems. But not this one... > > I have a timed loop performing certain tasks until a total period of > time has elapsed. I would like to be able to interrupt the loop or set > various flags during execution via keyboard input. raw_input seems to > just stop everything cold. I want the ability to just sacn the keyboard > buffer and see if something is there, then proceed normally in the loop > if there is no input in the buffer. Make sense? Totally easy? Let me > know... > > wave_man
I use this code: class _Getch: """Gets a single character from standard input. Does not echo to the screen.""" def __init__(self): try: self.impl = _GetchWindows() except ImportError: try: self.impl = _GetchUnix() except ImportError: self.impl = _GetchMacCarbon() def __call__(self): return self.impl() class _GetchUnix: def __init__(self): import tty, sys, termios # import termios now or else you'll get the Unix version on the Mac def __call__(self): import sys, 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 class _GetchWindows: def __init__(self): import msvcrt def __call__(self): import msvcrt return getch() class _GetchMacCarbon: """ A function which returns the current ASCII key that is down; if no ASCII key is down, the null string is returned. The page http://www.mactech.com/macintosh-c/chap02-1.html was very helpful in figuring out how to do this. """ def __init__(self): import Carbon def __call__(self): import Carbon if Carbon.Evt.EventAvail(0x0008)[0]==0: # 0x0008 is the keyDownMask return '' else: # # The event contains the following info: # (what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008) [1] # # The message (msg) contains the ASCII char which is # extracted with the 0x000000FF charCodeMask; this # number is converted to an ASCII character with chr() and # returned # (what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008) [1] return chr(msg & 0x000000FF) Best regards Hans Georg -- http://mail.python.org/mailman/listinfo/python-list