Jak mogę wyłączyć touchpad podczas pisania? Na Ubuntu 16.04 syndaemon nie działa

42

Chcę dezaktywować touchpad podczas pisania. Próbowałem tego:

syndaemon -i 1 -d -t -K

Powinien dezaktywować dotykanie i przewijanie na touchpadzie przez 1 sekundę i ignorować kombinacje modyfikatora + klawiszy, ale po ustawieniu syndaemonopisanym nic nie ulega zmianie. Touchpad jest zawsze aktywny i bardzo denerwujący.

Używam Ubuntu 16.04 na Dell Precision 5510.

marsUbuntux
źródło
1
Funkcja „dotknij, aby kliknąć” jest domyślnie wyłączona podczas pisania, nie porusza się / nie przesuwa kursora. Istnieje sposób na wyłączenie samego touchpada podczas pisania, ale nie poprzez syndaemon / synclient. Jednak metoda spowoduje zniknięcie opcji Ustawienia systemowe> Mysz i touchpad> Ustawienia touchpada. Kilka informacji tutaj - bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/...
Doug
4
Spróbuj -syndaemon -i 1.0 -d -K
doug
1
@doug próbowałem i nic nie zmieniło
marsUbuntux
@doug powinienem spróbować usunąć sterownik synaptics i sterownik libinput Xorg?
marsUbuntux
Problem polega na tym, że w ustawieniach systemu nie będziesz mieć ustawień touchpada i będziesz musiał ręcznie dodać, jak na przykład w raporcie o błędzie. To, czego początkowo próbowałeś z syndaemonem, było w rzeczywistości domyślne, tj. - wyłącz stuknij, aby kliknąć podczas pisania, ale nie wyłączaj przesuwania kursora. Czy funkcja „dotknij, aby kliknąć” jest wyłączona podczas pisania?
doug

Odpowiedzi:

36

Być może działają dwa sterowniki touchpada, w których syndaemon będzie wtedy wchodził w interakcję z niewłaściwym. Miałem ten sam problem na Dell XPS 13 i ten wątek ( http://ubuntuforums.org/showthread.php?t=2316240 ) pomógł mi.

Jeśli widzisz także dwa urządzenia touchpad, spróbuj je wyłączyć. Ponieważ masz inny komputer, instrukcje w łączu mogą, ale nie muszą, dotyczyć Ciebie.

Ze stanowiska, o którym mowa, procedura jest następująca:

otwórz plik /usr/share/X11/xorg.conf.d/51-synaptics-quirks.confjako root za pomocą edytora tekstu Wstaw następujący tekst:

# 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

Uruchom ponownie lub uruchom ponownie Xorg za pomocą polecenia sudo systemctl restart lightdm Credit przechodzi do ddarling z ubuntuforums.org.

Od stycznia 2018 r. Dell ma oficjalną stronę w swojej Bazie wiedzy na temat problemów z Ubuntu Touchpad / Mouse . Strona opisuje tę poprawkę, aby wyłączyć „SynPS / 2 Synaptics TouchPad”, a także sugeruje przejście do libinput zamiast synaptics jako sterownika podkładki pod mysz.

wanad
źródło
miał taką samą sytuację jak Ty:> DLL06E5: 01 06CB: 7A13 Touchpad id = 14 [wskaźnik slave (2)]> SynPS / 2 Synaptics TouchPad id = 16 [wskaźnik slave (2)] Zrobił to samo, co opisano w linku wysłałeś. Zadziałało! Teraz touchpad działa tak, jak chcę. Dzięki
marsUbuntux,
Wspomniane tam rozwiązanie działało również dla Dell Lattitude 3570.
chanux
To niesamowite, zawsze myślałem, że nie da się tego naprawić. To oszczędza mój laptap. Wielkie dzięki. To jest naprawdę przydatne.
realhu
Ponieważ ta odpowiedź zasługuje na większe uznanie, zaktualizowałem ją, aby wyjaśnić nieco więcej.
William S
2
Być może warto wyciągnąć rozwiązanie z forum na odpowiedź, na wypadek gdyby link zniknął.
BeepDog
30
sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator
  • Otwórz wskaźnik tabliczki dotykowej i kliknij ikonę wskaźnika.
  • Możesz zmienić preferencje (w zakładce akcji), aby „wyłączyć touchpad podczas pisania”

Twoje zdrowie!

CPN
źródło
1
Jest on dostępny jako rozszerzenie gnome: extensions.gnome.org/extension/131/touchpad-indicator
zamnuts
2
nie działa dla mnie na Ubuntu Budgie-Remix 16.04.3
r3wt
aby wyjaśnić komentarz Zamnuts: możesz uzyskać dostęp do preferencji tylko, jeśli zainstalujesz to jako rozszerzenie gnome zgodnie z linkiem, który podał (lub przynajmniej nie byłbym w stanie zrobić inaczej). Nie mam jednak opcji wyłączania touchpada podczas pisania.
glS
Nieumyślnie zagłosowałem (musiałem pisać na maszynie) i teraz nie mogę go usunąć, chyba że odpowiedź zostanie zaktualizowana. (Najwyraźniej askubuntu.com jest skonfigurowany w ten sposób.) Próbowałem dodać tylko spacje, ale potrzeba co najmniej 8 (różnych?) Znaków. Jeśli chcesz edytować odpowiedź i dodać coś w rodzaju „Sugestia: ustaw aplikację touchpada na automatyczne uruchamianie, aby nie trzeba było ręcznie uruchamiać jej przy każdym logowaniu.”, To powinienem zobaczyć powiadomienie i powinienem być w stanie usunąć mój głos w dół.
st2000
10

używam Ubuntu 17.10 i wypróbowałem inne rozwiązanie sugerowane tutaj głównie nie działa. Specjalnie oprogramowanie wskaźnika touchpada, gdy uruchamia się w Ubuntu 17.10, po prostu wyłącz touchpad i nie mogłem znaleźć żadnego sposobu, aby włączyć go ponownie bez ponownego uruchamiania laptopa. teraz znalazłem rozwiązanie, które myślę, że nadal działa całkiem dobrze: wystarczy użyć tego polecenia,

synclient PalmDetect = 1

Pozwoli to przynajmniej uniknąć niepotrzebnego stukania dłoni w touchpad, co w końcu zapewnia lepsze życie.

tareqalam
źródło
To jest bardzo dobre rozwiązanie i jest to poprawka jednowierszowa. Miałem to już wcześniej, ale zgubiłem. Dzięki za opublikowanie!
Thomas Dignan
Nie idealnie, ale bardzo pomaga 17.10, dzięki.
Jack
To działa idealnie. Dziwi mnie, że to nie jest domyślne, ale tak myślę, że to po prostu Linux.
Gunchars,
@tareqalam: Czy to polecenie powoduje ponowne uruchomienie?
Lonnie Best
2

Po przeanalizowaniu opcji „xinput” znalazłem skuteczne i łatwe rozwiązanie, aby wyłączyć touchpad Synaptics za pomocą Ubuntu 16.04 i Lubuntu 16.04

W oknie terminala zapewnij sobie dostęp administracyjny, wpisując „sudo -s” i hasło.

Za pomocą swojego ulubionego edytora, takiego jak leafpad lub gedit, utwórz nowy plik skryptu:

leafpad /usr/local/bin/tpadoff

i wstaw następujące:

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

Zapisz plik i zamknij edytor. Następnie wprowadź polecenie:

chmod 755 /usr/local/bin/tpadoff

aby plik był wykonywalny. Możesz powtórzyć, aby utworzyć plik tpadon, po prostu zmień opcję „--disable” na „--enable”.

Po zakończeniu „zamknij” okno terminala, aby wyłączyć dostęp administratora.

Wpisy na pulpicie można utworzyć, otwierając nowe okno terminala i używając ulubionego edytora (w tym przykładzie ponownie używam leafpada):

cd Desktop
leafpad tpadoff.desktop

i wstaw następujący tekst: [Wpis na pulpicie] Nazwa = TouchPad Off Komentarz = Wyłącz Touchpad Exec = / usr / local / bin / tpadoff Terminal = false Typ = Aplikacja

Zapisz plik i zamknij edytor. Następnie wprowadź następujące polecenie:

 chmod 775 tpadoff.desktop 

Możesz także powtórzyć, aby utworzyć tpadon.desktop, zmieniając wszystkie odniesienia „wyłączone” na „włączone”.

Po zakończeniu będziesz mieć dwa sposoby wyłączenia (i opcjonalnego włączenia) touchpada poprzez dwukrotne kliknięcie ikony na pulpicie lub wpisanie „tpadoff” w oknie terminala.

Jeśli twój touchpad jest inny, być może będziesz musiał użyć „xinput” w oknie terminala, aby znaleźć dokładną składnię touchpada. Następnie edytuj plik „/ usr / local / bin / tpadoff”, aby pasował do zgłaszanego xinput.

jakester
źródło
1
Pytanie dotyczy wyłączenia touchpada podczas pisania (tj. Automatycznie) - więc jeśli nie dajesz bezpośredniego odpowiedzi, bardzo doceniam jakość twojej odpowiedzi.
guntbert
2

Po miesiącach poszukiwań rozwiązania postanowiłem napisać prosty program w języku Python, aby wyłączyć touchpad podczas pisania. Dodanie programu do aplikacji startowych, aby działał przy każdym uruchomieniu komputera. Musisz uruchomić, xinput listaby określić identyfikator swojej klawiatury, w moim przypadku jest to 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)]

Oto program

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()
tunght_53
źródło
Niesamowite rozwiązanie, po prostu monitorując aktywność klawiatury za pomocą xinput i odpytywania, aby sprawdzić, czy nowe zdarzenia zdarzają się co 0,5 sekundy. Ma to dość minimalny wpływ na aktywność procesora, ale nadal byłoby miło, gdyby istniał sposób na wywołanie takiego zachowania tylko na zdarzeniach na klawiaturze. Czy istnieje powód, dla którego wykluczyłeś niektóre klawisze, takie jak lewa strzałka i spacja, czy to tylko osobiste preferencje?
theferrit32
2

W Ubuntu 19.04 uznałem, że wystarczy (na moje potrzeby) po prostu wyłączyć funkcję „Dotknij, aby kliknąć”:

wprowadź opis zdjęcia tutaj

Jednak konsekwencją tego jest fakt, że będziesz musiał użyć przycisków touchpada (mam nadzieję, że masz przyciski), aby wykonać kliknięcie. Dla mnie to sprawiedliwy kompromis.

Jeśli tak naprawdę nie masz „lewego i prawego” przycisku kliknięcia (oddzielonego od touchpada), możesz zamiast tego skalibrować czułość touchpada . Dowiedziałem się o tym od Petera Hutterera w tym raporcie o błędzie .

Życzę producentom laptopów, nie robiłem laptopów z nie cofniętymi touchpadami. Te touchpady, które są na poziomie klawiszy klawiatury (zamiast cofnięcia), są wadą projektową.

Poinformuj producentów laptopów o problemach, jakie spowodowali z powodu złej konstrukcji, w przeciwnym razie będą ślepo to robić w przyszłych modelach.

Lonnie Best
źródło
1
Potwierdzono, że działa to bardzo dobrze. Zauważyłem drobną rzecz, którą mogę zignorować: kiedy moje tłuste dłonie dotykają touchpada podczas pisania, widzę, że kursor myszy trochę się porusza, ale przynajmniej nie pozwala kliknięciu w inne miejsce, co jest bardzo czasochłonne. Idealnie byłoby nadal mieć zachowanie Tap To Click, ale przynajmniej na moim laptopie ta funkcjonalność i tak nigdy nie działała tak dobrze. Zatem kompromis jest rzeczywiście sprawiedliwy.
bgoodr
1

Dla użytkowników Kubuntu ...

W Kubuntu 16.04 - aby wyłączyć touchpad podczas pisania musiałem wyczyścić pole wyboru „Wyłącz tylko dotykanie i przewijanie” w ustawieniach-> urządzenia wejściowe-> touchpad-> Włącz / wyłącz touchpad. To może wydawać się oczywiste, ale ...

użytkownik1806949
źródło
ubuntu 16.04 działa
Nazmul Hasan
W Ubuntu 18.04 nie ma takiej podopcji, ani Ustawienia, ani Tweaks.
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

lub bardziej zwięźle

xinput list | sed -nre 's/^.*Touchpad.*\sid=(\S+).*$/\1/p' | xargs -I{} -- xinput set-prop {} 'Device Enabled' 0
Nando
źródło
popraw formatowanie
Pierre.Vriens
1
Witamy w Ask Ubuntu! Zalecam edycję tej odpowiedzi, aby rozszerzyć ją o szczegółowe informacje na temat działania tego polecenia (sekwencji). Zwykłe polecenie (sekwencja) rzadko jest uważane za odpowiedź. (Zobacz także Jak napisać dobrą odpowiedź? Zawiera ogólne porady na temat tego, jakie rodzaje odpowiedzi są uważane za najbardziej wartościowe w Ask Ubuntu.)
David Foerster,