Come disabilitare un touchpad usando la riga di comando?


Risposte:


55

Per disattivare il touchpad:

synclient TouchpadOff=1

Per riattivarlo:

synclient TouchpadOff=0

Semplice ma vai al punto.
Ade Malsasa Akbar,

7
non funziona sul mio computer ...
Casper

Interessante, buono a sapersi.
aleroxac,

2
Il comando è stato eseguito senza errori sul mio Ubuntu 14.04 LTS su Dell XPS 13 ma non ha avuto alcun effetto.
IJ Kennedy,

Toggle sarebbe carino - Vorrei impostarlo come una scorciatoia o qualcosa del genere. Meglio ancora, quando è ancorato, voglio che il touchpad sia spento
Christian Bongiorno,

22

Esistono almeno due metodi (che conosco) che potresti provare.

synclient

Se il tuo laptop è dotato di un touchpad Synaptics (o ALPS), puoi effettivamente utilizzarlo synclientcome già menzionato da Shutupsquare. Sto eseguendo Ubuntu 14.04 e sul mio computer è stato installato di default.

Verifica se è installato Synclient: synclient -V(dovrebbe riportare il numero di versione)

Attiva il touchpad: synclient TouchpadOff=0

Disattiva il touchpad: synclient TouchpadOff=1

Non l'ho provato da solo, ma se il tuo obiettivo non è muovere il mouse quando le braccia sono appoggiate sul touchpad, questo potrebbe essere d'aiuto.

Attiva il rilevamento palmare: synclient PalmDetect=1

Disattiva il rilevamento palmare: synclient PalmDetect=0

In generale puoi configurare qualsiasi proprietà del tuo touchpad Synaptics da synclient property=value. Dove la proprietà è una delle proprietà disponibili mostrate dasynclient -l

Link per ulteriori letture

ubuntu - wiki di aiuto di comunità - SynapticsTouchpad

archlinux - wiki - Touchpad Synaptics

chiedi a ubuntu - Come posso mantenere le mie impostazioni di sincronizzazione? - Ubuntu

XInput

Se non si desidera o non è possibile utilizzare il synclient, è possibile utilizzare anche xinput. La procedura è in qualche modo simile.

elenca tutti i dispositivi xinput: xinput

Parte dell'uscita potrebbe apparire così:

⎡ 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 questo caso particolare il mio touchpad ha id = 17 e il suo nome completo è "ETPS / 2 Elantech Touchpad".

Il comando per impostare una proprietà è xinput set-prop. La proprietà per abilitare o disabilitare il touchpad è Device Enabled, quindi per abilitarlo o disabilitarlo digitare:

Attiva il touchpad: xinput set-prop <id> "Device Enabled" 1(dov'è <id>l'ID del tuo dispositivo, nel mio caso 17)

Disattiva il touchpad: xinput set-prop <id> "Device Enabled" 0

Attiva il rilevamento palmare: xinput set-prop <id> "Palm Detection" 1

Disattiva il rilevamento palmare: xinput set-prop <id> "Palm Detection" 0

Per interrogare le proprietà disponibili: xinput list-props <id>OPPURE xinput list-props <full-name>, dovrebbe essere abbastanza simile a synclient -l.

Link per ulteriori letture

ubuntu - wiki - input

NOTA

Quando si impostano le proprietà tramite uno dei due xinputo synclientle proprietà non sono impostate sull'altro strumento. Inoltre non sono ambientati nel centro di controllo unità.


1
Grazie per la seconda risposta synclientnon ha funzionato per me, ha xinputfatto.
Robin Winslow,

1
Si noti che gli xinputID possono cambiare al riavvio. Quindi fare affidamento su questi ID negli script o nelle scorciatoie non funzionerà.
Lode,

synclientfunziona totalmente su Arch Linux. Grazie così tanto !!!
Theodore R. Smith,

Questo è stato per me. In particolare, ho scoperto che devo eseguire xinput <enable/disable> <id>, poiché l'impostazione TouchpadOffvia synclientera inefficace.
Michael Mol

Grazie per l'introduzione a xinput. Ero in un po 'un casino con la mia tastiera integrata e i pulsanti trackpoint apparentemente inviando input cattivi che interferivano con l'input dalla tastiera esterna. Questo mi ha permesso di disabilitare i dispositivi integrati. Saluti! :)
sjakobi,

4

syncliente xinputnon funzionerà se si utilizza l'ambiente gnome (o unity, cannella), perché sovrascriverà le impostazioni, quindi se si desidera syncliento xinputassumere queste impostazioni, è necessario prima disabilitarlo:

  1. installa dconf-editorse non installato:

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

    dconf-editor 
    
  3. aprire la directory /org/gnome/settings-daemon/plugins/mouse/o /org/cinnamon/settings-daemon/plugins/mouse/e deselezionare la casella di controllo per active.

  4. logout o reboot

Questo dovrebbe funzionare syncliento xinputfunzionare.


1
  1. Elenca i tuoi dispositivi di input:

    xinput list
    

    Nel mio caso ho questo elenco:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Disabilita il tuo touchpad passando l'ID

    xinput set-prop 15 "Device Enabled" 0
    

Quando si digita manualmente, è possibile utilizzare xinput enable [device]e xinput disable [device]direttamente. Tuttavia, quando si esegue lo script, l'utilizzo set-prop [device] "Device Enabled" [value]potrebbe essere un po 'più semplice, come nella risposta di World Python Developer.
hsandt,

1

Ho scritto un pezzo di codice Python in modo che tu possa usare la xinputtecnica senza fare tutto il lavoro manuale. Copyleft, AS-IS, nessuna garanzia, utilizzare a proprio rischio. Funziona benissimo per me: e se stai usando gnome, basta mapparlo su una scorciatoia da tastiera come 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

Su Gnome, il mio tasto funzione per attivare / disattivare il touchpad non funzionava per qualche motivo, quindi ho creato uno script usando gsettings.

  • Vantaggio: non specifico del fornitore
  • Svantaggio: su Gnome, i clic del touchpad (non toccare) vengono comunque gestiti per qualche motivo, mentre la xinputsoluzione disattiva completamente il touchpad come previsto. Se come me, il tuo unico problema è che stai spostando inavvertitamente il cursore durante la digitazione, tuttavia, sarà sufficiente.

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

Dovrebbe funzionare anche su Unity, ma non ho ancora testato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.