aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2022-02-12 21:31:03 +0100
committerAnton Khirnov <anton@khirnov.net>2022-02-12 21:31:03 +0100
commit0b971752a6054a1441ecfc41e11613cb7b205fe8 (patch)
tree8a03f225e0f04142e3bc6e2d220b3ba8c9ab83ab
parentfda2b732ad41129559b94f56a6c655068ed70f57 (diff)
Add dev_add, a script that adds a device and removes it when terminated
-rwxr-xr-xdev_add37
1 files changed, 37 insertions, 0 deletions
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()