Как отключить тачпад ноутбука при подключении 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 LauncherTerminal раздел после каждого подключения мыши.


ADVANCED

  1. Больше мышей?

    Уточнить, какие mouse следует отключить сенсорную панель, увеличив значение в "mouse" фрагмент, название на основе xinput список устройств.

  2. Испуганная мышь бежит от края до края?

    Мне пришлось запустить дополнительную команду для мыши - уменьшение 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?

  1. Было бы полезно узнать, как сделать это автоматически.

  2. Также любопытно, почему конфиг мыши не сохраняется (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

Пример из ArchLinux

Вопрос симлара

То, что разместил @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' "
Другие вопросы по тегам