#!/usr/bin/python3 import contextlib import os import selectors import sys import time control_path = os.path.expanduser(sys.argv[1]) if not control_path or control_path[0] != '/': control_path = os.path.join(os.path.expanduser('~/.cache/inputfwd'), sys.argv[1]) if not os.path.exists(control_path): sys.stderr.write('Control path "%s"->"%s" does not exist.\n' % (sys.argv[1], control_path)) devpath = sys.argv[2] if not os.path.exists(devpath): sys.stderr.write('Device path "%s" does not exist.\n' % devpath) with contextlib.ExitStack() as stack: sel = stack.enter_context(selectors.DefaultSelector()) f = stack.enter_context(open(control_path, 'w')) f.write('add ' + devpath + '\n') f.flush() # sleep until interrupted sel.register(f, selectors.EVENT_READ) try: sel.select() sys.stderr.write('Remote end hung up.\n') except KeyboardInterrupt: sys.stderr.write('Interrupted, removing device and existing\n') f.write('remove ' + devpath + '\n') f.flush()