Как отключить тачпад ноутбука при подключении USB-мыши (и медленнее последнего)?
У меня нет function key
/ фн для этого:( .
Есть идеи? Может быть, есть настройки или команды?
Другие предметы НЕ были полезны:
gpointing-device-settings
(настройка автоотключения снята);kde-config-touchpad
(не может быть установлен в одиночку);- понятия не имею, как использовать
udevd
,
3 ответа
РЕШЕНИЕ - не автоматическое
Приведенный ниже скрипт, при выполнении, отключит сенсорную панель, если подключена какая-либо мышь, и покажет уведомление.
touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);
if xinput | grep -i "mouse" | grep -i "pointer"
then xinput set-prop $touchpad_id "Device Enabled" 0 |
notify-send "Disabling the touchpad..." ""
else xinput set-prop $touchpad_id "Device Enabled" 1 |
notify-send "The touchpad is now enabled." ""
fi
Добавлена и обратная ситуация, хотя в моем случае сенсорная панель в любом случае включается при отключении мыши. Я сохранил скрипт в файле и запускаю его из Unity Launcher
Terminal
раздел после каждого подключения мыши.
ADVANCED
Больше мышей?
Уточнить, какие
mouse
следует отключить сенсорную панель, увеличив значение в"mouse"
фрагмент, название на основеxinput
список устройств.Испуганная мышь бежит от края до края?
Мне пришлось запустить дополнительную команду для мыши - уменьшение
cursor acceleration
так как он безумно установлен на 10 на каждом соединении. На самом деле через некоторое время я сделал скрипт автоопределения (он получает идентификатор мыши и ее опору для скорости; не знаю о производительностиcut
)...touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2); mouse_id=$(xinput | grep -i "mouse" | grep -i 'pointer' | cut -f2 | cut -d '=' -f2); mouse_prop=$(xinput list-props $mouse_id | grep -i "velocity" | cut -f2 | cut -d '(' -f2 | cut -d ')' -f1 ); if xinput | grep -i "mouse" | grep -i "pointer" then xinput set-prop $touchpad_id "Device Enabled" 0 | xinput set-prop $mouse_id $mouse_prop 3 | notify-send "Disabling the touchpad..." "" else xinput set-prop $touchpad_id "Device Enabled" 1 | notify-send "The touchpad is now enabled." "" fi
Сегодня многому научился зарабатывать выше:D .
Кто-то PRO?
Было бы полезно узнать, как сделать это автоматически.
Также любопытно, почему конфиг мыши не сохраняется (2.).
Решение - автоматическое
Спасибо Эсамо и его работе.
Чтобы добавить триггеры AUTO для подключения мыши при запуске:
Создайте файл: /etc/udev/rules.d/10-local.rules
Заполните этим содержанием: (замените $USER своим именем пользователя)
ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh false"
ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh true"
Пример:
ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh false"
ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh true"
Затем разместите свой сценарий, где вы хотите. Я поместил это в ~ / scripts
touchpad_switcher.sh
#!/bin/sh
enabled=$1
touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);
if $enabled
then
xinput set-prop $touchpad_id "Device Enabled" 1 | notify-send "The touchpad is now enabled." ""
else
xinput set-prop $touchpad_id "Device Enabled" 0 | notify-send "Disabling the touchpad..." ""
fi
Не забудьте добавить разрешения на выполнение:
chmod +x touchpad_switcher.sh
Теперь просто перезагрузите компьютер! (просто перезапуск udev не работает...)
Некоторые другие полезные вещи:
Некоторая информация о правилах Udev
То, что разместил @David Drozd, не работает для меня в Ubuntu 16.04.
Похоже на трюк с xinput
не работать в udev
, Только synclient TouchpadOff=[0|1]
работал. Также ACTION="remove"
не работал исключительно.
Я, наконец, получил его, когда добавил ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'"
Полное решение: создать файл /etc/udev/rules.d/10-local.rules
со следующей строкой (замените $USER своим именем пользователя)
ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1' "