1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #!/usr/bin/env python
import sys, termios, contextlib, liblo
try:
target = liblo.Address(5555)
except liblo.AddressError, err:
print str(err)
sys.exit()
@contextlib.contextmanager
def raw_mode(file):
old_attrs = termios.tcgetattr(file.fileno())
new_attrs = old_attrs[:]
new_attrs[3] = new_attrs[3] & ~(termios.ECHO | termios.ICANON)
try:
termios.tcsetattr(file.fileno(), termios.TCSADRAIN, new_attrs)
yield
finally:
termios.tcsetattr(file.fileno(), termios.TCSADRAIN, old_attrs)
def main():
print 'exit with ^C or ^D'
with raw_mode(sys.stdin):
try:
while True:
ch = sys.stdin.read(1)
if not ch or ch == chr(4):
break
#print '%02x' % ord(ch),
liblo.send(target, "/foo", ord(ch)) # ------------ LIBLO
except (KeyboardInterrupt, EOFError):
pass
if __name__ == '__main__':
main() |
Partager