Como posso desativar o touchpad durante a digitação? No Ubuntu 16.04, o syndaemon não está funcionando


42

Eu quero desativar o touch pad enquanto estiver digitando. Eu tentei isso:

syndaemon -i 1 -d -t -K

Ele deve desativar o toque e a rolagem no touchpad por 1 segundo e ignorar os combos de modificador + teclas, mas após a configuração syndaemoncomo descrita, nada muda. O touchpad está sempre ativo e é muito irritante.

Estou usando o Ubuntu 16.04 em um Dell Precision 5510.


1
Tocar para clicar é desativado por padrão durante a digitação, o movimento / rolagem do cursor não é. Existe uma maneira de desativar o próprio touchpad enquanto você digita, mas não através do syndaemon / synclient. No entanto, o método fará com que as Configurações do sistema> Mouse e Touchpad> Configurações do touchpad desapareçam. Algumas informações aqui - bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/…
doug

4
Tente -syndaemon -i 1.0 -d -K
doug

1
@doug eu tentei e ele não mudou nada
marsUbuntux

@ duoug devo tentar remover o driver synaptics e libinput Xorg driver vez?
MarsUbuntux 19/05

O problema é que você não terá configurações do touchpad nas configurações do sistema e precisará adicionar manualmente, como o exemplo no relatório de erros. O que você estava tentando com o syndaemon originalmente era realmente o padrão, ie. - desative o toque para clicar enquanto estiver digitando, mas não desative o movimento do cursor. Toque para clicar em desativado enquanto você digita?
doug

Respostas:


36

Você pode ter dois drivers de touchpad em execução, em que o syndaemon interage com o errado. Eu tive o mesmo problema em um Dell XPS 13, e esse tópico ( http://ubuntuforums.org/showthread.php?t=2316240 ) me ajudou.

Se você também vir dois dispositivos touchpad, tente desativar um. Como você tem um computador diferente, as instruções no link podem ou não ser literalmente aplicáveis ​​a você.

A partir da postagem mencionada, o procedimento é:

abra o arquivo /usr/share/X11/xorg.conf.d/51-synaptics-quirks.confcomo root com o seu editor de texto Insira o seguinte texto:

# Disable generic Synaptics device, as we're using
# "DLL0704:01 06CB:76AE Touchpad"
# Having multiple touchpad devices running confuses syndaemon
Section "InputClass"
Identifier "SynPS/2 Synaptics TouchPad"
      MatchProduct "SynPS/2 Synaptics TouchPad"
      MatchIsTouchpad "on"
      MatchOS "Linux"
      MatchDevicePath "/dev/input/event*"
      Option "Ignore" "on"
EndSection

Reinicie ou reinicie o Xorg com o comando sudo systemctl restart lightdm Credit, que vai para ddarling no ubuntuforums.org.

Desde janeiro de 2018, a Dell tem uma página oficial em sua Base de Conhecimento sobre Problemas com o Touchpad / Mouse do Ubuntu . A página descreve essa correção para desativar o "SynPS / 2 Synaptics TouchPad" e também sugere a migração para libinput em vez de synaptics como o driver do mousepad.


teve a mesma situação que você:> DLL06E5: 01 06CB: 7A13 Id do touchpad = 14 [ponteiro escravo (2)]> SynPS / 2 Synaptics TouchPad id = 16 [ponteiro escravo (2)] fez o mesmo descrito no link você postou. Funcionou! Agora o touchpad funciona como eu quero. Obrigado
marsUbuntux

A solução mencionada também funcionou para o Dell Lattitude 3570.
chanux 25/07/16

Isso é incrível, eu sempre pensei que isso não é corrigível. Isso salva minha laptap. Muito obrigado. Isso é realmente útil.
Realhu

Como essa resposta merece mais crédito, eu a atualizei para esclarecer um pouco mais.
William S

2
Pode valer a pena puxar a solução do fórum para a resposta, caso o link desapareça.
BeepDog 17/04

30
sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator
  • Abra o indicador do touch pad e clique no ícone do indicador.
  • Você pode alterar as preferências (na guia Ação) para "desativar o touch pad ao digitar"

Felicidades!


1
Isto está disponível como uma extensão gnome: extensions.gnome.org/extension/131/touchpad-indicator
zamnuts

2
não funcionou para mim no Ubuntu Budgie-Remix 16.04.3
r3wt 14/08

para esclarecer o comentário dos zamnuts: você só pode acessar as preferências se instalá-lo como uma extensão gnome conforme o link que ele forneceu (ou pelo menos eu não poderia fazê-lo de outra forma). Não tenho a opção de desativar o touch pad ao digitar.
glS 25/03

Eu votei inadvertidamente (deve ter dormido digitando) e agora não posso removê-lo, a menos que a resposta seja atualizada. (Evidentemente, o askubuntu.com está configurado dessa maneira.) Tentei adicionar apenas espaços, mas são necessários no mínimo 8 caracteres (diferentes?). Se você deseja editar a resposta e adicionar algo como "Sugestão: defina o aplicativo touch pad para iniciar automaticamente, para que você não precise iniciá-lo manualmente a cada login". meu voto negativo.
ST2000

10

Estou usando o ubuntu 17.10 e tentei solução diferente sugerida aqui principalmente não funciona. especialmente o software indicador de touchpad quando iniciado no ubuntu 17.10, basta desativar o touchpad e não consegui encontrar nenhuma maneira de reativá-lo sem reiniciar o laptop. agora eu encontrei esta solução, acho que ainda funciona muito bem: basta usar este comando,

synclient PalmDetect = 1

Isso evitará pelo menos o toque desnecessário da palma da mão no touchpad, o que, no final, proporciona uma vida melhor.


Esta é uma solução muito boa e é uma correção de uma linha. Eu já tinha feito isso antes, mas o perdi. Obrigado por publicar!
Thomas Dignan

Não é perfeito, mas ajuda muito em 17.10, obrigado.
21318 Jack

Isso funciona perfeitamente. Estou surpreso que não seja um padrão, mas é apenas o Linux, eu acho.
Gunchars

@tareqalam: Este comando persiste uma reinicialização?
Lonnie Best

2

Depois de examinar as opções para 'xinput', encontrei uma solução fácil e eficaz para desativar o touchpad Synaptics usando o Ubuntu 16.04 e o Lubuntu 16.04

Em uma janela do terminal, dê a si mesmo acesso administrativo digitando 'sudo -s' e colocando sua senha.

Usando seu editor favorito, como leafpad ou gedit, crie um novo arquivo de script:

leafpad /usr/local/bin/tpadoff

e insira o seguinte:

#!/bin/bash
#/usr/local/bin/tpadoff - turn off touchpad
xinput --disable  'SynPS/2 Synaptics TouchPad'

Salve o arquivo e saia do editor. Em seguida, digite o comando:

chmod 755 /usr/local/bin/tpadoff

para tornar o arquivo executável. Você pode repetir para criar um arquivo tpadon, basta alterar o '--disable' para '--enable'.

Quando terminar, 'saia' da janela do terminal para desativar o acesso do administrador.

As entradas da área de trabalho podem ser criadas abrindo uma nova janela do terminal e use seu editor favorito (neste exemplo, estou usando o leafpad novamente):

cd Desktop
leafpad tpadoff.desktop

e insira o seguinte texto: [Entrada da área de trabalho] Nome = TouchPad desativado Comentário = Desligar o Touchpad Exec = / usr / local / bin / tpadoff Terminal = false Tipo = aplicativo

Salve o arquivo e saia do editor. Em seguida, digite o seguinte comando:

 chmod 775 tpadoff.desktop 

Você também pode repetir para criar um tpadon.desktop, alterando todas as referências 'off' para 'on'.

Quando concluído, você terá duas maneiras de desligar (e opcionalmente ativar) o touchpad clicando duas vezes em um ícone na área de trabalho ou inserindo 'tpadoff' em uma janela do terminal.

Se o seu touchpad for diferente, talvez seja necessário usar 'xinput' nas janelas do terminal para encontrar a sintaxe exata do seu touchpad. Em seguida, edite o arquivo '/ usr / local / bin / tpadoff' para corresponder ao que o xinput relatou.


1
A questão é desativar o touchpad enquanto você digita (ou seja, automaticamente) - portanto, enquanto você não fornece uma resposta direta, eu aprecio muito a qualidade da sua resposta.
21817 GillbertJul

2

Depois de meses procurando uma solução, decidi escrever um programa Python simples para desativar o touchpad durante a digitação. Adicionando o programa aos Aplicativos de Inicialização para que ele seja executado sempre que você iniciar o computador. Você precisa executar xinput listpara determinar o ID do seu teclado, no meu caso, é 17.

xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=11   [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=12   [slave  pointer  (2)]
⎜   ↳ DLL082A:01 06CB:76AF Touchpad             id=14   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=18   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=13   [slave  keyboard (3)]
    ↳ Intel Virtual Button driver               id=15   [slave  keyboard (3)]
    ↳ Intel HID events                          id=16   [slave  keyboard (3)]
    **↳ AT Translated Set 2 keyboard                id=17   [slave  keyboard (3)]**
    ↳ Dell WMI hotkeys                          id=19   [slave  keyboard (3)]
    ↳ Microsoft Microsoft® Nano Transceiver v1.0    id=20   [slave  keyboard (3)]

Aqui está o programa

import time 
import subprocess
import threading

def main():
    subprocess.call('gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true', shell=True)
    p = subprocess.Popen('xinput test 17', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    clickTime = [0, 0]
    def checkTime():
        keys = [37, 50, 62, 64, 105, 108, 133]
        while True:
            out = p.stdout.readline()

            if len(out) < 1:
                break
            key = int(out.split()[-1])
            if key not in keys:
                clickTime[0] = time.time()

    t = threading.Thread(target=checkTime)
    t.start()

    lastTime = 0
    touchpad = True
    while True:
        inactive = time.time() - clickTime[0]
        # print ('inactive for', inactive)
        if inactive > 1:            
            if not touchpad:
                print ('Enable touchpad')
                subprocess.call('gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true', shell=True)
            touchpad = True
        else:
            if touchpad:
                print ('Disable touchpad')
                subprocess.call('gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click false', shell=True)
            touchpad = False
        time.sleep(0.5)

    retval = p.wait()

if __name__ == '__main__':
    main()

Solução incrível, apenas monitorando a atividade do teclado usando xinput e polling para ver se novos eventos aconteciam a cada 0,5 segundos. Isso tem um impacto bastante mínimo na atividade da CPU, mas ainda seria bom se houvesse uma maneira de acionar o comportamento para ocorrer apenas em eventos de teclado. Existe uma razão para você excluir determinadas teclas, como seta para a esquerda e espaço, ou é apenas uma preferência pessoal?
theferrit32

2

No Ubuntu 19.04, achei adequado (para minhas necessidades) simplesmente desativar o recurso "Tocar para clicar":

insira a descrição da imagem aqui

No entanto, a conseqüência disso é que você precisará usar os botões do touchpad (espero que tenha botões) para clicar. Para mim, é uma troca justa.

Se você realmente não tiver botões de clique "esquerdo e direito" (separados do touchpad), poderá calibrar a sensibilidade do touchpad . Eu aprendi sobre isso com Peter Hutterer, neste relatório de bug .

Eu gostaria que os fabricantes de laptops não fizessem laptops com touchpads não recuados. Esses touchpads que estão nivelados com as teclas do teclado (em vez de retroceder) são uma falha de design.

Informe os fabricantes de laptops sobre os problemas que causaram a você por esse mau design, caso contrário eles continuarão fazendo isso às cegas nos modelos futuros.


1
Confirmado que isso funciona muito bem. Percebi uma coisa menor que posso ignorar: quando minhas mãos gordas tocam o touchpad enquanto digito, posso ver o cursor do mouse se mover um pouco, mas pelo menos não o deixa clicar em outro lugar, o que é muito demorado. Idealmente, eu ainda seria capaz de ter o comportamento Tap To Click, mas pelo menos no meu laptop, essa funcionalidade nunca funcionou tão bem assim. Portanto, o trade-off é realmente justo.
bgoodr 15/06

1

Para os usuários do Kubuntu ...

No Kubuntu 16.04 - para desativar o touchpad durante a digitação, tive que desmarcar a caixa de seleção chamada "Desativar toques e rolagem apenas" em configurações-> dispositivos de entrada-> touchpad-> Ativar / desativar o touchpad. Pode parecer óbvio, mas ...


Ubuntu 16.04 trabalhando
Nazmul Hasan

Não existe essa subopção no Ubuntu 18.04, nem Settings nem Tweaks.
dskrvk

0
xinput list |
while read line; do
    if [[ $line == *Touchpad* ]]; then
        tid="$(echo $line | cut -d '=' -f 2 | cut -c 1-2)"
        xinput set-prop $tid "Device Enabled" 0
    fi
done

ou mais concisamente

xinput list | sed -nre 's/^.*Touchpad.*\sid=(\S+).*$/\1/p' | xargs -I{} -- xinput set-prop {} 'Device Enabled' 0

por favor corrija a formatação
Pierre.Vriens

1
Bem-vindo ao Ask Ubuntu! Eu recomendo editar esta resposta para expandi-la com detalhes específicos sobre o que esse comando (sequência) faz. Um comando simples (sequência) raramente é considerado uma resposta. (Veja também Como faço para escrever uma boa resposta? Para o conselho geral sobre que tipos de respostas são consideradas mais valiosas sobre Ask Ubuntu.)
David Foerster
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.