client-barcode: Turn off console echo (experiment for now, idea by Andy Gunschl)

This commit is contained in:
Sebastian Pipping 2011-10-19 05:55:36 +02:00
parent 2e83f6fbb3
commit 9880b1ebc1
1 changed files with 21 additions and 1 deletions

View File

@ -19,6 +19,8 @@ import os
import time import time
import urllib2 import urllib2
import select import select
import termios
import atexit
from display import Display from display import Display
from thread import start_new_thread, allocate_lock from thread import start_new_thread, allocate_lock
@ -458,8 +460,25 @@ def read_line(f, timeout, timeout_func):
return '' return ''
def enable_echo(fd, enabled):
(iflag, oflag, cflag, lflag, ispeed, ospeed, cc) = termios.tcgetattr(fd)
if enabled:
lflag |= termios.ECHO
else:
lflag &= ~termios.ECHO
new_attr = [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
termios.tcsetattr(fd, termios.TCSANOW, new_attr)
def main(): def main():
debugging = bool(os.environ.get('BARCODE_PLUGIN_DEBUG', False))
colorama.init() colorama.init()
if not debugging:
atexit.register(enable_echo, sys.stdin.fileno(), True)
enable_echo(sys.stdin.fileno(), False)
status = Status() status = Status()
global scroll_line1,scroll_line2 global scroll_line1,scroll_line2
global myDisplay global myDisplay
@ -474,7 +493,8 @@ def main():
while True: while True:
clear() clear()
status.dump() status.dump()
print_prompt() if debugging:
print_prompt()
line = read_line(sys.stdin, timeout=3*60.0, timeout_func=status.logout) line = read_line(sys.stdin, timeout=3*60.0, timeout_func=status.logout)
if line: if line:
myDisplay.write('\x0cRFID/Barcode:\n%20s' % line[:20]) myDisplay.write('\x0cRFID/Barcode:\n%20s' % line[:20])