Как отключить / включить / включить тачпад в ноутбуке Dell

7

Я пытаюсь настроить сенсорную панель на Ubuntu 16.04, но ни один из обычных методов не работает. например.

synclient touchpadOff=1

Он по-прежнему работает!

$ xinput set-prop $DEVICE_ID "Device Enabled" 0
$ xinput list-props 15 |head -n2
  Device 'SynPS/2 Synaptics TouchPad':
    Device Enabled (168):   0

... он все еще работает!

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

Бонусные баллы, если вы отвечаете на работы в Gnome-Shell, а также на Unity: -)

EDIT: вывод xinput по запросу в комментариях.

$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=12   [slave  pointer  (2)]
⎜   ↳ DLL06E4:01 06CB:7A13 Touchpad             id=13   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [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)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=16   [slave  keyboard (3)]

Nb. Я использовал 15 для $DEVICE_ID

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

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

#!/bin/bash
if xinput list-props 13 | grep "Device Enabled (168):.*1" >/dev/null
then
  xinput disable 13
  notify-send -u low -i mouse "Trackpad disabled"
else
  xinput enable 13
  notify-send -u low -i mouse "Trackpad enabled"
fi
    
задан artfulrobot 29.03.2016 в 09:53
источник

3 ответа

8

Вы можете отключить сенсорную панель с помощью этой команды:

xinput disable 13

Включить его обратно

xinput enable 13

Устройство не контролируется psmouse . Он контролируется synaptics_i2c . И это устройство 13.

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

Подробнее см. этот ответ .

Чтобы удалить неправильно обнаруженное устройство, вам нужно добавить параметр загрузки i8042.nopnp ядра.

    
ответ дан Pilot6 29.03.2016 в 10:08
источник
3

Использование gsettings

Если вы можете изменить настройки на gsettings , обычно это предпочтительный вариант. Поскольку вы можете включить / отключить сенсорную панель из System Settings, и я уверен, что System Settings использует gsettings , похоже, что метод, приведенный ниже, должен выполнять эту работу и на вашем Dell.

Скрипт для переключения тачпада

14,04

#!/usr/bin/env python3
import subprocess

key = "org.gnome.settings-daemon.peripherals.touchpad" ;val = "touchpad-enabled"
curr = subprocess.check_output(["gsettings", "get", key, val]).decode("utf-8").strip()
newval = "false" if curr == "true" else "true"
subprocess.Popen(["gsettings", "set", key, val, newval])

15,04 +

#!/usr/bin/env python3
import subprocess

key = "org.gnome.desktop.peripherals.touchpad" ;val = "send-events"
curr = subprocess.check_output(["gsettings", "get", key, val]).decode("utf-8").strip()
newval = "disabled" if curr == "'enabled'" else "enabled"
subprocess.Popen(["gsettings", "set", key, val, newval])

Чтобы использовать его

  1. Скопируйте сценарий выше, для вашей правильной версии Ubuntu, в пустой файл, сохраните его как toggle_touchpad.py
  2. Добавьте следующую команду в ярлык:

    python3 /path/to/toggle_touchpad.py
    

    Выберите: Системные настройки > «Клавиатура» > «Ярлыки» > «Пользовательские ярлыки». Нажмите «+» и добавьте команду:

    python3 /path/to/toggle_touchpad.py
    

Объяснение

Команда отключения тачпада:

для 14.04 :

gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled false

для 15.04 + :

gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled

Считать текущее состояние

Если мы используем скрипт для чтения текущих настроек командой:

gsettings get org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled

(14.04) или

gsettings get org.gnome.desktop.peripherals.touchpad send-events

(15,04 +)

Мы можем заставить скрипт установить противоположное значение и, таким образом, переключить тачпад.


EDIT; версия bash для переключателя

Просто чтобы быть полным, и потому, что OP указывал, что скрипт python работал, но не хотел использовать python , bash версии (ей) двух переключаемых скриптов:

14,04

#!/bin/bash

key="org.gnome.settings-daemon.peripherals.touchpad"
val="touchpad-enabled" ;curr="$key $val"

if [ "$(gsettings get $curr)" == "false" ]
then
 gsettings set $key $val true
else
 gsettings set $key $val false
fi

15,04 +

#!/bin/bash

key="org.gnome.desktop.peripherals.touchpad"
val="send-events" ;curr="$key $val"

if [ "$(gsettings get $curr)" == "'enabled'" ]
then
 gsettings set $key $val disabled
else
 gsettings set $key $val enabled
fi

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

  • Сохраните скрипт как toggle_touchpad.sh
  • добавьте следующую команду в специальный ярлык:

    /bin/bash /path/to/toggle_touchpad.sh
    
ответ дан Jacob Vlijm 29.03.2016 в 12:03
источник
1

Я тоже 16.04. Обычно я использую небольшой скрипт, который я нажимаю на клавиатуре. Когда я запускаю, он отключает мою сенсорную панель ... Но через несколько секунд после ее включения ...

Сценарий:

    #!/bin/sh

STATUS='synclient | grep TouchpadOff | awk '{ print $3}''

        if [ $STATUS != 1 ];
        then
                synclient touchpadOff=1;
        else
                synclient touchpadOff=2;
        fi
exit 0

Я не пытаюсь использовать его, прежде чем я увижу ваш вопрос ...

    
ответ дан monitor35 29.03.2016 в 10:13
источник

Ознакомьтесь с другими вопросами по меткам