LJ/clitools/generators/drawingTests/keyborad_input.py

78 lines
1.5 KiB
Python

# code exemple find at : https://stackoverflow.com/questions/2408560/python-nonblocking-console-input
import sys
import select
import tty
import termios
def isData():
return select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], [])
old_settings = termios.tcgetattr(sys.stdin)
try:
tty.setcbreak(sys.stdin.fileno())
i = 0
while 1:
#if i % 100000 == 0:
# print("i", i)
#i += 1
if isData():
c = sys.stdin.read(1)
print(c)
if c == '\x1b': # x1b is ESC
break
finally:
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
### for windows
#import msvcrt
#
#num = 0
#done = False
#while not done:
# print(num)
# num += 1
#
# if msvcrt.kbhit():
# print "you pressed",msvcrt.getch(),"so now i will quit"
# done = True
#
## cross platforme (but may be a bit huge to import pygame...)
#import pygame
#from pygame.locals import *
#
#def display(str):
# text = font.render(str, True, (255, 255, 255), (159, 182, 205))
# textRect = text.get_rect()
# textRect.centerx = screen.get_rect().centerx
# textRect.centery = screen.get_rect().centery
#
# screen.blit(text, textRect)
# pygame.display.update()
#
#pygame.init()
#screen = pygame.display.set_mode( (640,480) )
#pygame.display.set_caption('Python numbers')
#screen.fill((159, 182, 205))
#
#font = pygame.font.Font(None, 17)
#
#num = 0
#done = False
#while not done:
# display( str(num) )
# num += 1
#
# pygame.event.pump()
# keys = pygame.key.get_pressed()
# if keys[K_ESCAPE]:
# done = True
#