Como desativar o touchpad do notebook na conexão do mouse USB (e mais lento o último)? [duplicado]

8

Eu faço não tem function key / fn para isso :(.

Alguma ideia? Talvez existam configurações ou comandos?

Outros assuntos NÃO foram úteis:

  • gpointing-device-settings (a configuração de desabilitação automática é desmarcada);
  • kde-config-touchpad (não pode ser instalado sozinho);
  • não tem ideia de como usar udevd .
por Esamo 07.10.2014 / 17:58

3 respostas

5

SOLUÇÃO - não automática

O script abaixo, quando executado, irá desativar o touchpad se qualquer mouse estiver conectado e mostrar uma notificação.

touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);


if xinput | grep -i "mouse" | grep -i "pointer"

    then xinput set-prop $touchpad_id "Device Enabled" 0 |
         notify-send "Disabling the touchpad..." ""

    else xinput set-prop $touchpad_id "Device Enabled" 1 |
         notify-send "The touchpad is now enabled." ""

fi

Adicionamos também uma situação inversa, embora no meu caso o touchpad seja ativado na desconexão do mouse de qualquer maneira. Salvei o script em um arquivo e o estou executando da seção Unity Launcher Terminal após cada plug de mouse.

AVANÇADO

  1. Mais mouses?

    Esclareça qual mouse deve desativar o touchpad expandindo o valor em "mouse" fragment, nome com base na lista xinput devices.

  2. O mouse com medo é executado de ponta a ponta?

    Eu tive que executar um comando adicional para o mouse - diminuindo cursor acceleration , já que ele é configurado para 10 em cada conexão. Na verdade, depois de um tempo, fiz um script de detecção automática (ele obtém o ID do mouse e seu 'prop' para velocidade; não sei sobre o desempenho de cut ) ...

    touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);
    mouse_id=$(xinput | grep -i "mouse" | grep -i 'pointer' | cut -f2 | cut -d '=' -f2);
    mouse_prop=$(xinput list-props $mouse_id | grep -i "velocity" | cut -f2 | cut -d '(' -f2 | cut -d ')' -f1 );
    
    
    if xinput | grep -i "mouse" | grep -i "pointer"
    
        then xinput set-prop $touchpad_id "Device Enabled" 0 |
             xinput set-prop $mouse_id $mouse_prop 3 |
             notify-send "Disabling the touchpad..." ""
    
        else xinput set-prop $touchpad_id "Device Enabled" 1 |
             notify-send "The touchpad is now enabled." ""
    
    fi
    

Aprendi muito hoje para fazer acima: D.

ALGUÉM PRO?

  1. Seria útil saber como automatizá-lo.

  2. Também curioso porque a configuração do mouse não é salva (2.).

por Esamo 07.10.2014 / 17:58
9

Solução - automática

Obrigado à Esamo e ao seu trabalho.

Para adicionar gatilhos AUTO para conectar o mouse na inicialização:

Crie o arquivo: /etc/udev/rules.d/10-local.rules

Preencha com este conteúdo: (substitua $ USER pelo seu nome de usuário)

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh false"

ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh true"

Exemplo:

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh false"

ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh true"

Em seguida, coloque seu script onde quiser. Eu coloquei em ~ / scripts

touchpad_switcher.sh

#!/bin/sh
enabled=
touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);

if $enabled
then
  xinput set-prop $touchpad_id "Device Enabled" 1 | notify-send "The touchpad is now enabled." ""
else
  xinput set-prop $touchpad_id "Device Enabled" 0 | notify-send "Disabling the touchpad..." ""
fi

Lembre-se de adicionar permissões de execução:

chmod +x touchpad_switcher.sh

Agora simplesmente reinicie! (apenas reiniciar o udev parece não funcionar ...)

Algumas outras coisas úteis:

Algumas informações sobre regras do udev

Exemplo do ArchLinux

Simlar pergunta

    
por Dawid Drozd 26.07.2015 / 13:28
1

O que @David Drozd postou não funcionou para mim no Ubuntu 16.04 .

Parece que o truque com xinput não funciona em udev . Apenas synclient TouchpadOff=[0|1] funcionou. Também ACTION="remove" não funcionou apenas.

Eu finalmente consegui quando adicionei ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'"

A solução completa : crie o arquivo /etc/udev/rules.d/10-local.rules com a seguinte linha (substitua $ USER pelo seu nome de usuário)

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1' "
    
por afternoon_sister 15.08.2016 / 00:40