Как переключить тачпад в зависимости от того, подключена ли мышь?

Я хочу, чтобы моя сенсорная панель автоматически отключилась, когда внешняя мышь подключена и включена, когда ее нет. Я попытался использовать 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 "просмотреть все процессы". И, конечно, это не сработает!

1
задан 23 June 2016 в 17:50

1 ответ

Хорошо, я сделал для него правило 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 соответственно

9
ответ дан 24 May 2018 в 10:29
  • 1
    просто nitpick, так как вам нужен root-доступ для создания правила udev любым способом, может быть лучше сохранить файл где-то, кроме домашнего каталога. Например: /usr/local/bin или /opt/touchpad-toggle/bin/. – Dan 15 December 2017 в 14:34
  • 2
    @Dan отказался. Все, что связано с настройками пользователя, лучше в домашнем каталоге. К сожалению, правила udev, настройки менеджера входа в систему и несколько других вещей fated копируются в / * каждый раз, когда вы ломаете / разделяете, если вы, конечно, не восстановите снимок. Поэтому, имея больше вещей, хранящихся в / home /, просто удобство. Итак, ваш совет не имеет значения – mekkanizer 16 December 2017 в 11:20
  • 3
    Но поскольку он был добавлен как правило udev, не означает ли это, что он будет работать для любого пользователя, независимо от того, кто его зарегистрировал? – Dan 18 December 2017 в 12:56
  • 4
    Я не проверял, поскольку я никогда не использовал Linux на общих компьютерах. В любом случае, любой пользователь, который раздражен этим опрятным правилом udev, не является моим интересом. Если они настолько чувствительны, они могут получить собственную установку – mekkanizer 18 December 2017 в 17:26

Другие вопросы по тегам:

Похожие вопросы: