Existe uma maneira de "reiniciar" o driver do touchpad?

64

Eu uso o Ubuntu 14.04 em um laptop, geralmente com um mouse USB externo, teclado e tela conectados. Às vezes, porém, desconecto todos eles, movo o laptop e continuo usando-o com o teclado, a tela e o touchpad integrados.

Em momentos aleatórios, acontece que o touchpad para de funcionar (mas se eu conectar o mouse USB, ele funciona). Embora isso aconteça muito raramente, quando ocorre, é um grande aborrecimento, pois sou obrigado a reiniciar se precisar que o touchpad funcione novamente.

Existe alguma solução alternativa que eu possa tentar, como interromper algum processo que seria reiniciado automaticamente ou algum comando que faria o driver do touchpad reiniciar ou atualizar ou algo assim? Algo que pode "acordar" o touchpad sem ter que reiniciar?

matteo
fonte
Às vezes, fechar a tela do laptop e abrir novamente resolve o problema.
Ilusionista #

Respostas:

32

Eu estava tendo esse problema com um laptop repetidamente até perceber que o touchpad daquele computador tinha seu próprio botão liga / desliga, que eu devia estar batendo por acidente. Notavelmente, o interruptor não ajudou a ligá-lo novamente. Apenas tomei cuidado para não pressioná-lo e, em pouco tempo, comecei a usar um teclado sem fio externo com touchpad sem fio integrado, e não tive esse problema desde então.

UPDATE: (Nota: link abaixo quebrado, a solução está acima). Desde que publiquei essa "solução", publiquei um comentário que aparentemente atendia às necessidades do usuário. Agora que soube que os comentários permanecem apenas temporariamente e são excluídos automaticamente, reposiciono o conteúdo do comentário útil abaixo, que pode ser preservado para outras pessoas:

Eu estava compartilhando a "solução" que funcionou para mim. Hoje me ocorreu pesquisar no Google soluções mais adequadas à sua pergunta original e encontrei o seguinte link. Não é o que eu pessoalmente consideraria "conveniente", mas poderia ser pelo menos mais elegante transformando-o em um script. Eu encontrei isso (veja abaixo) - gyropyge 25/09 às 20:06

Pressione Alt+ F2e digite gksudo modprobe -r psmouseDigite a senha, pressione Entere, em seguida, pressione Alt+ F2novamente para inserir o seguinte gksudo modprobe psmousee pressioneEnter

gyropyge
fonte
não é o meu caso, no entanto
matteo 25/09
2
Eu estava compartilhando a "solução" que funcionou para mim. Hoje me ocorreu pesquisar no Google soluções mais adequadas à sua pergunta original e encontrei o seguinte link. Não é o que eu pessoalmente consideraria "conveniente", mas pelo menos poderia ser mais elegante transformando-o em um script. tuxtrix.com/2010/06/…
gyropyge
Obrigado! Marquei sua resposta como a resposta aceita, embora a resposta esteja realmente no seu comentário (não tive a oportunidade de testá-la, mas parece que é a solução).
Matteo
Obrigado pela consideração do meu comentário posterior. Eu também posso acabar me beneficiando dessa solução no futuro, pois minha solução de tentar não pressionar um botão particularmente fácil de acertar na borda do touchpad não foi particularmente satisfatória.
gyropyge
11
O link estava funcionando para mim, mas por precaução: se você estiver sem movimento do mouse no laptop (touchpad), pressione as combinações de teclas Alt + F2 e digite gksudo modprobe -r psmouse Digite a senha, pressione enter e pressione Alt + F2 novamente para inserir o seguinte gksudo modprobe psmouse
G Trawo
58

Eu encontrei uma maneira de fazer isso:

Primeiro, abra um terminal e imprima todos os dispositivos de entrada para encontrar a identificação necessária para o dispositivo de entrada que você deseja desativar. No terminal, digite:

xinput --list

Próximo: Observe onde diz id = X em uma coluna longa para cada dispositivo de entrada. Você deseja encontrar o ID do dispositivo que corresponde ao dispositivo de entrada que deseja desativar (talvez algo parecido com "touchpad"). Em seguida, substitua X no seguinte comando pelo número de identificação que representa o dispositivo de entrada que você deseja desativar:

xinput disable X

Nota: Se você não tiver certeza de qual ID de dispositivo deve usar para desativar o touchpad, poderá descobrir testando IDs aleatórios e ver se o mouse pad ainda funciona. Verifique se NÃO ESTÁ FAZENDO QUALQUER COISA IMPORTANTE. Salve todo o seu trabalho e esteja preparado para reiniciar o computador se você fizer algo como desativar o teclado. (Você pode ter problemas ao tentar ativá-lo novamente se não conseguir digitar no terminal.

Então você terá que executar esta última linha (obrigado por capturar este Arch Stanton!)

xinput enable X

Motivo: eu precisava desesperadamente de uma resposta para esse problema porque os problemas que eu estava enfrentando com o touchpad tornavam impossível qualquer tipo de trabalho. De repente, em algum momento aleatório ao usar meu laptop, aparentemente sem motivo, meu touchpad entra em algum tipo de "modo especial". Mover apenas um dedo no touchpad faria a tela rolar, em vez de realmente mover o cursor do mouse na tela, por isso era impossível passar o mouse sobre qualquer coisa no broswer sem esforços consideráveis ​​de coordenação para dar conta da tela de rolagem e mouse não em movimento. Eu queria encontrar uma maneira, SEM REINICIAR O PORTÁTIL, para redefinir o touchpad. No lado positivo, redefinir o touchpad com o método acima corrige meu problema.

Atualização: Para facilitar ainda mais a redefinição do touchpad, criei uma tecla de atalho para os comandos listados acima. Quando o meu touchpad entra no fritz, simplesmente faço a combinação de teclas ctrl + super + r e faz a redefinição para mim. Rápido e fácil.

Aqui está como:

-Crie um arquivo dentro do diretório inicial e chame-o de algo como "touchpad-reset.sh".

-Dentro deste arquivo, coloque dois dos três (os dois últimos) comandos anteriores listados acima, exceto que, em vez de usar um número de identificação X para o dispositivo, já que ele está sujeito a alterações com periféricos adicionais (talvez?), Você pode usar isto em vez disso:

Aqui está uma saída do meu computador dentro do terminal usando este comando:

xinput --list

Resultado:

Virtual core pointer                        id=2    [master pointer  (3)]⎜   
   ↳ Virtual core XTEST pointer                 id=4    [slave  pointer  (2)]⎜   
   ↳ Genius 2.4G Wireless Mouse                 id=10   [slave  pointer  (2)]⎜   
   ↳ MSFT0001:00 06CB:75BD UNKNOWN              id=13   [slave  pointer  (2)]⎜   
   ↳ ELAN Touchscreen                           id=12   [slave  pointer  (2)]⎜ 

-Agora o que você faz, substitui o X (que era um ID antes) para desativar o xinput X e ativar o xinput X com o nome correspondente a esse ID entre aspas simples. Por exemplo, do acima exposto, se você quisesse fazer o id = 13, meu dispositivo touchpad, usaria:

xinput disable 'MSFT0001:00 06CB:75BD UNKNOWN'
xinput enable 'MSFT0001:00 06CB:75BD UNKNOWN'

Agora, você está desativando por nome, em vez de número de ID, onde um ID pode mudar com o tempo e, em seguida, você estaria desativando e ativando outro dispositivo.

Por fim, você precisa conceder permissões para tornar este arquivo executável; execute este comando com o diretório ativo no terminal como o diretório inicial (onde você criou o arquivo):

chmod +x your_script_name.sh

Portanto, depois de criar esse arquivo com os comandos apropriados escritos dentro, certificando-se de que ele esteja em seu diretório pessoal, siga as etapas abaixo:

  1. Pressione a tecla super (tecla Windows no PC) no teclado para abrir a barra lateral da unidade. Digite 'configurações do sistema' e pressione a tecla Enter.
  2. Encontre a opção 'Teclado' abaixo de onde diz 'Hardware' e clique nela.
  3. Selecione a guia 'Atalhos'.
  4. Na janela esquerda, selecione 'Atalhos personalizados'
  5. Clique no botão + próximo ao centro inferior.
  6. Uma janela deve aparecer pedindo um nome de descrição e um comando para inserir.
  7. Torne o nome algo como "redefinir o touchpad"
  8. Use este comando: gnome-terminal -x ./name_of_your_script.sh
  9. Clique em 'Aplicar'
  10. Agora você deve ver seu atalho listado e, na extremidade direita, deve dizer "Desativado" ou algum outro lixo. Clique nesse texto e esteja preparado para fazer algum tipo de combinação de teclas, talvez como ctrl + super + r.
  11. Depois de fazer essa combinação de teclas, você está pronto.

Parabéns! Diverta-se.

user3499524
fonte
Então você terá que correr xinput enable X.
Arch Stanton
Ah-ha! Eu esqueci de colocar isso lá? Tiro. Obrigado por adicionar isso lá. Assim como eu para estragar tudo no final.
user3499524
Ahah deixa pra lá, você me salvou :-)
Arch Stanton
xinput list + disable + enable funciona muito bem
axel22
2
enable/ disableTambém trabalham com ID única, em vez de nome do dispositivo
Zlatev
50

Para reiniciar o driver do touchpad do laptop:

Abra o terminal pressionando Ctrl+ Alt+ T e execute o seguinte comando

sudo  modprobe -r psmouse

então

sudo modprobe psmouse

Encontrei a solução aqui e também há solução para um mouse USB

maruf
fonte
Encontrar perfeito. Meu ponteiro fica preso em uma posição que me ajudou a resolvê-lo.
Manikandan Arunachalam
11
isso funcionou para mim - meu touchpad para de funcionar depois de algum tempo. Eu tenho um touchpad ALPS na Dell rodando Xubuntu 16.04
Ur Ya'ar
sudo modprobe psmouse proto=impstrabalhou para mim em um Asus UX303UB + Ubuntu 16.04.2, mas sem recursos multitoque. De alguma forma, de um dia para o outro, preciso executar esse comando para ter o touchpad, nunca mais com gestos.
Pablo #
Isso não funcionou para mim no Dell Precision.
Cerin
Esta solução não funcionou para mim. Ubuntu 18.04 com "SYNA8004: 00 06CB: CD8B Touchpad", Lenovo X1 Carbon Gen 7. Recebo um comportamento rápido do touchpad após sair da hibernação.
SaTa 27/09
9

Se você não souber qual módulo o seu touchpad usa, poderá descobrir com um pouco de pesquisa.

grep -iA2 touchpad /proc/bus/input/devices

para mim isso retorna

N: Name="Elan Touchpad"
P: Phys=
S: Sysfs=/devices/platform/80860F41:03/i2c-11/i2c-ELAN0100:00/input/input10

então veja quais módulos do kernel estão disponíveis nesta categoria:

ls $(find /lib/modules/$(uname -r) -type d -name mouse)

que para mim retorna

appletouch.ko  bcm5974.ko  cyapatp.ko  elan_i2c.ko  gpio_mouse.ko  
psmouse.ko  sermouse.ko  synaptics_i2c.ko  synaptics_usb.ko  vsxxxaa.ko

Faça referência cruzada dos dois - no meu caso, parece que o módulo para o meu touchpad é elan_i2c.ko

Edit: Eu recentemente descobri como obter o nome do driver de forma confiável com um comando complicado, que terdon simplificou muito bem para mim

grep -hriPo 'DRIVER=\K.+' /sys 2>/dev/null | while read driver; do [ -e /lib/modules/$(uname -r)/kernel/drivers/input/mouse/"$driver"* ] && echo $driver; done

Para verificar se você adquiriu o módulo correto, teste o comando para descarregá-lo do kernel:

sudo modprobe -r elan_i2c

O touchpad morrerá instantaneamente se você tiver o módulo certo, para que você possa encontrá-lo facilmente por tentativa e erro. Recarregue-o com

sudo modprobe elan_i2c

Isso efetivamente reinicia o módulo. Você pode executar os dois comandos juntos assim:

sudo modprobe -r elan_i2c && sudo modprobe elan_i2c

Ocasionalmente, tenho que fazer isso no currículo a partir da suspensão.

Zanna
fonte
7

Se você possui um touchpad sináptico:

synclient TouchpadOff=0
AnteBios
fonte
2
Yeyaaaaa! Ubuntu 18.04 LTS com xfce e funcionou como um encanto com Synaptics!
azatar 7/06
6

Aqui está o que estava funcionando para mim é [Zenbook ASUS UX501VW]:

sudo  modprobe -r elan_i2c
sudo  modprobe elan_i2c

E meu touch pad ausente está de volta.

Denis Walrave
fonte
valeu! funciona para o zenbook ux305ca no ubuntu 16.04 lts.
chao
4

O que pode ser mais fácil, e que funcionou para mim, foi recarregar o driver no kernel. O código a seguir localiza primeiro o nome do driver do kernel que lida com o touch pad, depois o descarrega rmmode o recarrega modprobe. Observe que você precisa ser root para executar esses comandos, portanto, execute sudo suprimeiro.

> lsmod | grep touch
hid_multitouch         20480  0 
> rmmod hid_multitouch 
> modprobe hid_multitouch
ChrisR
fonte
2

Para mim, no kernel 4.13.0-46 no Asus para ELAN1200, não era sobre recarregar, elan_i2cmas o hid-multitouchdriver:

sudo modprobe -r hid-multitouch && sudo modprobe -r hid-multitouch
pholat
fonte
meu laptop Asus está usando um driver hid para AMBOS o teclado e o touchpad; portanto, é necessário fazer isso em um único cmdline; caso contrário, você não poderá digitar após modprobe -r.
Tomofumi
1

Tente também gksudo /etc/init.d/hotplug restart

qwr
fonte
1

Uma linha de comando do bash para redefinir um touchpad (com base na resposta @ user3499524):

id=`xinput --list |grep -i touchpad | cut -f2 | cut -f2 -d=` && xinput disable $id && xinput enable $id && echo "The touchpad has been reset."
Fez pouco caso
fonte
1

A solução mais simples pode ser:

  • conecte um mouse
  • vá para Configurações do sistema >> Mouse e Touchpad
  • mude o touchpad para ON
Anthony Britton
fonte
Bem-vindo ao Ask Ubuntu! ;-) As soluções não precisam ser nerds para serem boas! Basta mantê-lo curto e simples ... :-)
Fabby
0

ilusionista.

Eu entendo que você está executando o Ubuntu 14.04; O meu é um pouco diferente (a seguir):

Este laptop: Acer Swift 1 (EUFI); x86-64 bits.

Tipo de sistema operacional: Ubuntu 16.04 LTS.

Tipo de touchpad: SYNA7DAB: 00 06CB: 7DAC Touchpad (synaptics_i2c.ko).

Solução fornecida : https://help.ubuntu.com/community/SynapticsTouchpad/ShortcutKey

Crie um script de arquivo bash (como sugerido: crie um link simbólico para o script bash e mapeie uma tecla de atalho); O conteúdo deve ser o seguinte:

#!/bin/bash

declare -a STATES=(1 0)
DEVICE=$(xinput list --name-only | grep Touchpad)
STATE=$(xinput list-props "$DEVICE" | grep 'Device Enabled' | sed 's/^.*:[ \t]*//')
xinput set-prop "$DEVICE" 'Device Enabled' ${STATES[$STATE]}

Verifique se ele tem permissões executáveis!

sudo chmod +x path/filename.sh

Esta solução funciona muito bem para mim. Espero que isso se aplique a você também.

Detalhes pessoais do próprio problema (possivelmente aplicáveis ​​à sua situação)

Por alguma razão desconhecida: O touchpad deste laptop se tornará automaticamente magicamente inoperante (ainda está executando o AFAIK). Eu tentei remover o mouse óptico baseado em USB; ainda correm para o mesmo problema.

xinput --list dump:

larvae@MST-Laptop:~/Desktop$ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ SYNA7DAB:00 06CB:7DAC Touchpad            id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Logitech USB Receiver                     id=9    [slave  keyboard (3)]
    ↳ HD WebCam                                 id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
    ↳ Acer WMI hotkeys                          id=14   [slave  keyboard (3)]

Despejo de touchpad grep -iA2 / proc / bus / input / devices :

larvae@MST-Laptop:~/Desktop$ grep -iA2 touchpad /proc/bus/input/devices
N: Name="SYNA7DAB:00 06CB:7DAC Touchpad"
P: Phys=i2c-SYNA7DAB:00
S: Sysfs=/devices/pci0000:00/0000:00:17.0/i2c_designware.4/i2c-9/i2c-SYNA7DAB:00/0018:06CB:7DAC.0003/input/input11

Recapitulação da solução ( fornecida pela UBUNTU ): https://help.ubuntu.com/community/SynapticsTouchpad/ShortcutKey

Daniel B
fonte
0

Eu chamo esse script mouse-reset. Ele remove modprobees todos os módulos listados nas respostas a esta pergunta até o momento:

#!/bin/bash

modules=(psmouse hid_multitouch elan_i2c)

for mod in "${modules[@]}"; do
    sudo rmmod "$mod" 2> /dev/null
    sudo modprobe -v "$mod" 2> /dev/null
done
Tom Hale
fonte
0

Estou usando um Apple Macbook Retina Pro; o touchpad às vezes para de funcionar. A maioria dos métodos acima não encontrará o driver, pois o nome não contém 'mouse' ou 'touch'.

Para encontrar o driver do touchpad, no meu caso bcm5974:

MacBookPro:~$ xinput list-props 11
Device 'bcm5974':
    Device Enabled (147):   1`
...

Em seguida, para descarregar e recarregar:

MacBookPro:~$ sudo modprobe -r bcm5974
MacBookPro:~$ sudo modprobe bcm5974

Resolvido.

user118684
fonte
11 é o número do dispositivo específico no seu caso, você precisará encontrar esse número xinput --listantes de poder usá-lo aqui.
Yaron