Como desabilito um touchpad usando a linha de comando?


Respostas:


55

Para desativar o touch pad:

synclient TouchpadOff=1

Para ligá-lo novamente:

synclient TouchpadOff=0

Simples, mas vá direto ao ponto.
— Ade Malsasa Akbar

7
não funciona no meu computador ...
— Casper

Interessante, bom saber.
— Aleroxac

2
O comando foi executado sem erros no meu Ubuntu 14.04 LTS no Dell XPS 13, mas não teve efeito.
— IJ Kennedy,

Alternar seria bom - eu gostaria de configurá-lo como um atalho ou algo assim. Melhor ainda, quando estiver ancorado, quero desligar o touchpad
— Christian Bongiorno

22

Existem pelo menos dois métodos (que eu conheço) que você poderia tentar.

sincliente

Se o seu laptop estiver equipado com um touchpad Synaptics (ou ALPS), você poderá usá-lo synclientcomo já mencionado pelo Shutupsquare. Estou executando o Ubuntu 14.04 e na minha máquina ele foi instalado por padrão.

Teste se o synclient está instalado: synclient -V(deve informar o número da versão)

Ligue o touchpad: synclient TouchpadOff=0

Desative o touchpad: synclient TouchpadOff=1

Eu mesmo não testei isso, mas se seu objetivo é não mover o mouse quando seus braços estão apoiados no touch pad, isso pode ajudar.

Ative a detecção de palma: synclient PalmDetect=1

Desative a detecção de palma: synclient PalmDetect=0

Em geral, você pode configurar qualquer propriedade do touchpad Synaptics synclient property=value. Onde a propriedade é uma das propriedades disponíveis mostradas porsynclient -l

Links para leitura adicional

ubuntu - wiki de ajuda comminity - SynapticsTouchpad

archlinux - wiki - Touchpad Synaptics

Como faço para manter minhas configurações de sincronização? - Ubuntu

xinput

Se você não quiser ou não puder usar o synclient, também poderá usar xinput. O procedimento é um pouco semelhante.

listar todos os dispositivos xinput: xinput

Parte da saída pode ficar assim:

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

Nesse caso específico, meu touchpad tem id = 17 e seu nome completo é "ETPS / 2 Elantech Touchpad".

O comando para definir uma propriedade é xinput set-prop. A propriedade para ativar ou desativar o touchpad é Device Enabled, para ativá-lo ou desativá-lo, digite:

Ative o touchpad: xinput set-prop <id> "Device Enabled" 1(onde <id>está o ID do seu dispositivo, no meu caso 17)

Desative o touchpad: xinput set-prop <id> "Device Enabled" 0

Ative a detecção de palma: xinput set-prop <id> "Palm Detection" 1

Desative a detecção de palma: xinput set-prop <id> "Palm Detection" 0

Para consultar as propriedades disponíveis: xinput list-props <id>OU xinput list-props <full-name>, isso deve ser bastante semelhante ao synclient -l.

Links para leitura adicional

ubuntu - wiki - entrada

NOTA

Ao definir propriedades por meio de uma xinputou synclientas propriedades, não estão definidas para a outra ferramenta. Eles também não estão definidos no centro de controle da unidade.


11
Obrigado pela segunda resposta. synclientnão funcionou para mim, xinputfuncionou.
— Robin Winslow

11
Observe que os xinputIDs podem mudar durante a reinicialização. Portanto, confiar nesses IDs em scripts ou atalhos não funcionará.
— Lode

synclientfunciona totalmente no Arch Linux. Obrigado assim muito !!!
— Theodore R. Smith

Isso fez por mim. Em particular, descobri que precisava executar xinput <enable/disable> <id>, pois a configuração TouchpadOffvia synclientera ineficaz.
— 22418 Michael Michael

Obrigado pela introdução a xinput. Eu estava meio confuso com o meu teclado embutido e os botões do trackpoint, aparentemente enviando entradas ruins que interferiam na entrada do teclado externo. Isso permitiu ao meu desativar os dispositivos internos. Felicidades! :)
— sjakobi 13/06

4

syncliente xinputnão funcionará se você estiver usando o ambiente gnome (ou unity, canela), porque substituirá as configurações; portanto, se você quiser synclientou xinputassumir essas configurações, desative-o primeiro:

  1. instale dconf-editorse não estiver instalado:

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

    dconf-editor 
    
  3. abra o diretório /org/gnome/settings-daemon/plugins/mouse/ou /org/cinnamon/settings-daemon/plugins/mouse/desmarque a caixa de seleção active.

  4. logout ou reboot

Isso deve fazer synclientou xinputfuncionar.


1
  1. Liste seus dispositivos de entrada:

    xinput list
    

    No meu caso, eu tenho esta lista:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Desative seu touchpad passando o ID

    xinput set-prop 15 "Device Enabled" 0
    

Ao digitar manualmente, você pode usar xinput enable [device]e xinput disable [device]diretamente. Ao criar scripts, o uso set-prop [device] "Device Enabled" [value]pode ser um pouco mais fácil, como na resposta do desenvolvedor do World Python.
— hsandt

1

Eu escrevi um pedaço de código python para que você possa usar a xinputtécnica sem fazer todo o trabalho manual. Copyleft, COMO ESTÁ, sem garantia, use por seu próprio risco. Funciona muito bem para mim: e se você estiver usando o gnome, mapeie-o para um atalho de tecla 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()

0

No Gnome, minha tecla de função para alternar o touchpad não estava funcionando por algum motivo, então fiz um script usando gsettings.

  • Vantagem: não específico do fornecedor
  • Desvantagem: no Gnome, os cliques no touchpad (não toque) ainda são tratados por algum motivo, enquanto a xinputsolução desativa completamente o touchpad conforme o esperado. Se como eu, seu único problema é que você está inadvertidamente movendo o cursor enquanto digita, porém, isso 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()

Também deve funcionar no Unity, mas não testei.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.