Як я можу відключити тачпад під час набору тексту? У 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 / ...
Дуг

4
Спробуйте -syndaemon -i 1.0 -d -K
doug

1
@doug я спробував це, і це нічого не змінило
marsUbuntux

@doug, чи варто спробувати видалити драйвер synaptics та драйвер Xorg libinput?
marsUbuntux

Проблема в тому, що тоді у вас не буде налаштувань тачпадів у налаштуваннях системи, і вам доведеться вручну додавати, як приклад у звіті про помилку. Те, що ви намагалися з syndaemon спочатку, було насправді за замовчуванням, тобто. - відключити натискання, щоб натиснути під час введення, але не вимкнути переміщення курсору. Чи натисніть, щоб натиснути кнопку "Відключено" під час введення?
дог

Відповіді:


36

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

Якщо ви також бачите два пристрої тачпада, спробуйте відключити один. Оскільки у вас інший комп’ютер, інструкції за посиланням можуть бути або не можуть бути буквально застосовними для вас.

З посади, про яку йдеться, процедура:

відкрити файл /usr/share/X11/xorg.conf.d/51-synaptics-quirks.confяк корінь у текстовому редакторі. Вставте такий текст:

# 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 переходить до ddarling з ubuntuforums.org.

З січня 2018 року Dell має офіційну сторінку у своїй Базі знань з питань сенсорної панелі / миші Ubuntu . На цій сторінці описано це виправлення, щоб відключити "SynPS / 2 Synaptics TouchPad", а також пропонується перейти до libinput, а не до синаптики як драйвера клавіатури.


була така ж ситуація, як і ви:> DLL06E5: 01 06CB: 7A13 Touchpad id = 14 [підлеглий покажчик (2)]> SynPS / 2 Synaptics TouchPad id = 16 [підлеглий покажчик (2)] Зробив те саме, що описано у посиланні ви опублікували. Це спрацювало! Тепер тачпад працює як я хочу. Дякую
marsUbuntux

Згадане рішення працювало і для Dell Lattitude 3570.
chanux

Це дивовижно, я завжди вважав, що це неможливо виправити. Це економить мій ноутбук. Дуже дякую. Це дійсно корисно.
realhu

Оскільки ця відповідь заслуговує на більше кредиту, я її оновив, щоб уточнити трохи більше.
William S

2
Можливо, варто витягнути рішення з форуму у відповідь, у випадку, якщо посилання відійде.
BeepDog

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

Ура!


1
Це доступно у вигляді розширення gnome: 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: Чи зберігається ця команда перезавантаження?
Lonnie Best

2

Переглянувши параметри "xinput", я знайшов ефективне та просте рішення для відключення тачпада Synaptics за допомогою Ubuntu 16.04 та Lubuntu 16.04

У вікні терміналу надайте адміністративний доступ, ввівши "sudo -s" та ввівши свій пароль.

Скориставшись улюбленим редактором, наприклад листочком або 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, просто змініть "- вимкнути" на "--виключити".

Закінчивши, вийдіть з вікна терміналу, щоб відключити доступ адміністратора.

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

cd Desktop
leafpad tpadoff.desktop

та вставте наступний текст: [Запис на робочий стіл] Ім'я = TouchPad Off Comment = Вимкнення Touchpad Exec = / usr / local / bin / tpadoff Terminal = false Type = Приклад

Збережіть файл та вийдіть із редактора. Потім введіть таку команду:

 chmod 775 tpadoff.desktop 

Ви також можете повторити, щоб створити tpadon.desktop, змінивши всі посилання 'off' на 'on'.

Після завершення у вас буде два способи вимкнути (і необов'язково включити) тачпад, двічі клацнувши значок робочого столу або ввівши «tpadoff» у вікні терміналу.

Якщо ваша тачпад інша, можливо, вам доведеться використовувати 'xinput' у термінальних вікнах, щоб знайти точний синтаксис для своєї тачпада. Потім відредагуйте файл "/ usr / local / bin / tpadoff", щоб відповідати тому, що повідомляв xinput.


1
Питання полягає у відключенні тачпада під час набору тексту (тобто автоматично) - тому, поки ви не даєте прямого відповіді, я дуже вдячний за якість вашої відповіді.
guntbert

2

Після місяців пошуку рішення я вирішив написати просту програму Python, щоб відключити тачпад під час набору тексту. Додавання програми до програм запуску для запуску кожного разу при запуску комп'ютера. Вам потрібно запустити, 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 я вважав, що було достатньо (для моїх потреб) просто відключити функцію "Натисніть, щоб натиснути":

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

Однак наслідком цього є те, що вам потрібно буде користуватися кнопками сенсорної панелі (сподіваємось, у вас є кнопки), щоб виконати клацання. Для мене це справедливий компроміс.

Якщо у вас фактично немає кнопок "ліворуч і праворуч" (окремо від сенсорної панелі), ви можете замість цього відкалібрувати чутливість сенсорної панелі . Про це я дізнався від Пітера Хаттера, у цьому звіті про помилки .

Я б хотів, щоб виробники ноутбуків не робили ноутбуки з невідступними тачпадами. Ці тачпад, які знаходяться на клавішах клавіатури (замість відступів), є вадою дизайну.

Будь ласка, повідомте виробникам ноутбуків про проблеми, які вони вам заподіяли цим поганим дизайном, інакше вони сліпо продовжуватимуть це робити у майбутніх моделях.


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

1

Для користувачів Kubuntu ...

На Kubuntu 16.04 - щоб відключити тачпад під час введення, мені довелося зняти прапорець під назвою "Вимкнути натискання та лише прокрутку" у налаштуваннях-> пристрої введення-> тачпад-> Увімкнути / відключити тачпад. Це може здатися очевидним, але ...


ubuntu 16.04 працює
Nazmul Hasan

На 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
Ласкаво просимо до Ask Ubuntu! Я рекомендую відредагувати цю відповідь, щоб розширити її конкретними деталями щодо того, що робить ця команда (послідовність). Проста команда (послідовність) рідко вважається відповіддю. (Дивіться також Як я можу написати гарну відповідь? Для загальних порад про те, які типи відповідей вважаються найціннішими на Ask Ubuntu.)
Девід Фоерстер,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.