Включить / отключить сенсорную панель
Мне удалось установить 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
.
Другой альтернативой является загрузка этого расширения 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