aboutsummaryrefslogtreecommitdiff
path: root/dev_add
blob: ba7ab6b42179a802460a0ee0065684245983c7bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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()