Включить / отключить сенсорную панель

Мне удалось установить Ubuntu 16.04 на мой Asus UX501 VW, но некоторые из моих ярлыков не работают. Я не собираюсь исправлять их все, а только один: ярлык, который позволяет мне включать или отключать сенсорную панель, чтобы я мог писать длинные документы, работая с сенсорной панелью.

Я пытался найти его в Google, но я ничего не получил.

Может кто-нибудь объяснить мне, как это исправить, пожалуйста? Спасибо!

10 ответов

Я создал этот bash-скрипт из ответа Негуса. Он находит и переключает устройство TouchPad. Вы можете настроить собственный ярлык к нему в настройках системы.

#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/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 input-touchpad "Touchpad" "Enabled"
fi

Я устанавливаю Ctrl + Shift + F9 для включения и выключения сенсорной панели следующим образом:

Редактировать: вам может потребоваться сделать ваш скрипт исполняемым с помощью команды chmod +x filename или введите /bin/bash /filepath в поле Command окна пользовательских ярлыков.

Вы хотите ярлык, но вы можете легко разместить 2 сценария на рабочем столе и выполнить их.

Сначала идите в терминал. Тип xinput, Пример вывода:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_1.3M             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys 

Найдите тачпад. В этом примере тачпад указан как id=12

Создайте первый скрипт с этим:

#!/bin/bash
xinput enable 12

Сохраните это и назовите это touchpadenable.shи в терминале пометьте его как исполняемый с помощью:

chmod +x touchpadenable.sh

Сделайте то же самое снова, но переименуйте файл как touchpaddisable.sh (или что угодно), а не

xinput enable 12

Используйте команду

xinput disable 12

Сохраните, отметьте как исполняемый файл, и вы сможете запускать сценарии с рабочего стола. Примечание. Возможно, вам придется щелкнуть правой кнопкой мыши сценарии, выбрать свойства и разрешить их выполнение.

Вы должны сделать как ответ negusp, сначала проверьте ваше сенсорное устройство, и вы увидите что-то вроде этого:

~ $ xinput
Pointer ID указателя виртуального ядра =2    [главный указатель (3)]
Pointer ↳ Указатель XTEST виртуального ядра id=4    [ведомый указатель (2)]
Ar ↳ PixArt Dell MS116 Оптическая мышь USB id=10   [подчиненный указатель (2)]
PS ↳ SynPS/2 Synaptics TouchPad                id=14   [ведомый указатель (2)]
↳ ↳ DLLC6B2:00 06CB:75BF ID сенсорной панели =12   [ведомый указатель (2)]
Id ID виртуальной клавиатуры =3    [мастер клавиатура (2)]
    Id Виртуальное ядро ​​XTEST клавиатура id=5    [подчиненная клавиатура (3)]
    Id Кнопка питания id=6    [подчиненная клавиатура (3)]
    Id Идентификатор видео шины =7    [подчиненная клавиатура (3)]
    Id Кнопка питания id=8    [подчиненная клавиатура (3)]
    Id Кнопка Sleep id=9    [подчиненная клавиатура (3)]
    Ted Integrated_Webcam_HD                      id=11   [подчиненная клавиатура (3)]
    ↳ AT Translated Set 2 клавиатура id=13   [подчиненная клавиатура (3)]
    ↳ Горячие клавиши Dell WMI id=15   [подчиненная клавиатура (3)]
    Wireless Горячие клавиши DELL ID =16   [подчиненная клавиатура (3)]

В моем случае это устройство с id=12, теперь создайте скрипт bash с именем "toggle-touch" в папке "Рабочий стол" в папке с именем "bin", будет "~/Desktop/bin" и скопируйте следующий код, проверьте переменная устройства указывает на мой touch id=12, исправьте это в вашем случае:

#!/bin/bash

device=12
state=`xinput list-props "$device" | grep "Device Enabled" | grep -o "[01]$"`

if [ $state == '1' ];then
  xinput --disable $device
else
  xinput --enable $device
fi

Установите для этого разрешения на выполнение скрипта:

chmod 775 /Desktop/bin/toggle-touch

Наконец, вы можете добавить этот путь к ".bashrc" из вашей домашней папки, просто добавьте эту строку в конец файла:

PATH=$PATH:~/Desktop/bin

обновите путь с помощью:

. .bashrc

Тогда вы можете выполнить этот скрипт из любого места, я надеюсь, что это поможет.

В моем Ubuntu 18.04 ответ Алмаса Дусала не работал, пока я не изменил "p" на строчные TouchPad в следующей строке его кода:

read TPdevice <<< $( xinput | sed -nre '/Touchpad/s/.*id=([0-9]*).*/\1/p' )

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

#!/bin/bash

state=$( gsettings get org.gnome.desktop.peripherals.touchpad send-events )

if [ "$state" = "'enabled'" ];then
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled' \
        && notify-send -i touchpad-disabled-symbolic "Touchpad" "Disabled"
else
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled' \
        && notify-send -i input-touchpad-symbolic "Touchpad" "Enabled"
fi

В Ubuntu 22.04 вы должны использоватьgsettingsтеперь для оконных серверов X11 и Wayland, например:

      # disable the touchpad
gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled
# enable the touchpad
gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled
# enable the touchpad automatically if an external mouse is NOT plugged in, but
# disable it automatically if one is
gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled-on-external-mouse

# get the current setting
gsettings get org.gnome.desktop.peripherals.touchpad send-events

См. мой полный ответ и более подробную информацию здесь: Как включить/отключить тачпад/трекпад в Ubuntu 22.04 из командной строки

Вам нравится ответ @Almas Dusal, который похож на ответ @negusp, за исключением того, что вместо этого используйте мой модифицированный скрипт:

read TPdevice <<< $( xinput | sed -nre '/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"
    zenity --info --text "Touchpad DISABLED" --timeout=2
else
    xinput --enable "$TPdevice"
    zenity --info --text "Touchpad ENABLED" --timeout=2
fi

Теперь, назначьте ему комбинацию клавиш Ctrl + Alt + P (или что бы вы ни выбрали ["P" означает touch'P'ad в моем случае]). Мое дополнение к приведенному выше сценарию zenity Самозакрывающаяся часть всплывающего окна, которую я опишу более подробно в своем ответе здесь ( https://superuser.com/a/1310142/425838).

Теперь, когда я использую ярлык выше, я вижу это всплывающее окно, которое автоматически закрывается через 2 секунды:

И если я нажимаю его снова, я получаю это всплывающее окно, которое автоматически закрывается через 2 секунды:

Отлично!

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

Примечание: все это прекрасно работает в Ubuntu 18.04, а также в более старых версиях. Я тестировал его в Ubuntu 18.04 и Ubuntu 14.04. Вот скриншот из окна настроек ярлыка от 18.04:

Я использую эту команду, чтобы установить ярлык в Ubuntu без файла сценария.
Это просто и работает нормально!

      bash -c "xinput set-prop $(xinput list --id-only 'Elan Touchpad') 'Device Enabled' $(expr 1 - $(xinput list-props $(xinput list --id-only 'Elan Touchpad') | grep 'Device Enabled' | grep -o '[01]$'))"

Где значение Elan Touchpadимя моего устройства.
Чтобы получить имя, используйте команду xinput.

Конфигурация ярлыка Ubuntu

Другой альтернативой является загрузка этого расширения gnome https://extensions.gnome.org/extension/935/toggle-touchpad/

Создайте скрипт оболочки и вставьте в него код, указанный ниже, и назовите его touchPadDisable.sh.

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput disable $temp

Создайте другой сценарий оболочки и вставьте в него код ниже и назовите его touchPadEnable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput enable $temp

Первый скрипт отключит сенсорную панель, а второй - сенсорную панель.

Вы можете добавить этот скрипт в пользовательские сочетания клавиш.

Оставив здесь мой сценарий (более или менее такой же, как указано выше). Работает из коробки, нет необходимости предварительного просмотра идентификатора устройства.

#!/bin/bash

function query_device_id {
    xinput list | grep -i touchpad | sed 's/.*id=\([0-9]*\).*/\1/g'
}

let device_id=$(query_device_id)

let state=$(xinput list-props $device_id | grep Enabled | awk '{print $4;}')

let new_state=$((1 - $state))

xinput set-prop $device_id "Device Enabled" $new_state
Другие вопросы по тегам