SE_BMMF/code/awsd.py
2022-02-22 13:46:01 +01:00

57 lines
1.2 KiB
Python

import sys
import socket
import os
def read_char():
import sys, termios, tty
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
def read_view(f):
view = f.readline()
if not view:
return
for x in range(2, len(view)):
line = f.readline()
if not line:
return
view += line
return view
def main(host='localhost', port=62688):
s = socket.socket()
s.connect((host, port))
f = s.makefile()
commands = {'w':'^', 'a':'<', 's':'v', 'd':'>', 'W':'^', 'A':'<', 'S':'v', 'D':'>' }
while True:
try:
view = read_view(f)
if not view:
break
os.system('clear')
sys.stdout.write(view)
cmd = read_char()
if cmd == 'q':
break
cmd = commands[cmd]
s.send(cmd if sys.version_info[0] < 3 else str.encode(cmd))
except Exception as e:
print(e)
break
s.close()
if __name__ == '__main__':
main( * sys.argv[1:])