Wie deaktiviere ich ein Touchpad über die Befehlszeile?


Antworten:


55

So schalten Sie das Touchpad aus:

synclient TouchpadOff=1

So schalten Sie es wieder ein:

synclient TouchpadOff=0

Einfach, aber auf den Punkt gebracht.
Ade Malsasa Akbar

7
funktioniert nicht auf meinem Computer ...
Casper

Interessant, gut zu wissen.
Aleroxac

2
Der Befehl lief ohne Fehler auf meinem Ubuntu 14.04 LTS auf Dell XPS 13, hatte aber keine Wirkung.
IJ Kennedy

Toggle wäre schön - ich würde es gerne als Abkürzung oder so einrichten. Besser noch, wenn es angedockt ist, möchte ich das Touchpad ausschalten
Christian Bongiorno

22

Es gibt mindestens zwei Methoden (die ich kenne), die Sie ausprobieren können.

synclient

Wenn Ihr Laptop mit einem Synaptics-Touchpad (oder ALPS-Touchpad) ausgestattet ist, können Sie in der Tat synclientdas von Shutupsquare bereits erwähnte verwenden. Ich verwende Ubuntu 14.04 und auf meinem Computer wurde es standardmäßig installiert.

Teste ob der Synclient installiert ist: synclient -V(er sollte die Versionsnummer angeben )

Touchpad einschalten: synclient TouchpadOff=0

Touchpad ausschalten: synclient TouchpadOff=1

Ich habe dies selbst nicht getestet, aber wenn Sie die Maus nicht bewegen möchten, während Ihre Arme auf dem Touchpad ruhen, kann dies hilfreich sein.

Handflächenerkennung einschalten: synclient PalmDetect=1

Handflächenerkennung ausschalten: synclient PalmDetect=0

Im Allgemeinen können Sie jede Eigenschaft Ihres Synaptics-Touchpads über konfigurieren synclient property=value. Wobei die Eigenschaft eine der verfügbaren Eigenschaften ist, die von angezeigt werdensynclient -l

Links zur weiteren Lektüre

ubuntu - comminity help wiki - SynapticsTouchpad

archlinux - wiki - Touchpad Synaptics

ubuntu fragen - Wie kann ich meine Synchronisierungseinstellungen beibehalten? - Ubuntu

xinput

Wenn Sie synclient nicht verwenden möchten oder können, können Sie auch verwenden xinput. Die Vorgehensweise ist etwas ähnlich.

liste alle xinput Geräte auf: xinput

Ein Teil der Ausgabe könnte folgendermaßen aussehen:

⎡ 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)]

In diesem speziellen Fall hat mein Touchpad die ID = 17 und der vollständige Name lautet "ETPS / 2 Elantech Touchpad".

Der Befehl zum Festlegen einer Eigenschaft lautet xinput set-prop. Die Eigenschaft zum Aktivieren oder Deaktivieren des Touchpads lautet wie folgt Device Enabled:

Touchpad einschalten: xinput set-prop <id> "Device Enabled" 1(Wo <id>ist Ihre Geräte-ID, in meinem Fall 17)

Touchpad ausschalten: xinput set-prop <id> "Device Enabled" 0

Handflächenerkennung einschalten: xinput set-prop <id> "Palm Detection" 1

Handflächenerkennung ausschalten: xinput set-prop <id> "Palm Detection" 0

Um verfügbare Eigenschaften abzufragen: xinput list-props <id>ODER xinput list-props <full-name>, dies sollte ziemlich ähnlich sein synclient -l.

Links zur weiteren Lektüre

Ubuntu - Wiki - Eingabe

HINWEIS

Beim Festlegen von Eigenschaften über xinputoder werden synclientdie Eigenschaften nicht auf das andere Werkzeug festgelegt. Sie sind auch nicht im Unity-Control-Center eingestellt.


1
Danke für die zweite Antwort. synclienthat nicht für mich gearbeitet, xinputhat.
Robin Winslow

1
Beachten Sie, dass sich die xinputIDs bei einem Neustart ändern können. Wenn Sie sich also in Skripten oder Verknüpfungen auf diese IDs verlassen, funktioniert dies nicht.
Lode

synclientfunktioniert völlig auf Arch Linux. Vielen Dank so viel !!!
Theodore R. Smith

Das hat es für mich getan. Insbesondere habe ich festgestellt, dass ich ausführen muss xinput <enable/disable> <id>, da die Einstellung TouchpadOffüber synclientineffektiv war.
Michael Mol

Vielen Dank für die Einführung in xinput. Ich war mit meiner eingebauten Tastatur und den Trackpoint-Tasten ziemlich fertig und habe anscheinend schlechte Eingaben gesendet, die die Eingabe von der externen Tastatur störten. Dadurch konnte ich die eingebauten Geräte deaktivieren. Prost! :)
sjakobi

4

synclientund wird xinputnicht funktionieren , wenn Sie mit gnome (oder Einheit, Zimt) Umwelt, weil es Einstellungen außer Kraft setzen wird, so dass , wenn Sie möchten , synclientoder um xinputdiese Einstellungen zu übernehmen, sollten Sie diese zuerst deaktivieren:

  1. Installieren, dconf-editorwenn nicht installiert:

    apt-get install dconf-editor
    
  2. Lauf dconf-editor

    dconf-editor 
    
  3. Öffnen Sie das Verzeichnis /org/gnome/settings-daemon/plugins/mouse/oder /org/cinnamon/settings-daemon/plugins/mouse/und deaktivieren Sie das Kontrollkästchen für active.

  4. logout oder reboot

Das sollte klappen synclientoder xinputklappen.


1
  1. Listen Sie Ihre Eingabegeräte auf:

    xinput list
    

    In meinem Fall habe ich diese Liste:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Deaktivieren Sie Ihr Touchpad, indem Sie die ID übergeben

    xinput set-prop 15 "Device Enabled" 0
    

Bei der manuellen Eingabe können Sie xinput enable [device]und xinput disable [device]direkt verwenden. Bei der Skripterstellung ist die Verwendung set-prop [device] "Device Enabled" [value]möglicherweise etwas einfacher, wie in der Antwort von World Python Developer.
hsandt

1

Ich habe ein Python-Stück Code geschrieben, damit Sie die xinputTechnik anwenden können, ohne die ganze manuelle Arbeit zu erledigen. Copyleft, AS-IS, keine Garantie, Verwendung auf eigenes Risiko. Funktioniert hervorragend für mich: Wenn Sie Gnome verwenden, ordnen Sie es einfach einer Tastenkombination wie 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()

0

Unter Gnome funktionierte meine Funktionstaste zum Umschalten des Touchpads aus irgendeinem Grund nicht. Ich erstellte ein Skript mit gsettings.

  • Vorteil: nicht herstellerspezifisch
  • Nachteil: Auf Gnome werden die Touchpad-Klicks (nicht das Tippen) aus irgendeinem Grund weiterhin verarbeitet, wohingegen die xinputLösung das Touchpad wie erwartet vollständig deaktiviert. Wenn Sie wie ich sind, besteht Ihr einziges Problem darin, dass Sie den Cursor versehentlich bewegen, während Sie tippen. Dies ist jedoch ausreichend.

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()

Es sollte auch auf Unity funktionieren, aber ich habe es nicht getestet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.