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

17

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

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

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

Рей
источник

Ответы:

24

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

#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/TouchPad|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
Там редко нужно цеплять grepи sed. Вы можете легко объединить два к sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'.
Дэвид Фёрстер
3
Небольшое исправление в скрипте для Ubuntu 17.10 после получения строки ошибки 6: [:: ожидается целочисленное выражение, не
Грегор
1
Отличный ответ! Мои единственные дополнения - добавить zenity --info --text "Touchpad DISABLED" --timeout=2и zenity --info --text "Touchpad ENABLED" --timeout=2к вашим ifи к elseблокам, соответственно, всплывающее окно, которое сообщает о новом состоянии, а затем автоматически закрывается через 2 секунды.
Габриэль Стейплс
1
Смотрите мое небольшое изменение здесь: askubuntu.com/a/1109515/327339
Габриэль Стейплс
1
Обновление: некоторые системы отображаются Touchpadвместо TouchPadвывода xinput, поэтому я обновил свой ответ для поиска обоих. Кроме того, я сделал это правильно исправить проблему с колесом медленной прокрутки, используя imwheel. См. Полный ответ
Габриэль Стейплс
11

Вы хотите ярлык, но вы можете легко разместить 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
источник
Эй, спасибо за ответ! Я буду использовать что-то вроде этого! Как вы думаете, это было бы возможно, если бы я сделал это на 1 файле сценария, чтобы я мог использовать тот же ярлык?
Рей
@Thomas Посмотрите этот ответ: askubuntu.com/questions/597395/…
negusp
6

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

~ $ xinput
Id ID указателя виртуального ядра = 2 [главный указатель (3)]
Pointer ↳ Указатель XTEST виртуального ядра id = 4 [ведомый указатель (2)]
Ar ↳ Оптическая мышь PixArt Dell MS116 с идентификатором USB = 10 [ведомый указатель (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 14 [ведомый указатель (2)]
↳ ↳ DLLC6B2: 00 06CB: 75BF ID сенсорной панели = 12 [указатель ведомого (2)]
Id ID виртуальной клавиатуры = 3 [мастер клавиатура (2)]
    Id ID клавиатуры виртуального ядра XTEST = 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)]
    ↳ Горячие клавиши 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

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

hermeslm
источник
1

В моем 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
Самули Асмала
источник
1

Протестировано и работает на Ubuntu 14.04, 16.04 и 18.04.

Вам нравится ответ @Almas Dusal , который похож на ответ @ negusp , за исключением того, что вместо этого используйте мой измененный сценарий, поскольку он имеет 3 дополнительных преимущества ( ОБНОВЛЕНИЕ: ниже добавлены преимущества 1 и 3, 12 сентября 2019 г. ):

  1. Он ищет выходные данные xinputкак для TouchpadAND TouchPad, так как некоторые системы имеют заглавную букву P, а другие - нет. Это делает мой скрипт совместимым с большим количеством систем (надеюсь, ВСЕ системы).
  2. Он добавляет 2-секундные автоматически закрывающиеся всплывающие окна zenity, чтобы показать, включена ли ваша сенсорная панель в настоящее время или отключена. Смотрите скриншоты этих всплывающих окон ниже.
  3. Он корректно фиксирует скорость колеса прокрутки, включая imwheel(что устраняет проблему с медленным колесом прокрутки в Ubuntu / Linux при использовании колеса прокрутки мыши), когда вы используете мышь, и отключая его imwheelпри использовании сенсорной панели, поскольку в imwheelпротивном случае прокрутка сенсорной панели становится по-настоящему глючной. когда включено. Не забудьте раскомментировать соответствующие строки, чтобы сделать эту работу. Пример: # imwheel -b "4 5"и # killall imwheel.
#!/bin/bash

# GS_toggle_touchpad.sh
# - toggle the touchpad on and off

# Gabriel Staples
# Written: 2 Apr. 2018 
# Updated: 12 Sept. 2019 

# References:
# - /ubuntu//a/874865/327339
# - /ubuntu/844151/enable-disable-touchpad/1109515#1109515 <-- my own ans!

# Search for id number of "TouchPad" OR "Touchpad" in `xinput` list; manually type `xinput` to see all your devices
read TouchPadDeviceId <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' ) 

state=$( xinput list-props "$TouchPadDeviceId" | grep "Device Enabled" | grep -o "[01]$" )

echo "TouchPadDeviceId = $TouchPadDeviceId"
echo "state = $state"

if [ "$state" -eq '1' ];then
    xinput --disable "$TouchPadDeviceId"
    zenity --info --text "Touchpad DISABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # imwheel -b "4 5"
else
    xinput --enable "$TouchPadDeviceId"
    zenity --info --text "Touchpad ENABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # killall imwheel
fi

Обратите внимание, что функция imwheel требуется только в том случае, если вы следуете этому ответу, чтобы также зафиксировать скорость колеса прокрутки: навсегда исправить скорость прокрутки Chrome .

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

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

введите описание изображения здесь

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

введите описание изображения здесь

Отлично!

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

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

введите описание изображения здесь

Связанный:

  1. Навсегда исправить скорость прокрутки Chrome
Габриэль Стейплс
источник
Не включается на моем HP Probook. В xinput есть 2 пункта, SynPS/2 Synaptics TouchPadи SYNA306A:00 06CB:CD0B Touchpad. Первое выполнение отключает одно, второе отключает другое. Оттуда будет переключаться второй, но никогда не первый.
rtaft
0

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

#!/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
erosb
источник
0

Создайте сценарий оболочки и вставьте в него код, указанный ниже, и назовите его 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

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

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

Шринивас Кулькарни
источник