Existe uma maneira de “reiniciar” o driver do touchpad?

42

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

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

Existe alguma solução alternativa que eu possa tentar, como matar algum processo que seria reiniciado automaticamente ou algum comando que faria com que o driver do touchpad fosse reiniciado ou atualizado ou algo assim? Qualquer coisa que possa "acordar" o touchpad sem ter que reiniciar?

    
por matteo 25.09.2014 / 12:45

10 respostas

20

Eu estava tendo esse problema com um laptop repetidamente até que percebi que o touchpad daquele computador tinha seu próprio botão liga / desliga, que eu devo ter acertado acidentalmente. Notavelmente, o switch não ajudou a ligá-lo novamente. Acabei de tomar 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.

ATUALIZAÇÃO: (Nota: link abaixo quebrado, a solução está acima) Desde postar essa "solução", publiquei um comentário que aparentemente atendia às necessidades do usuário. Tendo apenas acabado de saber que os comentários permanecem apenas temporariamente e são excluídos automaticamente, estou repostando o conteúdo do comentário útil abaixo para que ele possa ser preservado para outras pessoas:

Eu estava compartilhando a "solução" que funcionou para mim. Hoje me ocorreu buscar no Google por soluções mais adequadas à sua pergunta original e encontrei o seguinte link. Não é o que eu pessoalmente consideraria "conveniente", mas poderia pelo menos ser mais elegante, fazendo dele um roteiro a partir disso. Eu encontrei isto (veja abaixo) - gyropyge Sep 25 às 20:06

  

Pressione Alt + F2 e digite gksudo modprobe -r psmouse Digite a senha, pressione Enter e, em seguida, pressione Alt + F2 novamente para inserir o seguinte gksudo modprobe psmouse e, em seguida, pressione Enter

    
por gyropyge 25.09.2014 / 12:56
41

Eu encontrei uma maneira de fazer isso:

Primeiro, abra um terminal e imprima todos os dispositivos de entrada para encontrar o ID necessário 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ê quer encontrar o ID do dispositivo que corresponde ao dispositivo de entrada que você deseja desativar (talvez algo que soa como "touchpad"). Em seguida, substitua X no seguinte comando com o número de identificação que representa o dispositivo de entrada que você deseja desativar:

xinput disable X

Nota: Se não tiver certeza de qual id do dispositivo você deve usar para desativar o touchpad, você pode descobrir testando ids aleatórios e verificando se o mouse pad ainda funciona. Certifique-se de que você 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 para tentar ativá-lo novamente se não puder digitar no terminal.

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

xinput enable X
Razão: Eu precisava desesperadamente de uma resposta para este problema porque os problemas que eu estava tendo com o meu touchpad tornavam impossível qualquer tipo de trabalho. De repente, em algum momento aleatório ao usar meu laptop, aparentemente sem razão, meu touchpad entra em algum tipo de "modo especial". Simplesmente mover um dedo no meu touchpad faria com que a tela rolasse, em vez de realmente mover o cursor do mouse na tela, de modo que era impossível colocar o mouse sobre qualquer coisa em broswer sem esforços consideráveis de coordenação para considerar a tela de rolagem e mouse não em movimento. Eu queria encontrar um caminho, SEM REINICIAR O LAPTOP, para redefinir o touchpad. No lado positivo, a redefinição do touchpad com o método acima corrige meu problema.

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

Veja como:

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

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

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, você substitui o X (que era um id antes) para xinput disable X e xinput enable X com o nome correspondente a esse id dentro de aspas simples. Por exemplo, se você quisesse fazer isso para id = 13, meu dispositivo touchpad, você usaria:

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

-Então, você está desativando pelo nome em vez do número de ID, em que um ID pode possivelmente mudar no tempo e, em seguida, você estaria desativando e ativando algum outro dispositivo.

Finalmente, você precisa dar as permissões para tornar este arquivo executável; execute este comando com seu diretório de trabalho no terminal como seu diretório pessoal (onde você criou o arquivo):

chmod +x your_script_name.sh

Portanto, assim que você criar este arquivo com os comandos apropriados escritos por dentro, verifique se ele está 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" em "Hardware" e clique nela.
  3. Selecione a guia "Atalhos".
  4. Na janela da esquerda, selecione "Atalhos personalizados"
  5. Clique no botão + perto do centro da parte inferior.
  6. Uma janela deve aparecer pedindo um nome de descrição e um comando para colocar.
  7. Torne o nome algo como "redefinir 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, à direita, ele deve dizer "Desabilitado" 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! Divirta-se.

    
por user3499524 05.12.2015 / 06:56
27

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

    
por maruf 14.01.2016 / 15:27
7

Se você não sabe qual módulo seu touchpad usa, você pode 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

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

Referência cruzada - no meu caso, parece que o módulo do meu touchpad é elan_i2c.ko

Editar: Eu recentemente descobri como obter com segurança o nome do driver em uso com um comando complicado, o 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ê tem 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 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

Eu ocasionalmente tenho que fazer isso no currículo da suspensão.

    
por Zanna 05.09.2016 / 08:11
5

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

sudo  modprobe -r elan_i2c
sudo  modprobe elan_i2c

E o meu touch pad está de volta.

    
por Denis Walrave 04.09.2016 / 18:25
4

O que pode ser mais fácil, e que funcionou para mim, foi recarregar o driver no kernel. O código a seguir primeiro encontra o nome do driver do kernel que manipula o touch pad, depois descarrega-o com rmmod e recarrega-o com modprobe . Note que você precisa ser root para executar esses comandos, então execute sudo su primeiro.

> lsmod | grep touch
hid_multitouch         20480  0 
> rmmod hid_multitouch 
> modprobe hid_multitouch
    
por ChrisR 19.11.2017 / 21:47
1

Se você tem um touchpad de synaptics:

synclient TouchpadOff=0
    
por AnteBios 25.09.2016 / 09:53
1

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

    
por qwr 01.03.2017 / 08:03
1

Uma linha de comando 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."
    
por NeverMinded 06.04.2018 / 21:30
0

ilusionista.

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

Este portátil: Acer Swift 1 (EUFI); x86-64 bits.

Tipo de SO: Ubuntu 16.04 LTS.

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

Solução fornecida : link

Crie um script de arquivo bash (como sugerido: crie um symlink para o script bash e mapeie uma hotkey para ele); 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]}

Assegure-se de que tenha permissões eXecutable!

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 não-funcional (ainda está executando o AFAIK). Eu tentei remover o mouse óptico baseado em USB; ainda se deparar com o mesmo problema.

xinput --list despejo:

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

grep -iA2 touchpad / proc / barramento / entrada / dispositivos dump:

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 por UBUNTU ): link

    
por Daniel B 29.12.2017 / 10:59