Jak wyłączyć touchpad za pomocą wiersza poleceń?

39

Czy istnieje sposób na wyłączenie touchpada za pomocą polecenia terminalu?

Peng Wu
źródło

Odpowiedzi:

55

Aby wyłączyć panel dotykowy:

synclient TouchpadOff=1

Aby ponownie włączyć:

synclient TouchpadOff=0
0x7c0
źródło
Proste, ale przejdź do sedna.
Ade Malsasa Akbar
7
nie działa na moim komputerze ...
Casper
Ciekawe, dobrze wiedzieć.
aleroxac
2
Komenda działała bezbłędnie na moim Ubuntu 14.04 LTS na Dell XPS 13, ale nie działała.
IJ Kennedy
Toggle byłoby miło - chciałbym ustawić to jako skrót lub coś w tym rodzaju. Jeszcze lepiej, gdy jest zadokowany, chcę wyłączyć touchpad
Christian Bongiorno,
22

Istnieją co najmniej dwie metody (o których wiem), które możesz wypróbować.

synclient

Jeśli Twój laptop jest wyposażony w touchpad Synaptics (lub ALPS), możesz z niego korzystać, synclientjak już wspomniano w Shutupsquare. Używam Ubuntu 14.04 i na moim komputerze został on domyślnie zainstalowany.

Sprawdź, czy synclient jest zainstalowany: synclient -V(powinien podać numer wersji)

Włącz touchpad: synclient TouchpadOff=0

Wyłącz touchpad: synclient TouchpadOff=1

Sam tego nie testowałem, ale jeśli Twoim celem jest nie poruszanie myszą, gdy twoje ręce spoczywają na tabliczce dotykowej, może to pomóc.

Włącz wykrywanie dłoni: synclient PalmDetect=1

WYŁĄCZ wykrywanie dłoni: synclient PalmDetect=0

Zasadniczo możesz skonfigurować dowolną właściwość touchpada Synaptics przez synclient property=value. Gdzie właściwość jest jedną z dostępnych właściwości pokazanych przezsynclient -l

Linki do dalszego czytania

ubuntu - wiki wiki pomocy - SynapticsTouchpad

archlinux - wiki - Touchpad Synaptics

ask ubuntu - Jak ustawić moje ustawienia synclient? - Ubuntu

xinput

Jeśli nie chcesz lub nie możesz używać synclient, możesz również użyć xinput. Procedura jest nieco podobna.

wyświetl wszystkie urządzenia xinput: xinput

Część danych wyjściowych może wyglądać następująco:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=13   [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=17   [slave  pointer  (2)]

W tym konkretnym przypadku mój touchpad ma id = 17, a jego pełna nazwa to „ETPS / 2 Elantech Touchpad”.

Poleceniem ustawienia właściwości jest xinput set-prop. Właściwością włączania lub wyłączania touchpada jest Device Enabled, więc aby włączyć lub wyłączyć, wpisz:

Włącz touchpad: xinput set-prop <id> "Device Enabled" 1(gdzie <id>jest identyfikator twojego urządzenia, w moim przypadku 17)

Wyłącz touchpad: xinput set-prop <id> "Device Enabled" 0

Włącz wykrywanie dłoni: xinput set-prop <id> "Palm Detection" 1

WYŁĄCZ wykrywanie dłoni: xinput set-prop <id> "Palm Detection" 0

Aby wyszukać dostępne właściwości: xinput list-props <id>LUB xinput list-props <full-name>, powinno to być całkiem podobne do synclient -l.

Linki do dalszego czytania

ubuntu - wiki - wejście

UWAGA

Podczas ustawiania właściwości za pomocą jednego z nich xinputlub synclientwłaściwości nie są ustawione na inne narzędzie. Nie są też osadzeni w centrum kontroli jedności.

bremme
źródło
1
Dzięki za drugą odpowiedź. synclientnie działało dla mnie xinput.
Robin Winslow
1
Pamiętaj, że xinputidentyfikatory mogą się zmieniać po ponownym uruchomieniu. Dlatego poleganie na tych identyfikatorach w skryptach lub skrótach nie będzie działać.
Lode,
synclientcałkowicie działa na Arch Linux. Dziękuję tak dużo !!!
Theodore R. Smith
Zrobiło to dla mnie. W szczególności odkryłem, że muszę biegać xinput <enable/disable> <id>, ponieważ ustawienie TouchpadOffza pomocą synclientbyło nieskuteczne.
Michael Mol
Dziękuję za wprowadzenie do xinput. Byłem trochę zakłopotany dzięki wbudowanej klawiaturze i przyciskom trackpointa, najwyraźniej wysyłając złe dane wejściowe, które zakłócały wejście z zewnętrznej klawiatury. To pozwoliło mi wyłączyć wbudowane urządzenia. Twoje zdrowie! :)
sjakobi
4

synclienti xinputnie będzie działać, jeśli używasz środowiska gnome (lub jedności, cynamonu), ponieważ zastąpi ono ustawienia, więc jeśli chcesz synclientlub xinputprzejmiesz te ustawienia, powinieneś je najpierw wyłączyć:

  1. zainstaluj, dconf-editorjeśli nie jest zainstalowany:

    apt-get install dconf-editor
    
  2. biegać dconf-editor

    dconf-editor 
    
  3. otwórz katalog /org/gnome/settings-daemon/plugins/mouse/lub /org/cinnamon/settings-daemon/plugins/mouse/i odznacz pole wyboru dla active.

  4. logout lub reboot

To powinno działać synclientlub xinputdziałać.

realhu
źródło
1
  1. Wymień swoje urządzenia wejściowe:

    xinput list
    

    W moim przypadku mam tę listę:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Wyłącz touchpad, przekazując identyfikator

    xinput set-prop 15 "Device Enabled" 0
    
D.Snap
źródło
Podczas wpisywania ręcznie, można użyć xinput enable [device]i xinput disable [device]bezpośrednio. Podczas pisania skryptów korzystanie set-prop [device] "Device Enabled" [value]może być nieco łatwiejsze, jak w odpowiedzi na pytanie World Python Developer's.
hsandt
1

Napisałem fragment kodu Pythona, abyś mógł użyć tej xinputtechniki bez wykonywania całej pracy ręcznej. Copyleft, AS-IS, bez gwarancji, używa na własne ryzyko. Działa świetnie dla mnie: a jeśli używasz gnome, po prostu zamapuj go na skrót klawiszowy, taki jak CtrlShiftT.

#!/usr/bin/python2
# -*- coding: utf-8 -*-
'''Program to toggle Touchpad Enable to Disable or vice-versa.'''

import commands
import re


def current_id():
    """ Search through the output of xinput and find the line that has the
    word TouchPad.  At that point, I believe we can find the ID of that device."""

    props = commands.getoutput("xinput").split("\n")
    match = [line for line in props if "TouchPad" in line]
    assert len(match) == 1, "Problem finding Touchpad string! %s" % match

    pat = re.match(r"(.*)id=(\d+)", match[0])
    assert pat, "No matching ID found!"

    return int(pat.group(2))


def current_status(tpad_id):
    """Find the current Device ID, it has to have the word TouchPad in the line."""

    props = commands.getoutput("""xinput list-props %d""" % tpad_id).split('\n')
    match = [line for line in props if "Device Enabled" in line]
    assert len(match) == 1, "Can't find the status of device #%d" % tpad_id

    pat = re.match(r"(.*):\s*(\d+)", match[0])
    assert pat, "No matching status found!"
    return int(pat.group(2))

def flop(tpad_id, status):
    """Change the value of status, and call xinput to reverse that status."""
    if status == 0:
        status = 1
    else:
        status = 0

    print "Changing Device #%d Device Enabled %d" % (tpad_id, status)
    commands.getoutput("""xinput set-prop %d "Device Enabled" %d""" % (tpad_id, status))

def main():
    """Get curent device id and status, and flop status value."""
    tpad = current_id()
    stat = current_status(tpad)
    flop(tpad, stat)

main()
Światowy programista Python
źródło
0

W Gnome mój klawisz funkcyjny do przełączania touchpada z jakiegoś powodu nie działał, więc stworzyłem skrypt za pomocą gsettings.

  • Zaleta: nie dotyczy konkretnego dostawcy
  • Wada: w Gnome kliknięcia touchpada (nie dotknij) są nadal obsługiwane z jakiegoś powodu, podczas gdy xinputrozwiązanie całkowicie dezaktywuje touchpad zgodnie z oczekiwaniami. Jeśli tak jak ja, twoim jedynym problemem jest to, że nieumyślnie poruszasz kursorem podczas pisania, ale to wystarczy.

toggle_touchpad_gsettings.py

#!/usr/bin/python3.6
import sys
import subprocess

gsettings_schema, gsettings_key = "org.gnome.desktop.peripherals.touchpad", "send-events"

def get_touchpad_send_events():
    send_events_value = subprocess.check_output(["gsettings", "get", gsettings_schema, gsettings_key])
    return send_events_value.strip()

def toggle_touchpad():
    # string returned from get is a repr including quotes,
    # but string sent with set does not need to have quotes
    if get_touchpad_send_events() == b"'enabled'":
        newval = 'disabled'
    else:
        newval = 'enabled'
    subprocess.Popen(["gsettings", "set", gsettings_schema, gsettings_key, newval])
    print(f"Set {gsettings_schema}:{gsettings_key} to {newval}")

def main():
    toggle_touchpad()

if __name__ == '__main__':
    main()

Powinien również działać na Unity, ale nie testowałem.

hsandt
źródło