From 0b971752a6054a1441ecfc41e11613cb7b205fe8 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 12 Feb 2022 21:31:03 +0100 Subject: Add dev_add, a script that adds a device and removes it when terminated --- dev_add | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 dev_add diff --git a/dev_add b/dev_add new file mode 100755 index 0000000..ba7ab6b --- /dev/null +++ b/dev_add @@ -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() -- cgit v1.2.3