Я разместил решение наhttps://askubuntu.com/a/516336и скопирую -решение сюда.
Я написал сценарий Python, используя pyudev , который я оставляю работающим в фоновом режиме. Этот сценарий прослушивает события udev (, поэтому он очень эффективен )и запускает любой код, который я хочу. В моем случае он запускает xinput
команды для настройки моих устройств(ссылку на самую последнюю версию).
Вот короткая версия того же скрипта:
#!/usr/bin/env python3
import pyudev
import subprocess
def main():
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by(subsystem='usb')
monitor.start()
for device in iter(monitor.poll, None):
# I can add more logic here, to run different scripts for different devices.
subprocess.call(['/home/foo/foobar.sh', '--foo', '--bar'])
if __name__ == '__main__':
main()