diff options
-rwxr-xr-x | dev_add | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -0,0 +1,37 @@ +#!/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() |