¿Cómo deshabilito un panel táctil usando la línea de comando?

Respuestas:

55

Para desactivar el panel táctil:

synclient TouchpadOff=1

Para volver a encenderlo:

synclient TouchpadOff=0
0x7c0
fuente
Simple pero ve al grano.
Ade Malsasa Akbar
77
no funciona en mi computadora ...
Casper
Interesante, bueno saberlo.
aleroxac
2
El comando se ejecutó sin error en mi Ubuntu 14.04 LTS en Dell XPS 13 pero no tuvo ningún efecto.
IJ Kennedy
Toggle sería bueno, me gustaría configurarlo como un atajo o algo así. Mejor aún, cuando está acoplado, quiero que el touchpad esté apagado
Christian Bongiorno
22

Hay al menos dos métodos (que yo sepa) que podrías probar.

sincliente

Si su computadora portátil está equipada con un panel táctil Synaptics (o ALPS), puede usarlo synclientcomo ya lo mencionó Shutupsquare. Estoy ejecutando Ubuntu 14.04 y en mi máquina se instaló por defecto.

Prueba si está instalado synclient: synclient -V(debe informar el número de versión)

Encienda el panel táctil: synclient TouchpadOff=0

Apague el panel táctil: synclient TouchpadOff=1

No lo he probado yo mismo, pero si su objetivo es no mover el mouse cuando sus brazos descansan sobre el panel táctil, esto podría ayudar.

Active la detección de palma: synclient PalmDetect=1

Apague la detección de palma: synclient PalmDetect=0

En general, puede configurar cualquier propiedad de su panel táctil Synaptics synclient property=value. Donde la propiedad es una de las propiedades disponibles mostradas porsynclient -l

Enlaces para lecturas adicionales

ubuntu - wiki de ayuda comunitaria - SynapticsTouchpad

archlinux - wiki - Synaptics de panel táctil

ask ubuntu - ¿Cómo hago para que mis ajustes de sincronización se mantengan? - Ubuntu

xinput

Si no quiere o no puede usar synclient, también puede usarlo xinput. El procedimiento es algo similar.

enumerar todos los dispositivos xinput: xinput

Parte de la salida podría verse así:

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

En este caso particular, mi panel táctil tiene id = 17 y su nombre completo es "ETPS / 2 Elantech Touchpad".

El comando para establecer una propiedad es xinput set-prop. La propiedad para habilitar o deshabilitar el panel táctil es Device Enabled, así que para habilitarlo o deshabilitarlo, escriba:

Encienda el panel táctil: xinput set-prop <id> "Device Enabled" 1(donde <id>está la identificación de su dispositivo, en mi caso 17)

Apague el panel táctil: xinput set-prop <id> "Device Enabled" 0

Active la detección de palma: xinput set-prop <id> "Palm Detection" 1

Apague la detección de palma: xinput set-prop <id> "Palm Detection" 0

Para consultar las propiedades disponibles: xinput list-props <id>O xinput list-props <full-name>, esto debería ser bastante similar a synclient -l.

Enlaces para lecturas adicionales

ubuntu - wiki - entrada

NOTA

Al establecer propiedades a través de cualquiera xinputo de synclientlas propiedades no se establecen en la otra herramienta. Tampoco se establecen en la unidad-centro de control.

bremme
fuente
1
Gracias por la segunda respuesta. synclientno funcionó para mí, lo xinputhizo.
Robin Winslow
1
Tenga en cuenta que los xinputidentificadores pueden cambiar durante los reinicios. Por lo tanto, confiar en estos identificadores en scripts o accesos directos no funcionará.
Lode
synclienttotalmente funciona en Arch Linux. Gracias por lo tanto !!!
Theodore R. Smith
Esto lo hizo por mí. En particular, descubrí que necesitaba ejecutar xinput <enable/disable> <id>, ya que la configuración a TouchpadOfftravés de synclientera ineficaz.
Michael Mol
Gracias por la introducción a xinput. Estaba un poco en apuros con mi teclado incorporado y los botones de trackpoint aparentemente enviando entradas malas que interferían con la entrada del teclado externo. Esto me permitió desactivar los dispositivos incorporados. ¡Aclamaciones! :)
sjakobi
4

synclienty xinputno funcionará si está utilizando el entorno gnome (o unity, canela), ya que anulará la configuración, por lo que si desea syncliento xinputasume estas configuraciones, primero debe desactivar eso:

  1. instalar dconf-editorsi no está instalado:

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

    dconf-editor 
    
  3. abre el directorio /org/gnome/settings-daemon/plugins/mouse/o/org/cinnamon/settings-daemon/plugins/mouse/ , y desmarque la casilla de verificación para active.

  4. logout o reboot

Esto debería hacer syncliento xinputtrabajar.

realhu
fuente
1
  1. Enumere sus dispositivos de entrada:

    xinput list
    

    En mi caso tengo esta lista:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Desactive su panel táctil pasando la identificación

    xinput set-prop 15 "Device Enabled" 0
    
D.Snap
fuente
Al escribir manualmente, puede usar xinput enable [device]y xinput disable [device]directamente. Sin embargo, cuando se utilizan secuencias de comandos, el uso set-prop [device] "Device Enabled" [value]puede ser un poco más fácil, como en la respuesta de World Python Developer.
hsandt
1

Escribí un código de Python para que puedas usar la xinputtécnica sin hacer todo el trabajo manual. Copyleft, TAL CUAL, sin garantía, uso bajo su propio riesgo. Funciona muy bien para mí: y si está utilizando gnome, simplemente asigne un atajo de teclado como 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()
Desarrollador World Python
fuente
0

En Gnome, mi tecla de función para alternar el panel táctil no funcionaba por alguna razón, así que hice un script usando gsettings.

  • Ventaja: no específica del proveedor
  • Desventaja: en Gnome, los clics del panel táctil (no el toque) todavía se manejan por alguna razón, mientras que la xinputsolución desactiva completamente el panel táctil como se esperaba. Si como yo, tu único problema es que mueves el cursor sin querer mientras escribes, eso será suficiente.

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

También debería funcionar en Unity, pero no lo he probado.

hsandt
fuente