Ativar / desativar o touchpad


17

Eu consegui instalar o Ubuntu 16.04 no meu asus ux501 vw, mas alguns dos meus atalhos não estão funcionando. Não estou tentando corrigi-los, mas apenas um: o atalho que permite ativar ou desativar o touchpad, para que eu possa escrever documentos longos trabalhando com o touchpad.

Tentei encontrá-lo no google, mas não consegui nada.

Alguém pode me explicar como consertar isso, por favor? Obrigado !

Respostas:


24

Eu criei esse script bash a partir da resposta do negusp . Encontra e alterna o dispositivo TouchPad. Você pode configurar um atalho personalizado para ele nas configurações do sistema.

#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' )
state=$( xinput list-props "$TPdevice" | grep "Device Enabled" | grep -o "[01]$" )

if [ "$state" -eq '1' ];then
    xinput --disable "$TPdevice" && notify-send -i emblem-nowrite "Touchpad" "Disabled"
else
    xinput --enable "$TPdevice" && notify-send -i input-touchpad "Touchpad" "Enabled"
fi

Estou configurando Ctrl+ Shift+ F9para ativar e desativar o touchpad da seguinte maneira:

insira a descrição da imagem aqui

Editar: Pode ser necessário tornar seu script executável com o comando chmod + x filename ou entre com / bin / bash / filepath no campo Comando da janela de atalho Personalizado.


2
Raramente há uma necessidade de encadear grepe sed. Você pode facilmente consolidar os dois para sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'.
David Foerster

3
Uma pequena correção no roteiro para o Ubuntu 17.10 depois de obter linha de erro 6: [:: expressão inteira esperado incapaz de encontrar o dispositivo Alterar TouchPad para Touchpad
Gregor Grajzar

11
Resposta incrível! Minhas únicas adições são adicionar zenity --info --text "Touchpad DISABLED" --timeout=2e zenity --info --text "Touchpad ENABLED" --timeout=2aos blocos ife else, respectivamente, para abrir uma janela que anuncia o novo estado e, em seguida, fecha automaticamente em 2 segundos.
Gabriel Staples

11
Veja minha pequena modificação aqui: askubuntu.com/a/1109515/327339
Gabriel Staples

11
Atualização: alguns sistemas são exibidos em Touchpadvez de TouchPadna saída de xinput, portanto, atualizei minha resposta para procurar por ambos. Além disso, também corrigi corretamente o problema da roda de rolagem lenta, usando imwheel. Veja ans completo aqui: askubuntu.com/questions/844151/enable-disable-touchpad/…
Gabriel Staples

11

Você quer um atalho, mas pode facilmente colocar 2 scripts na área de trabalho e executá-los.

Primeiro, vá para o terminal. Digite xinput. Exemplo de saída:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [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)]
    ↳ Laptop_Integrated_Webcam_1.3M             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys 

Encontre o Touchpad. Neste exemplo, o touchpad é listado como id = 12

Crie o primeiro script com isso:

#!/bin/bash
xinput enable 12

Salve e nomeie-o touchpadenable.she, no terminal, marque-o como executável com:

chmod +x touchpadenable.sh

Faça exatamente a mesma coisa novamente, mas renomeie o arquivo como touchpaddisable.sh(ou o que for) e, em vez de

xinput enable 12

Use o comando

xinput disable 12

Salve, marque como executável e você poderá executar os scripts na área de trabalho. Nota: pode ser necessário clicar com o botão direito do mouse nos scripts, clicar em propriedades e permitir que seja executado.


Ei, obrigado pela resposta! Vou usar algo assim! Apenas uma coisa que você acha que seria possível se eu o fizesse em um arquivo de script para que eu possa usar o mesmo atalho?
Rei

@Thomas Veja esta resposta: askubuntu.com/questions/597395/…
negusp:

6

Você deve fazer como a resposta do negusp , primeiro verifique seu dispositivo de toque e mostrará algo como isto:

~ $ xinput
Id ID do ponteiro do núcleo virtual = 2 [ponteiro mestre (3)]
Id ↳ ID do ponteiro do núcleo virtual XTEST = 4 [ponteiro escravo (2)]
Id ↳ ID do mouse óptico USB PixArt Dell MS116 = 10 [ponteiro escravo (2)]
Id id ID do TouchPad SynPS / 2 Synaptics = 14 [ponteiro escravo (2)]
↳ ↳ DLLC6B2: 00 06CB: 75BF ID do touchpad = 12 [ponteiro escravo (2)]
Id ID do teclado do núcleo virtual = 3 [teclado principal (2)]
    Id ID do teclado XTEST do núcleo virtual = 5 [teclado escravo (3)]
    Button ID do botão liga / desliga = 6 [teclado escravo (3)]
    Bus ID do barramento de vídeo = 7 [teclado escravo (3)]
    Id ID do botão liga / desliga = 8 [teclado escravo (3)]
    Id Id do botão de suspensão = 9 [teclado secundário (3)]
    ↳ Integrated_Webcam_HD id = 11 [teclado escravo (3)]
    ↳ AT Traduzido Conjunto 2 id do teclado = 13 [teclado escravo (3)]
    Id ID de teclas de atalho Dell WMI = 15 [teclado escravo (3)]
    ↳ ID de teclas de atalho sem fio da DELL = 16 [teclado escravo (3)]

No meu caso, é o dispositivo com id = 12, agora crie um script bash com o nome "toggle-touch" na sua pasta Desktop em uma pasta chamada "bin", seria "~ / Desktop / bin" e copie o próximo código, verifique a variável do dispositivo está apontada para o meu touch id = 12, corrija-o com o seu caso:

#!/bin/bash

device=12
state=`xinput list-props "$device" | grep "Device Enabled" | grep -o "[01]$"`

if [ $state == '1' ];then
  xinput --disable $device
else
  xinput --enable $device
fi

Defina com esta permissão de execução de script:

chmod 775 /Desktop/bin/toggle-touch

Finalmente, você pode adicionar esse caminho ao ".bashrc" da sua pasta pessoal, basta adicionar esta linha ao final do arquivo:

PATH=$PATH:~/Desktop/bin

atualize o caminho com:

. .bashrc

Então você pode executar esse script de qualquer lugar, espero que ajude.


1

No meu Ubuntu 18.04 , a resposta de Almas Dusal não funcionou até que eu alterasse o 'p' para minúsculo na TouchPadseguinte linha do código:

read TPdevice <<< $( xinput | sed -nre '/Touchpad/s/.*id=([0-9]*).*/\1/p' )

Depois que o touchpad foi desativado e ativado com êxito pelo script, mas isso não foi refletido na tela de configurações do Mouse e Touchpad . Criei o novo script a seguir, que alterna o touchpad enquanto atualiza a exibição de configurações.

#!/bin/bash

state=$( gsettings get org.gnome.desktop.peripherals.touchpad send-events )

if [ "$state" = "'enabled'" ];then
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled' \
        && notify-send -i touchpad-disabled-symbolic "Touchpad" "Disabled"
else
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled' \
        && notify-send -i input-touchpad-symbolic "Touchpad" "Enabled"
fi

1

Testado e funciona no Ubuntu 14.04, 16.04 e 18.04.

Faça como a resposta de @Almas Dusal , que gosta da resposta de @ negusp , exceto usar meu script modificado, pois possui 3 benefícios adicionais ( UPDATE: os benefícios 1 e 3 abaixo foram adicionados em 12 de setembro de 2019 ):

  1. Ele pesquisa a saída de xinputambos TouchpadAND TouchPad, já que alguns sistemas têm P capitalizado enquanto outros não. Isso torna meu script compatível com mais sistemas (espero que TODOS os sistemas).
  2. Ele adiciona as janelas pop-up de fechamento automático de 2 segundos via zenitypara mostrar se o seu touchpad está agora ATIVADO ou DESATIVADO. Veja as capturas de tela dessas janelas pop-up abaixo.
  3. Ele corrige corretamente a velocidade da roda de rolagem, ativando imwheel(que corrige o problema da roda de rolagem lenta no Ubuntu / Linux ao usar uma roda de rolagem do mouse) quando você está usando um mouse, enquanto desativa imwheelao usar um touchpad, pois, imwheelcaso contrário, torna a rolagem do touchpad realmente muito complicada quando ativado.
#!/bin/bash

# GS_toggle_touchpad.sh
# - toggle the touchpad on and off

# Gabriel Staples
# Written: 2 Apr. 2018 
# Updated: 12 Sept. 2019 

# References:
# - /ubuntu//a/874865/327339
# - /ubuntu/844151/enable-disable-touchpad/1109515#1109515 <-- my own ans!

# Search for id number of "TouchPad" OR "Touchpad" in `xinput` list; manually type `xinput` to see all your devices
read TouchPadDeviceId <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' ) 

state=$( xinput list-props "$TouchPadDeviceId" | grep "Device Enabled" | grep -o "[01]$" )

echo "TouchPadDeviceId = $TouchPadDeviceId"
echo "state = $state"

if [ "$state" -eq '1' ];then
    xinput --disable "$TouchPadDeviceId"
    zenity --info --text "Touchpad DISABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # imwheel -b "4 5"
else
    xinput --enable "$TouchPadDeviceId"
    zenity --info --text "Touchpad ENABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # killall imwheel
fi

Observe que a coisa imwheel só é necessária se você estiver seguindo esta resposta para corrigir também a velocidade da roda de rolagem: Corrija permanentemente a velocidade de rolagem do Chrome .

Agora, atribua a ele uma tecla de atalho de Ctrl+ Alt+ P(ou o que você escolher [o 'P' significa touch'P'ad no meu caso]). Minha adição ao script acima é a zenityparte da janela pop-up de fechamento automático, que descrevo mais na minha resposta aqui ( /superuser//a/1310142/425838 ).

Agora, quando uso o atalho acima, vejo esta janela pop-up, que fecha automaticamente após 2 segundos:

insira a descrição da imagem aqui

E se eu pressionar novamente, recebo esta janela pop-up, que fecha automaticamente após 2 segundos:

insira a descrição da imagem aqui

Perfeito!

Como um bônus adicional, se você é um usuário pesado de um mouse, basta adicionar o comando que chama seu script acima aos seus programas de inicialização no Ubuntu, para que ele execute e desative o track pad toda vez que o computador iniciar! Eu tenho esse conjunto para que eu possa parar de bater no track pad com a base da minha mão e excluir coisas acidentalmente o tempo todo! Agora, quando minha mão bate no track pad, nada acontece porque está desativado. :)

Nota: tudo isso funciona muito bem no Ubuntu 18.04, bem como em versões mais antigas. Eu testei no Ubuntu 18.04 e Ubuntu 14.04. Aqui está uma captura de tela da janela de configurações de atalho no 18.04:

insira a descrição da imagem aqui

Relacionado:

  1. Corrija permanentemente a velocidade de rolagem do Chrome

Não reativa no meu HP Probook. Existem 2 itens no xinput SynPS/2 Synaptics TouchPade SYNA306A:00 06CB:CD0B Touchpad. A primeira execução desativa uma, a segunda desativa a outra. A partir daí, alternará o segundo, mas nunca o primeiro.
Rtaft # 9/19

0

Deixando meu script aqui (mais ou menos o mesmo que acima). Funciona imediatamente, sem necessidade de pesquisa prévia do ID do dispositivo.

#!/bin/bash

function query_device_id {
    xinput list | grep -i touchpad | sed 's/.*id=\([0-9]*\).*/\1/g'
}

let device_id=$(query_device_id)

let state=$(xinput list-props $device_id | grep Enabled | awk '{print $4;}')

let new_state=$((1 - $state))

xinput set-prop $device_id "Device Enabled" $new_state

0

Crie um script de shell e cole o código abaixo nele e denomine touchPadDisable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput disable $temp

Crie outro script shell e cole o código abaixo nele e denomine touchPadEnable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput enable $temp

O primeiro script desativará o touchpad e o segundo ativará o touchpad.

Você pode adicionar esse script a atalhos personalizados nos teclados.


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.