Desativa automaticamente a aceleração do mouse sempre que o mouse é conectado

2

Eu tenho um laptop e geralmente uso um mouse Logitech G5 nele. Eu não gosto de aceleração enquanto uso o mouse. Assim, eu tenho que desabilitar a aceleração toda vez que eu conecto o mouse. Existe uma maneira de desativar automaticamente a aceleração do mouse sempre que eu conecto meu mouse?

    
por Nicolay Doytchev 26.12.2013 / 00:22

2 respostas

3

Sim, isso pode ser feito e é relativamente fácil de fazer. Você precisa criar 3 arquivos - uma regra do udev e dois scripts.

Regra UDEV

Uma regra UDEV detectaria um evento de plug do mouse e acionaria um script sempre que o evento acontecesse. Crie um arquivo em /etc/udev/rules.d :

sudo gedit /etc/udev/rules.d/42-kill-mouse-accel.rules

Cole a seguinte linha:

ACTION=="add", ATTRS{bInterfaceClass}=="03", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/[YOUR_USER_NAME]/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/usr/local/bin/kill-mouse-accel.sh"

Observe a parte que diz [YOUR_USER_NAME] , você precisa substituí-lo pelo seu nome de usuário.
Salve e saia do Gedit.

Script de aceleração

O script de aceleração seria o código acionado pela regra UDEV, que, por sua vez, separaria um script de trabalho em segundo plano. O script de plano de fundo faria o trabalho real. Fazemos isso porque queremos esperar um pouco antes de mudar a aceleração, mas não queremos bloquear a UDEV. Crie um arquivo em /usr/local/bin :

sudo gedit /usr/local/bin/kill-mouse-accel.sh 

Cole o seguinte código:

#!/bin/bash 

export DISPLAY=${DISPLAY} 
/usr/local/bin/kill-mouse-accel-worker.sh &

Salve e saia do Gedit.

Script de aceleração em segundo plano

Este script é onde o comando que desabilita a aceleração do mouse é chamado. Crie um arquivo em /usr/local/bin :

sudo gedit /usr/local/bin/kill-mouse-accel-worker.sh

Cole o seguinte código:

#!/bin/bash 

sleep 2 

for i in $(xinput list | grep [Mm]ouse | sed -e 's/^.*id=\([0-9]*.\).*$//') 
do 
    echo "Found device: $i" 

    # The command disabling mouse acceleration
    xinput set-ptr-feedback $i 10 1 1 
done

Salve e saia do Gedit.

Finalização e teste

Torne os dois scripts executáveis:

sudo chmod +x /usr/local/bin/kill-mouse-accel.sh /usr/local/bin/kill-mouse-accel-worker.sh

Reinicie o UDEV:

sudo service udev restart

Por fim, reconecte seu mouse USB e aguarde alguns segundos. A aceleração do mouse deve ser desativada.

Créditos

O crédito vai para o autor da seguinte postagem no blog: link

    
por Nicolay Doytchev 26.12.2013 / 00:22
1

Eu tenho um problema semelhante e desenvolvi uma solução diferente.

Eu escrevi um script Python que ouve eventos do udev e executa alguns comandos sempre um dispositivo está conectado ou desconectado. No meu caso, um dos comandos desabilita a aceleração do mouse . Escolhi essa solução porque ela não requer permissões de root e, portanto, pode ser aplicada em qualquer sistema Linux. Acabei de deixar o script Python rodando em segundo plano e não se preocupe mais com isso.

Todos os scripts estão disponíveis no link , e também são copiados / espelhados abaixo, para referência.

auto_configure_upon_usb_device_change.py

#!/usr/bin/env python3

import functools
import os.path
import pyudev
import subprocess
import time

def main():
    BASE_PATH = os.path.dirname(os.path.realpath(os.path.abspath(__file__)))
    path = functools.partial(os.path.join, BASE_PATH)
    call = lambda x, *args: subprocess.call([path(x)] + list(args))

    context = pyudev.Context()
    monitor = pyudev.Monitor.from_netlink(context)
    monitor.filter_by(subsystem='usb')
    monitor.start()

    call('xinput_disable_mouse_acceleration.sh')

    for device in iter(monitor.poll, None):
        # Wait a short amount of time to let the device get ready.
        time.sleep(0.250)

        call('xinput_disable_mouse_acceleration.sh')

if __name__ == '__main__':
    main()

xinput_disable_mouse_acceleration.sh

#!/bin/sh

xsp_microsoft() {
    xinput set-prop 'Microsoft  Microsoft Basic Optical Mouse v2.0 ' "$@"
}
xsp_logitech() {
    xinput set-prop 'Logitech USB Laser Mouse' "$@"
}

xsp_microsoft 'Device Accel Profile' -1
xsp_logitech 'Device Accel Profile' -1

xsp_microsoft 'Device Accel Constant Deceleration' 1.5
    
por Denilson Sá Maia 16.06.2015 / 13:19

Tags