Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: автоматическое отключение тачпада при подключении любой мышки  (Прочитано 14271 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Switch74

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
требуется чтобы тачпад отключался при подключении любой внешней мышки и включался при отключении внешней мышки
пробовал:
1. fn+F9 в Windows работало
в Lubuntu 24.04 Linux version 6.14.0-37-generic не работает совсем

2. gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled'
пробовал разные параметры так же ни какой реакции, тачпад всегда работает

3. xinput set-prop 11 "Device Enabled" 0;
данная команда работает, решил настроить через udev
создал скрипт в /home/switch/.mouse.sh
#!/bin/bash
if [ "$1" == "0" ]
then
xinput set-prop 11 "Device Enabled" 0;
echo "add">>"/home/switch/.mouse";
elif [ "$1" == "1" ]
then
xinput set-prop 11 "Device Enabled" 1;
echo "remove">>"/home/switch/.mouse";
fi

имитируем подключение внешней мышки, запускаем через терминал
"/home/switch/.mouse.sh 0"
тачпад отключается
в /home/switch/.mouse добавляется запись "add"
имитируем отключение внешней мышки, запускаем через терминал
"/home/switch/.mouse.sh 1"
тачпад включается
в /home/switch/.mouse добавляется запись "remove"

создал /etc/udev/rules.d/70-usb.automount.rules
ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", RUN+="/home/switch/.mouse.sh 0"
ACTION=="remove", SUBSYSTEMS=="usb", SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", RUN+="/home/switch/.mouse.sh 1"

тестил с двумя разными мышами проводной и беспроводной, в /home/switch/.mouse добавляются корректные записи
но вот xinput set-prop 11 "Device Enabled" 0; не отрабатывает тачпад работает при подключении внешней мышки

подскажите пожалуйста, в чём может быть проблема

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1226
    • Просмотр профиля
В контексте запуска.

udev запускает скрипты за пределами X-сессии. xinput же работает в текущей X-сессии.

Попробуйте так:


#!/bin/bash

export DISPLAY=:0

if [ "$1" == "0" ]
then
xinput set-prop 11 "Device Enabled" 0;
echo "add">>"/home/switch/.mouse";
elif [ "$1" == "1" ]
then
xinput set-prop 11 "Device Enabled" 1;
echo "remove">>"/home/switch/.mouse";
fi

Для X11 должно помочь. Для wayland - искать другое решение.

Оффлайн Switch74

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
К сожалению добавление
export DISPLAY=:0
не помогло
используется X11
« Последнее редактирование: 06 Января 2026, 13:39:35 от Switch74 »

Онлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8390
    • Просмотр профиля
"Ни богу свечка, ни чёрту кочерга."

Lubuntu 24.04...
...gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled'
ЛUbuntu нынче: Qt-KDE. А команда для: gtk-gnome. Так что, невзирая на рождество, никаких чудес.
Погружайся в Qt-шные дебри. Там их до... Проще иголку в стогу сена найти.

С Рождеством!

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 8092
  • Eternally
    • Просмотр профиля
export DISPLAY=:0
не помогло
Во-первых, запускать надо от пользователя, а не от root
RUN+="/usr/bin/su ВАШ_ЛОГИН /home/switch/.mouse.sh 0"
Во-вторых, XDG_RUNTIME_DIR тоже будет не лишним (добавьте, если не заработет)
export DISPLAY=:0
export XDG_RUNTIME_DIR=/run/user/1000

1000 - ваш uid.
узнать можно командой
id
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 HP EliteBook 745 G6 :: AMD Ryzen 5 PRO 3500U :: 8 GB DDR4 :: AMD Radeon Vega 8 :: XFCE

Оффлайн Switch74

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
export DISPLAY=:0
не помогло
Во-первых, запускать надо от пользователя, а не от root
RUN+="/usr/bin/su ВАШ_ЛОГИН /home/switch/.mouse.sh 0"
Во-вторых, XDG_RUNTIME_DIR тоже будет не лишним (добавьте, если не заработет)
export DISPLAY=:0
export XDG_RUNTIME_DIR=/run/user/1000

1000 - ваш uid.
узнать можно командой
id

Спасибо, помогло добавление XDG_RUNTIME_DIR и запуск /usr/bin/su switch /home/switch/.mouse.sh 0

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3557
  • Ubuntu 24.04 х64
    • Просмотр профиля
требуется чтобы тачпад отключался при подключении любой внешней мышки и включался при отключении внешней мышки
пробовал:
1. fn+F9 в Windows работало
в Lubuntu 24.04 Linux version 6.14.0-37-generic не работает совсем

2. gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled'
пробовал разные параметры так же ни какой реакции, тачпад всегда работает

3. xinput set-prop 11 "Device Enabled" 0;
данная команда работает, решил настроить через udev
создал скрипт в /home/switch/.mouse.sh
#!/bin/bash
if [ "$1" == "0" ]
then
xinput set-prop 11 "Device Enabled" 0;
echo "add">>"/home/switch/.mouse";
elif [ "$1" == "1" ]
then
xinput set-prop 11 "Device Enabled" 1;
echo "remove">>"/home/switch/.mouse";
fi

имитируем подключение внешней мышки, запускаем через терминал
"/home/switch/.mouse.sh 0"
тачпад отключается
в /home/switch/.mouse добавляется запись "add"
имитируем отключение внешней мышки, запускаем через терминал
"/home/switch/.mouse.sh 1"
тачпад включается
в /home/switch/.mouse добавляется запись "remove"

создал /etc/udev/rules.d/70-usb.automount.rules
ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", RUN+="/home/switch/.mouse.sh 0"
ACTION=="remove", SUBSYSTEMS=="usb", SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", RUN+="/home/switch/.mouse.sh 1"

тестил с двумя разными мышами проводной и беспроводной, в /home/switch/.mouse добавляются корректные записи
но вот xinput set-prop 11 "Device Enabled" 0; не отрабатывает тачпад работает при подключении внешней мышки

подскажите пожалуйста, в чём может быть проблема

1. Система немного неправильно распознала ваш ноутбук и/или клавиатуру. Соответственно комбинация и не раяботает
2. Лучше прописать вообще так:
gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled-on-external-mouse
Параметры disabled-on-external-mouse,enable,disable  без кавычек!

3. Лучше скрипт сделать так:
#!/bin/bash

export DISPLAY=:0
export XDG_RUNTIME_DIR=/run/user/$(id -u)

ID=$(echo `xinput list | grep Touchpad` | cut -d'=' -f 2 | cut -d' ' -f 1)
ENABLED=$(xinput --list-props $ID | grep 'Device Enabled' | cut -d':' -f 2 | xargs)
if [[ $ENABLED == 1 ]]; then
  xinput -disable $ID
  echo Touchpad is disabled
else
  xinput -enable $ID
  echo Touchpad is enabled
fi
HP Pro 840G6: Intel i5-8265U, 32GB DDR4, Intel 620, Crucial 256GB / CachyOS
HP Pro 840G6: Intel i5-8365U, 64GB DDR4, Intel 620, Samsung 990Pro 1TB / Ubuntu 24.04

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5788
  • Все по палатам!
    • Просмотр профиля
Зачем автоматически отключать... Только сегодня сделал вкл./выкл. тачпада на новом ноуте горячей клавишей.
Это же редкая операция, проще клавишу нажать
#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/XXXX0000:05 093A:0255 Mouse/s/.*id=([0-9]*).*/\1/p' )
state=$( xinput list-props "$TPdevice" | grep "Device Enabled" | grep -o "[01]$" )

if [ "$state" -eq '1' ];then
    xinput --disable "$TPdevice" && notify-send -i emblem-nowrite "Mouse" "Disabled"
else
    xinput --enable "$TPdevice" && notify-send -i emblem-nowrite "Mouse" "Enabled"
fi

read TPdevice <<< $( xinput | sed -nre '/XXXX0000:05 093A:0255 Touchpad/s/.*id=([0-9]*).*/\1/p' )
state=$( xinput list-props "$TPdevice" | grep "Device Enabled" | grep -o "[01]$" )

if [ "$state" -eq '1' ];then
    xinput --disable "$TPdevice" && notify-send -i emblem-nowrite "Touchpad" "Disabled"
else
    xinput --enable "$TPdevice" && notify-send -i emblem-nowrite "Touchpad" "Enabled"
fi
Извините, я все еще учусь

Оффлайн Switch74

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
огромное спасибо всем за ответы, скрипт писал для тестов, пока нашёл +- работающий вариант много чего перепробовал
ещё планировал модернизировать с отслеживанием подключенных нескольких мышей одновременно
на текущий момент мой скрипт похож на вариант EvangelionDeath

изначально пытался обойтись
gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled-on-external-mouse
но к сожалению у меня не реагировало на этот параметр, по этому пришлось искать другие способы
выше andytux писал
Цитировать
ЛUbuntu нынче: Qt-KDE. А команда для: gtk-gnome. Так что, невзирая на рождество, никаких чудес.
Погружайся в Qt-шные дебри. Там их до... Проще иголку в стогу сена найти.
поэтому забил на этот способ

скрипт для отключения тачпада по кнопке тоже сделал, на всякий случай, чем-то похож на скрипт SergeyIT
но мне нравится вариант именно с автоматикой, для меня так удобнее

не понимаю почему, но многие в подобных темах пишут про выключение тачпада по кнопке
такое ощущение что тут ни фига не ленивые люди :)
« Последнее редактирование: 07 Января 2026, 21:41:57 от Switch74 »

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5788
  • Все по палатам!
    • Просмотр профиля
многие в подобных темах пишут про выключение тачпада по кнопке
Так если кнопка исходно назначенная не работает... назначить другую
Извините, я все еще учусь

Оффлайн Switch74

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
многие в подобных темах пишут про выключение тачпада по кнопке
Так если кнопка исходно назначенная не работает... назначить другую
проблема не в том, что кнопка не работает, в Linuxе не было для неё почему-то команды, хотя на другие подобные на вроде: отключения дисплэя, регулировки яркости и громкости были настроены
руками прописал подобный скрипт и всё заработало как нужно

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 6182
    • Просмотр профиля
... проблема не в том, что кнопка не работает, в Linuxе не было для неё почему-то команды, хотя на другие подобные на вроде: отключения дисплэя, регулировки яркости и громкости были настроены
руками прописал подобный скрипт и всё заработало как нужно
- ты видимо просто не в курсе, но в мире Linux многое именно так и происходит (по крайней мере раньше это частенько именно так работало, сейчас почему-то всё реже и реже).

  ... вот например, кому-то что-то нужно, а ничего похожего и готового к использованию в дистре нет, тогда этот кто-то берёт и на коленке пишет это что-то, где-то с кем-то как-то делится, кто-то другой, тоже заинтересованный или просто энтузиаст, подхватывает идею и допиливает это коленописное творение, и так глядишь в следующем дистре, а может и через несколько релизов, это что-то и появляется  ::)

Оффлайн Switch74

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
по моему опыту как раз на оборот
раньше на ubuntu 16.04 у меня всё работало из коробки
чем дальше тем меньше работающего
из недавнего: тестил блютус джойстики на lubuntu 20.04 работают, а на 21.04 нет
смотрел недавно debian 13 сделали вроде красиво, заколебался настраивать: половина стандартных привычных функций отключена

я понимаю, что многое приходится до настраивать, но вспоминая ту же ubuntu 16.04 из коробки всё работало, было много настроек в GUI и многое было автоматизировано, сейчас же тупо кнопка отключения тачпада в новой версии перестала работать
« Последнее редактирование: 08 Января 2026, 20:58:20 от Switch74 »

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5788
  • Все по палатам!
    • Просмотр профиля
Switch74, сейчас модификаций железа огромное количество, даже один и тот же ноут идет с разным содержанием...

Раньше покупал все от асус'а - они проверяли работу в Linuxах и выкладывали на сайте. Сейчас этого нет. А предустановленный Ubuntu настраивают у себя, но нигде не пишут особенности. Ставишь другую ОС и приходится разбираться
« Последнее редактирование: 08 Января 2026, 21:23:42 от SergeyIT »
Извините, я все еще учусь

Оффлайн Switch74

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
я как раз про старый ноут и говорю, но ставил на него ubuntu сам после win, проблем на 16.04 не было
на этом же ноуте с новыми версиями что-то приходится допиливать, а то что работало исправно в 16.04 или не работает или убрали не понятно зачем

 

Страница сгенерирована за 0.074 секунд. Запросов: 22.