Quiero que la configuración de xinput para mi mouse USB persista después de apagarlo y encenderlo nuevamente. ¿Cómo puedo monitorear este evento?
Esto no funciona porque nunca desconecto el receptor USB: ¿Cómo hacer que la configuración de xinput persista después de desconectar, volver a enchufar los dispositivos y después de apagarlos, reiniciarlos, etc.?
Hasta donde tengo entendido, udev se puede usar para aplicaciones de detección de HW, pero no parece ser capaz de detectar cambios de estado en el dispositivo, como un receptor Logitech Unifying.
Supongo que la clave para resolver esto es realizar un seguimiento exitoso de los eventos en el receptor y escribir un script para ejecutar el comando xinput. ¿Alguien sabría cómo puedo detectar este evento? Por supuesto, Solaar es capaz de detectar esto, pero eso no significa que sea sencillo para un usuario no experto de Linux.
¡Gracias!
Respuesta1
Resolví este problema basándome en una sugerencia que surgió de otra publicación en Unix Stack Exchange.
En pocas palabras, ejecuto un script de shell en segundo plano que se repite cada 2 segundos buscando un cambio en el mouse, cuando encuentra uno, vuelve a ejecutar el comando xinput.
La solución original (y más simple) está publicada aquí:
https://unix.stackexchange.com/questions/332573/how-to-make-xinput-commands-permanent/340594#340594
Aquí está el script que ejecuto ~/.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 &
Estructura basica:
- Esté atento a los cambios en la ID del USB desde xinput cada 2 segundos
- Si el ID del mouse está en blanco, no está conectado, no ejecute xinput (obtendrá un error si lo hace)
- El análisis del
xinput
comando simplemente devuelve el ID del dispositivo USB para el mouse "Expert Mouse", por ejemplo: "14"
Tenga en cuenta que la respuesta original sugiere monitorear los cambios lsusb
y volver a ejecutar el comando, eso funciona igual de bien.