Как отключить тачпад во время набора текста? На Ubuntu 16.04 syndaemon не работает

Я хочу отключить сенсорную панель во время набора текста. Я попробовал это:

syndaemon -i 1 -d -t -K

Он должен деактивировать нажатие и прокрутку на сенсорной панели на 1 секунду и игнорировать комбинации модификатор + клавиши, но после настройки syndaemon вроде описано ничего не изменилось. Тачпад всегда активен и очень раздражает.

Я использую Ubuntu 16.04 на Dell Precision 5510.

8 ответов

Решение

У вас могут быть запущены два драйвера сенсорной панели, и тогда syndaemon будет взаимодействовать с неправильным драйвером. У меня была такая же проблема на Dell XPS 13, и эта ветка ( http://ubuntuforums.org/showthread.php?t=2316240) помогла мне.

Если вы также видите два устройства с сенсорной панелью, попробуйте отключить одно. Поскольку у вас другой компьютер, приведенные в ссылке инструкции могут быть применимы или не применимы к вам буквально.

Из упомянутого поста процедура такова:

открыть файл /usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf как root с вашим текстовым редактором Вставьте следующий текст:

# Disable generic Synaptics device, as we're using
# "DLL0704:01 06CB:76AE Touchpad"
# Having multiple touchpad devices running confuses syndaemon
Section "InputClass"
Identifier "SynPS/2 Synaptics TouchPad"
      MatchProduct "SynPS/2 Synaptics TouchPad"
      MatchIsTouchpad "on"
      MatchOS "Linux"
      MatchDevicePath "/dev/input/event*"
      Option "Ignore" "on"
EndSection

Перезагрузите или перезапустите Xorg с помощью команды sudo systemctl restart lightdmКредит переходит к дорогой от ubuntuforums.org.

Начиная с января 2018 года, Dell имеет официальную страницу в своей базе знаний по проблемам Ubuntu Touchpad/Mouse. На странице описывается это исправление для отключения "SynPS/2 Synaptics TouchPad", а также предлагается перейти к libinput, а не к synaptics в качестве драйвера коврика для мыши.

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator
  • Откройте индикатор сенсорной панели и щелкните значок индикатора.
  • Вы можете изменить настройки (на вкладке действий), чтобы "отключить сенсорную панель при наборе текста"

Ура!

Я использую Ubuntu 17.10 и пробовал другое решение, предложенное здесь, в основном не работает. Специально для сенсорной панели программного обеспечения при запуске в Ubuntu 17.10 просто отключите тачпад, и я не смог найти способ включить его без перезагрузки ноутбука. теперь я нашел это решение, я думаю, которое все еще сейчас работает довольно хорошо: просто используйте эту команду,

synclient PalmDetect=1

Это, по крайней мере, предотвратит ненужное нажатие ладони на сенсорную панель, что в итоге дает лучшую жизнь.

В Ubuntu 19.04 я обнаружил, что было достаточно (для моих нужд) просто отключить функцию "Tap to Click":

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

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

После нескольких месяцев поиска решения я решил написать простую программу на Python для отключения сенсорной панели во время набора текста. Добавление программы в Startup Applications, чтобы она запускалась при каждом запуске компьютера. Вам нужно бежать xinput list чтобы определить идентификатор вашей клавиатуры, в моем случае это 17.

xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=11   [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=12   [slave  pointer  (2)]
⎜   ↳ DLL082A:01 06CB:76AF Touchpad             id=14   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=18   [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)]
    ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=13   [slave  keyboard (3)]
    ↳ Intel Virtual Button driver               id=15   [slave  keyboard (3)]
    ↳ Intel HID events                          id=16   [slave  keyboard (3)]
    **↳ AT Translated Set 2 keyboard                id=17   [slave  keyboard (3)]**
    ↳ Dell WMI hotkeys                          id=19   [slave  keyboard (3)]
    ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=20   [slave  keyboard (3)]

Вот программа

import time 
import subprocess
import threading

def main():
    subprocess.call('gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true', shell=True)
    p = subprocess.Popen('xinput test 17', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    clickTime = [0, 0]
    def checkTime():
        keys = [37, 50, 62, 64, 105, 108, 133]
        while True:
            out = p.stdout.readline()

            if len(out) < 1:
                break
            key = int(out.split()[-1])
            if key not in keys:
                clickTime[0] = time.time()

    t = threading.Thread(target=checkTime)
    t.start()

    lastTime = 0
    touchpad = True
    while True:
        inactive = time.time() - clickTime[0]
        # print ('inactive for', inactive)
        if inactive > 1:            
            if not touchpad:
                print ('Enable touchpad')
                subprocess.call('gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true', shell=True)
            touchpad = True
        else:
            if touchpad:
                print ('Disable touchpad')
                subprocess.call('gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click false', shell=True)
            touchpad = False
        time.sleep(0.5)

    retval = p.wait()

if __name__ == '__main__':
    main()

Изучив параметры для xinput, я нашел эффективное и простое решение для отключения сенсорной панели Synaptics с помощью Ubuntu 16.04 и Lubuntu 16.04.

В окне терминала дайте себе административный доступ, введя sudo -s и введя свой пароль.

Используя ваш любимый редактор, такой как leafpad или gedit, создайте новый файл скрипта:

leafpad /usr/local/bin/tpadoff

и вставьте следующее:

#!/bin/bash
#/usr/local/bin/tpadoff - turn off touchpad
xinput --disable  'SynPS/2 Synaptics TouchPad'

Сохраните файл и выйдите из редактора. Затем введите команду:

chmod 755 /usr/local/bin/tpadoff

сделать файл исполняемым. Вы можете повторить, чтобы создать файл tpadon, просто измените "--disable" на "--enable".

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

Записи рабочего стола можно создать, открыв новое окно терминала и используя ваш любимый редактор (в этом примере я снова использую leafpad):

cd Desktop
leafpad tpadoff.desktop

и вставьте следующий текст: [Desktop Entry] Имя =TouchPad Off Комментарий = Отключить Touchpad Exec=/usr/local/bin/tpadoff Terminal=false Тип = Приложение

Сохраните файл и выйдите из редактора. Затем введите следующую команду:

 chmod 775 tpadoff.desktop 

Вы также можете повторить создание tpadon.desktop, изменив все ссылки "off" на "on".

По завершении у вас будет два способа выключить (и при желании включить) сенсорную панель, дважды щелкнув значок на рабочем столе или введя "tpadoff" в окне терминала.

Если ваша сенсорная панель отличается, вам, возможно, придется использовать "xinput" в окнах терминала, чтобы найти точный синтаксис для вашей сенсорной панели. Затем отредактируйте файл / usr / local / bin / tpadoff, чтобы он соответствовал тому, что сообщил xinput.

Для пользователей Kubuntu...

На Kubuntu 16.04 - чтобы отключить тачпад во время набора текста, мне пришлось снять флажок "Отключить касания и только прокрутку" в настройках-> Устройства ввода-> тачпад-> Включить / отключить тачпад. Это может показаться очевидным, но...

Xubuntu 20.4.1:

  1. Нажмите на панель запуска меню
  2. Введите тачпад в поле поиска
  3. Щелкните мышью и сенсорной панелью
  4. Установите сенсорную панель в раскрывающемся меню устройства
  5. Щелкните вкладку Touchpad под раскрывающимся списком Device.
  6. Установите флажок "Отключить тачпад при вводе текста" в разделе "Общие".
xinput list |
while read line; do
    if [[ $line == *Touchpad* ]]; then
        tid="$(echo $line | cut -d '=' -f 2 | cut -c 1-2)"
        xinput set-prop $tid "Device Enabled" 0
    fi
done

или более кратко

xinput list | sed -nre 's/^.*Touchpad.*\sid=(\S+).*$/\1/p' | xargs -I{} -- xinput set-prop {} 'Device Enabled' 0
Другие вопросы по тегам