Я хочу, чтобы моя сенсорная панель автоматически отключилась, когда внешняя мышь подключена и включена, когда ее нет. Я попытался использовать touchpad-indicator, но это не удается в случаях, когда компьютер был усыпан с подключенной мышью и проснулся с отключенной мышью.
Я попытался сделать следующий сценарий в демона решить эту проблему, но я не могу заставить ее работать:
#!/bin/bash
declare -i TID
declare -i MID
TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
MID=`xinput list | grep -Eo 'Mouse\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
if [ $MID -gt 0 ]
then
xinput disable $TID
else
xinput enable $TID
fi
Я попробовал start-stop-daemon -S -x ./myscript.sh -b
и setsid ./myscript.sh >/dev/null 2>&1 < /dev/null &
и nohup ./myscript 0<&- &>/dev/null & и даже ./myscript.sh &
Все они возвращают некоторое 4-значное число, которое, я думаю, должно быть PID начатого процесса, но когда я запускаю lxtask, процессов с этим PID нет, даже если я tick "просмотреть все процессы". И, конечно, это не сработает!
Хорошо, я сделал для него правило udev, и, как сказал @terdon, это гораздо более чистый способ
Итак, благодаря этому руководству я создал «touchpad_toggle.rules», файл в /etc/udev/rules.d/ (требует доступа root) и заполнил его двумя строками:
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority", RUN+="/home/username/on.sh"
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority", RUN+="/home/username/off.sh"
намного более чистый путь
Содержимое этих сценариев включения и выключения оболочки - это просто кастрированная версия скрипта в моем вопросе. Пример - off.sh:
#!/bin/bash
declare -i TID
TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
xinput disable $TID
Вам нужно использовать xinput включить $ TID в on.sh
И не забудьте добавить скрипт в мой вопрос (или тот, который предложил @terdon, но без цикла) для автозапуска сеанса, как он сказал вам в своем ответе.
Вот и все, но я должен добавить одно:
Если у вас есть тачпад Synaptics (у меня Elantech, поэтому он не подходит для меня), вы можете заменить свои сценарии (пути, которые вы пишете после RUN + =), с помощью простой команды /usr/bin/synclient TouchpadOff=0 и 1 соответственно