Faça com que as configurações do xinput persistam após o mouse USB ser desligado (ainda conectado)

Faça com que as configurações do xinput persistam após o mouse USB ser desligado (ainda conectado)

Quero fazer com que as configurações do xinput para meu mouse USB persistam depois que ele for desligado e ligado novamente. Como posso monitorar esse evento?

Isso não funciona, pois nunca desconecto o receptor USB: Como fazer com que as configurações do xinput persistam após os dispositivos serem desconectados, reconectados e após desligamento, reinicialização, etc.?

Pelo que entendi, o udev pode ser usado para aplicativos de detecção de HW, mas não parece ser capaz de detectar mudanças de estado no dispositivo, como um Logitech Unifying Receiver.

Acho que a chave para resolver isso é rastrear eventos no receptor e escrever um script para executar o comando xinput. Alguém saberia como posso detectar esse evento? É claro que Solaar é capaz de detectar isso, mas isso não significa que seja simples para um usuário não especialista em Linux.

Obrigado!

Responder1

Resolvi esse problema com base em uma sugestão que veio de outro post no Unix Stack Exchange.

Resumindo, executo um script de shell em segundo plano que faz um loop a cada 2 segundos procurando por uma alteração no mouse; quando encontra, ele executa novamente o comando xinput.

A solução original (e mais simples) está postada aqui:

https://unix.stackexchange.com/questions/332573/how-to-make-xinput-commands-permanent/340594#340594

Aqui está o script em que executo ~/.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:

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

Observe que a resposta original sugere monitorar alterações lsusbe executar novamente o comando, o que funciona da mesma forma.

informação relacionada