Fazer as configurações de xinput persistirem após o mouse usb ser desligado (ainda conectado)

2

Eu quero fazer com que as configurações do xinput para meu mouse usb persistam depois que ele foi desligado e ligado novamente. Como posso monitorar esse evento?

Isso não funciona, já que nunca desconectei o receptor usb: Como fazer as configurações de xinput persistirem após os dispositivos estão desconectados, conectados e após o desligamento, reinício, etc?

Até onde eu entendi, o udev pode ser usado para aplicativos de detecção de HW, mas não parece ser capaz de detectar alterações de estado no dispositivo, como um receptor unificador da Logitech.

Acho que a chave para resolver isso é rastrear com sucesso os eventos no Receiver e escrever um script para executar o comando xinput. Alguém saberia como eu posso detectar esse evento? A Solaar é capaz de detectar isso, mas isso não significa que seja simples para um usuário Linux não especializado.

Obrigado!

    
por toxUP 13.10.2015 / 13:35

1 resposta

0

Eu resolvi esse problema com base em uma sugestão que veio de outro post na troca de pilha unix.

Resumidamente, eu executo um script de shell em segundo plano que faz um loop a cada 2 segundos procurando por uma alteração no mouse. Quando ele é encontrado, ele executa novamente o comando xinput.

A solução original (e mais simples) é publicada aqui:

link

Este é o script que eu executo em ~/.xinitrc :

# Map mouse button 8 (top right) to button 2 (top left) and vice versa, run when changes to the mouse occur
while true; do
        NEW_MOUSEID=$(xinput | grep "Expert Mouse" | grep -o -E '[0-9]+' | head -n 1)
        if [ "$MOUSEID" != "$NEW_MOUSEID" ]; then
                MOUSEID=$NEW_MOUSEID
                if [ "$MOUSEID" != "" ]; then
                        xinput --set-button-map $MOUSEID 1 8 3 4 5 6 7 2 9 10 11 12
                fi
        fi
        sleep 2
done &

Estrutura básica:

  • Fique atento a alterações no ID do USB a partir de xinput a cada 2 segundos
  • Se o ID do mouse estiver em branco, ele não está conectado, não execute xinput (você receberá um erro se fizer isso)
  • A análise do comando xinput apenas retorna o ID do dispositivo USB para o mouse "Mouse experiente", ex: "14"

Observe que a resposta original sugere monitorar as alterações em lsusb e reexecutar o comando, o que funciona igualmente bem.

    
por David Parks 27.01.2017 / 18:22