Как отключить тачпад в ноутбуке при подключении мыши (Linux, Ubuntu)

Как я уже писал ранее, отключение тачпада при подключении мыши — самая простая и естественная вещь, которая только может происходить. Я удивлён, что такой функционал не предусмотрен по умолчанию в каждой операционной системе, но куда ж деваться :-(.

Итак, если вы пользуетесь всевозможными системами на основе Линукс (включая Ubuntu), для автоматического отключения тачпада есть огромное количество способов. Например, можно написать два правила для udev (/home/user надо будет заменить на ваш домашний каталог):

SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=1"
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=0"

Этот вариант идеально подойдёт для простых случаев. Но например, если вы пользуетесь Gnome (или менеджером GDM), то, скорее всего, ничего не выйдет.

В Ubuntu (практически любой версии, будь то Oneric Ocelot, Precise Pangolin, Raring Ringtail, Saucy Salamander, Trusty Tahr или ещё что) можно поставить пакет touchpad-indicator:

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator

Или сразу одной строкой:

sudo add-apt-repository ppa:atareao/atareao && sudo apt-get update && sudo apt-get install touchpad-indicator

Тот же пакет, например, можно установить и в ArchLinux:

yaourt touchpad-indicator

Самые продвинутые создатели, похоже, у KDE: в любом дистрибутиве в KDE (или в KUbuntu) можно просто войти в настройки тачпада и приказать ему отключаться при подключении мышки.

Для самостоятельного включения/выключения можно использовать следующий скрипт (найдено в сети, оригинальный автор неизвестен):

#!/bin/bash
tpid=`xinput list | grep SynPS | sed 's/.*id\=\([0-9]\+\).*/\1/g'`
declare -i status
status=`xinput list-props ${tpid} | grep Device\ Enabled | sed -e 's/.*\:[ \t]\+//g'`
if [ 0 -eq ${status} ] ; then
    xinput enable ${tpid}
else
    xinput disable ${tpid}
fi

Основная идея состоит в том, что любое устройство ввода можно отключить при помощи xinput, надо лишь найти его идентификатор и сохранить в переменную tpid. В любом случае, если вы будете запускать эту команду самостоятельно, она будет работать. А вот в udev загнать её так просто не получится: надо будет подсунуть ей правильный .Xauthority файл.

Полезное