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


42

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

syndaemon -i 1 -d -t -K

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

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


1
Нажатие, чтобы щелкнуть по умолчанию отключено во время набора текста, перемещение / прокрутка курсора - нет. Существует способ отключить саму сенсорную панель во время набора текста, но не с помощью syndaemon / synclient. Однако этот метод приведет к исчезновению настроек системы> Мышь и сенсорная панель> Настройки сенсорной панели. Некоторая информация здесь - bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/…
doug

4
Попробуйте -syndaemon -i 1.0 -d -K
Даг

1
@doug Я попробовал это, и это ничего не изменило
marsUbuntux

@doug Должен ли я попробовать вместо этого удалить драйвер synaptics и драйвер liborgput Xorg?
marsUbuntux

Проблема в том, что у вас не будет настроек сенсорной панели в системных настройках, и вам придется вручную добавить, как в примере с сообщением об ошибке. То, что вы пытались с syndaemon, изначально было задано по умолчанию, т.е. - отключить нажатие, чтобы нажать во время набора текста, но не отключить перемещение курсора. Отключено ли нажатие, чтобы нажать во время ввода?
Даг

Ответы:


36

У вас могут быть запущены два драйвера сенсорной панели, и тогда 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 Credit, чтобы перейти на сайт ubuntuforums.org.

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


была такая же ситуация, как у вас:> DLL06E5: 01 06CB: 7A13 Идентификатор сенсорной панели = 14 [указатель подчиненного устройства (2)]> SynPS / 2 Идентификатор сенсорной панели Synaptics = 16 [Указатель подчиненного устройства (2)] Сделал то же самое, что описано в ссылке Вы отправили. Это сработало! Теперь тачпад работает так, как я хочу. Спасибо вам
marsUbuntux

Упомянутое там решение работает и для Dell Lattitude 3570.
chanux

Это удивительно, я всегда думал, что это не поправимо. Это спасает мой ноутбук. Большое спасибо. Это действительно полезно.
Реал

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

2
Возможно, стоит потянуть решение с форума на ответ, если ссылка исчезнет.
BeepDog

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

Ура!


1
Это доступно как расширение гнома: extensions.gnome.org/extension/131/touchpad-indicator
zamnuts

2
не работал для меня на Ubuntu Budgie-Remix 16.04.3
r3wt

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

Я случайно проголосовал против (должно быть, я набрал сон) и теперь не могу удалить его, если ответ не обновлен. (Очевидно, что askubuntu.com настроен таким образом.) Я пытался добавить только пробелы, но нужно минимум 8 (разных?) Символов. Если вы хотите отредактировать ответ и добавить что-то вроде «Предложение: установите автозапуск приложения на сенсорной панели, чтобы вам не приходилось запускать его вручную при каждом входе в систему», тогда я должен увидеть уведомление и затем удалить его. мой отрицательный голос.
st2000

10

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

synclient PalmDetect = 1

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


Это очень хорошее решение и исправление в одну строку. Я это делал раньше, но потерял. Спасибо за публикацию!
Томас Диньян

Не идеально, но очень помогает 17.10, спасибо.
Джек

Это работает отлично. Я удивлен, что это не по умолчанию, но это просто способ Linux, я думаю.
Гунчар

@tareqalam: эта команда сохраняется после перезагрузки?
Лонни Бест

2

Изучив параметры для 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.


1
Вопрос в том, чтобы отключить тачпад во время набора текста (т.е. автоматически), поэтому, хотя вы не даете прямого ответа, я очень ценю качество вашего ответа.
Гюнтберт

2

После нескольких месяцев поиска решения я решил написать простую программу на 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 и опроса, чтобы увидеть, происходят ли новые события каждые 0,5 секунды. Это оказывает минимальное влияние на активность процессора, но было бы неплохо, если бы был способ вызвать поведение, которое происходит только на событиях клавиатуры. Есть ли причина, по которой вы исключили определенные клавиши, такие как стрелка влево и пробел, или это просто личные предпочтения?
theferrit32

2

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

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

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

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

Желаю производителям ноутбуков, чтобы не делали ноутбуки с неубранными тачпадами. Эти сенсорные панели, которые находятся на одном уровне с клавишами клавиатуры (а не отшлифованы), являются недостатком дизайна.

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


1
Подтвердил, что это работает очень хорошо. Я заметил незначительную вещь, которую я могу игнорировать: когда мои жирные ладони касаются сенсорной панели во время набора текста, я вижу, как курсор мыши немного перемещается, но, по крайней мере, он не позволяет ему щелкать где-то еще, что очень зря. В идеале, я все еще мог бы иметь поведение Tap To Click, но, по крайней мере, на моем ноутбуке, эта функциональность все равно никогда не работала так хорошо. Таким образом, компромисс действительно справедливый.
bgoodr

1

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

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


Ubuntu 16.04 работает
Назмул Хасан

Нет такой подопции в Ubuntu 18.04, ни в настройках, ни в твиках.
dskrvk

0
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

пожалуйста исправьте форматирование
Pierre.Vriens

1
Добро пожаловать в Спросите Ubuntu! Я рекомендую отредактировать этот ответ, чтобы расширить его конкретными сведениями о том, что делает эта команда (последовательность). Простая команда (последовательность) редко считается ответом. (См. Также Как написать хороший ответ? Для общего совета о том, какие ответы считаются наиболее ценными в Ask Ubuntu.)
Дэвид Фёрстер,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.