Гид по технологиям

Как автоматически отключать тачпад при подключённой мыши (Fedora 13)

• 6 min read • Linux • Обновлено 22 Nov 2025
Отключать тачпад при подключённой мыши — Fedora 13
Отключать тачпад при подключённой мыши — Fedora 13

Кому пригодится это руководство

  • Пользователи Fedora 13 на ноутбуках, у которых тачпад видится как PS/2-мышь.
  • Те, кто хочет, чтобы тачпад автоматически отключался при подключении внешней мыши и включался снова при её отключении.

Краткий план действий

  1. Установить утилиту xinput.
  2. Определить имя устройства тачпада и значение свойства “Device Enabled”.
  3. Создать правило udev для обработки событий add/remove.
  4. Обновить /etc/gdm/Init/Default, чтобы покрыть загрузку с уже подключённой мышью.
  5. Добавить скрипт в /etc/pm/sleep.d для восстановления после suspend/resume.

Требования и предпосылки

  • Fedora 13 (или совместимая версия).
  • Права root для создания файлов в /etc/udev/rules.d/, /etc/gdm/ и /etc/pm/sleep.d/.
  • Утилита xinput (из пакета xorg-x11-apps).

Важно: команды и имена устройств могут отличаться для других моделей ноутбуков. Пример в этом руководстве написан для Dell Precision M4500, где тачпад определяется как “PS/2 Generic Mouse”.

Установка xinput

Выполните как root:

 # yum -y install xorg-x11-apps

Эта команда установит xinput, который умеет перечислять устройства X и менять их свойства.

Как найти ваше устройство и свойство включения

Выполните:

$ xinput list

Пример вывода, который я видел на своём ноутбуке:

? Virtual core pointer                        id=2    [master pointer  (3)]  
?   ? Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]  
?   ? USB Optical Mouse                           id=10    [slave  pointer  (2)]  
?   ? PS/2 Generic Mouse                          id=13    [slave  pointer  (2)]

Чтобы увидеть свойства конкретного устройства, выполните:

$  xinput list-props "PS/2 Generic Mouse"

Типичный ответ начинающегося свойства:

Device 'PS/2 Generic Mouse':  
Device Enabled (119):    1  
...

Значение “Device Enabled” — это 1 (включено) или 0 (отключено). Для моего устройства команды были такие:

Отключить тачпад:

xinput --set-prop "PS/2 Generic Mouse" "Device Enabled" 0

Включить тачпад:

xinput --set-prop "PS/2 Generic Mouse" "Device Enabled" 1

Если у вас другое имя устройства — замените “PS/2 Generic Mouse” на своё точное имя из вывода xinput.

Правило udev: автоматическая реакция на hot-plug

Создайте файл /etc/udev/rules.d/61-touchpad.rules со следующим содержимым (как root):

# 61-touchpad.rules
#
# this rules file must be named 61* or later because it won't work
# unless it runs after '/lib/udev/rules.d/60-persistent-input.rules'
#
# NOTE: will only affect DISPLAY :0
#
# run:
#   udevadm test --action=add /sys/devices/platform/i8042/serio1/input/input6/mouse1
# or similar to test the following rules
#

# disable PS/2 touchpad on DISPLAY :0 if a mouse is added to the system
ACTION=="add", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop PS/2\ Generic\ Mouse Device\ Enabled 0'"  

# enable PS/2 touchpad on DISPLAY :0 if a mouse is removed from the system
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop PS/2\ Generic\ Mouse Device\ Enabled 1'"

Пояснения:

  • Имя файла 61-* важно, так как он должен выполняться после системных правил (например, 60-persistent-input.rules).
  • ENV{ID_INPUT_MOUSE}==”1” фильтрует события по устройствам-мышам.
  • Мы явно задаём DISPLAY=:0, потому что скрипт запускается системным демоном вне X-сессии.

Важно: экранирование пробелов в имени устройства (PS/2\ Generic\ Mouse) сохранено в соответствии с примерами xinput/udev.

GDM Init: проверить при загрузке, если мышь уже подключена

Если система загружается с уже подключённой внешней мышью, udev event add мог уже произойти до того, как наше правило применяется в контексте X. Чтобы покрыть этот случай, дополните /etc/gdm/Init/Default, добавив перед строчкой exit 0 следующий блок:

# disable touchpad if more than one mouse is available
if [ `ls -d /sys/class/input/mouse* | wc -l` -gt 1 ]; then
    /usr/bin/xinput --set-prop PS/2\ Generic\ Mouse Device\ Enabled 0  
fi

Этот фрагмент проверяет количество устройств в /sys/class/input/mouse* и отключает внутреннюю мышь, если внешняя обнаружена.

sleep.d: обработка suspend / resume

После suspend/resume тачпад может снова активироваться. Чтобы это исправить, создайте файл /etc/pm/sleep.d/99touchpad с содержимым (как root) и сделайте его исполняемым (chmod +x):

#!/bin/sh
#
# disable touchpad if more than one mouse is available
#
# NOTE: will only affect DISPLAY :0
#

disable_touchpad()
{
    /bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop PS/2\ Generic\ Mouse Device\ Enabled 0'  
}

case "$1" in
    thaw|resume)
        if [ `ls -d /sys/class/input/mouse* | wc -l` -gt 1 ]; then
            disable_touchpad
        fi
        ;;
    *) exit $NA
        ;;
esac

Этот скрипт выполняется при восстановлении системы и снова отключает тачпад, если присутствует больше одного устройства мыши.

Тонкости и распространённые проблемы

  • DISPLAY=:0. Скрипты запускаются не из X-сессии, поэтому нужно указать, на какой дисплей отправлять xinput. Если у вас другой DISPLAY (например :1), замените значение.
  • Имя устройства. На разных ноутбуках тачпад может называться по-другому (SynPS/2 Synaptics, ETPS/2 Elantech Touchpad и т.д.). Используйте xinput list, чтобы узнать точное имя.
  • Порядок правил udev. Правило должно исполняться после системных правил (поэтому имя 61-*; может потребоваться и другое число на другой системе).
  • Количество мышей. Проверка по /sys/class/input/mouse* простая и работает в большинстве случаев, но не идеальна для сложных конфигураций (несколько внутренних устройств, HID over USB, виртуальные мыши и т.д.).

Альтернативные подходы

  • Синпатические тачпады: утилита syndaemon или драйвер synclient умеет блокировать тачпад при вводе, но она не реагирует автоматически на hot-plug внешних мышей.
  • Настройки окружения рабочего стола: современные DE (GNOME, KDE) имеют опции “Отключать тачпад при подключенной мыши” — предпочтительный путь для новых дистрибутивов.
  • Скрипты, отслеживающие событие через udev + systemd user service: в новых системах systemd может предложить более надёжные хуки для пользовательских сессий.

Когда этот способ не сработает (контрпримеры)

  • Если тачпад управляется контроллером, который не представлен как отдельное устройство в xinput, то описанные команды будут бесполезны.
  • Если у вас несколько X-сессий на разных дисплеях, правило с DISPLAY=:0 может отключать неправильную сессию.
  • Если DE уже управляет устройствами ввода (например, NetworkManager-like power management), могут возникнуть конфликты.

Проверка и отладка

  1. Проверьте список устройств: xinput list.
  2. Убедитесь, что ваш xinput set-prop вручную отключает/включает устройство.
  3. Протестируйте udev rule локально:
# udevadm test --action=add /sys/devices/platform/i8042/serio1/input/input6/mouse1 2>&1 | grep "run:"

Вы увидите строку с запуском команды:

udevadm_test: run: '/bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop PS/2\ Generic\ Mouse Device\ Enabled 0''  
udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'

Аналогично для remove:

# udevadm test --action=remove /sys/devices/platform/i8042/serio1/input/input6/mouse1 2>&1 | grep "run:"

Если команда присутствует в выводе udevadm test, правило корректно интерпретируется udev.

Критерии приёмки

  • При подключении USB-мыши внутренний тачпад становится неактивным (проверить через xinput list-props).
  • При отключении внешней мыши тачпад возвращается в рабочее состояние.
  • После перезагрузки или загрузки с уже подключённой мышью тачпад отсутствует (или выключен).
  • После suspend/resume поведение сохраняется: тачпад остаётся выключенным при подключённой внешней мыши.

Быстрый чек-лист для внедрения (роль: системный администратор)

  • Установлен пакет xorg-x11-apps.
  • Найдено корректное имя тачпада через xinput list.
  • Создан /etc/udev/rules.d/61-touchpad.rules.
  • Обновлён /etc/gdm/Init/Default перед exit 0.
  • Добавлен и сделан исполняемым /etc/pm/sleep.d/99touchpad.
  • Проверено поведение при add/remove, reboot и resume.

Короткий глоссарий

  • xinput — утилита для управления устройствами X (перечисление и изменение свойств).
  • udev — подсистема Linux, обрабатывающая события устройств (hot-plug, remove и т.д.).
  • DISPLAY — идентификатор X-сессии (обычно :0 для первой графической сессии).

Итог и рекомендации

Это рабочее решение для аппаратов, где тачпад видится как PS/2-мышь. Если у вас более новый дистрибутив или современное окружение рабочего стола, проверьте сначала встроенные настройки DE — они могут сделать всё автоматически и безопаснее. Для сложных конфигураций рассмотрите создание systemd user-сервиса, привязанного к сессии пользователя.

Важно: не меняйте имена файлов правил произвольно — соблюдайте порядок выполнения udev-правил. Тестируйте на живой системе через udevadm test и вручную через xinput перед тем, как полагаться на автоматизацию.

Краткие шаги ещё раз:

  1. yum -y install xorg-x11-apps
  2. определить имя устройства через xinput list
  3. добавить /etc/udev/rules.d/61-touchpad.rules
  4. обновить /etc/gdm/Init/Default
  5. добавить /etc/pm/sleep.d/99touchpad и сделать исполняемым

Спасибо за внимание. Если у вас есть другой хардвер или вы нашли более универсальное решение — поделитесь, это улучшит инструкцию для других.

Резюме

  • Автоматическое отключение тачпада на Fedora 13 возможно с помощью xinput + udev + скриптов и будет работать для большинства PS/2-подобных тачпадов.
  • Проверяйте имена устройств, указывайте правильный DISPLAY и тестируйте правила udev прежде чем полагаться на них в повседневной работе.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро