Saltar al contenido

Reasignar botones del ratón en GNU/Linux

Desde hace algún tiempo utilizo ratones con botones laterales (también identificados como 6to y 7mo botón), los que típicamente vienen asignados a la función «avanzar» y «retroceder» y son bastante habituales en cualquier ratón gamer. Si aún no queda claro de qué voy a hablar hoy, a continuación dejo una imagen con estos botones señalados mediante flechas.

Si tenés un ratón con estos botones adicionales es casi seguro que vienen asignados a estos atajos que mencionaba antes, y posiblemente te ocurra como a mí y sean atajos que no uses habitualmente. Durante bastante tiempo ignoré estos botones y los limité a un uso bastante esporádico, hasta que se me ocurrió la posibilidad de reasignarlos a otras funciones que sí me resultaran útiles. Afortunadamente en sistemas GNU/Linux tenemos varias utilidades que nos permiten reasignar teóricamente cualquier pulsación del ratón o teclado a la función que deseemos.

En mi uso de la PC las funciones «avanzar» y «retroceder», que nos permiten entre otras cosas desplazarnos en el historial de navegación (sitio anteriormente visitado / último sitio) no me resultaban útiles, pero en cambio leo bastante documentación y me pareció interesante asignarlos a los botones «Avanzar página» y «Retroceder página» que me permiten desplazarme de forma más ágil entre textos largos en cualquier aplicación.

A continuación les comento cómo he estado reasignando los botones del ratón, en principio en distribuciones Debian y derivadas y con el servidor gráfico X.org. En general debe funcionar en otras distribuciones si cambiamos los comandos de instalación, aunque no funcionará en el servidor gráfico Wayland.

Nota: Si no estás al tanto de qué servidor gráfico utiliza tu distribución puedes usar el comando echo $XDG_SESSION_TYPE, si el resultado es «x11» se está usando X.org, si el resultado incluye «wayland» se está usando este último.

Para enlazar los botones del mouse a combinaciones de teclas uso las siguientes herramientas:

    xbindkeys: un programa que captura pulsaciones (del ratón) en el entorno gráfico y ejecuta un comando asociado
    xev: una herramienta que muestra detalles de pulsaciones (y otros eventos) en el entorno gráfico
    xdotool: herramienta de automatización que permite simular mediante comandos entradas de teclado y ratón

Lo primero es instalar los paquetes requeridos:

sudo apt install xbindkeys x11-utils xdotool

Luego, vamos a ejecutar xev y pulsar los botónes del ratón que queremos reasignar para identificar su número.

xev | grep button

Primero pulsé primero «avanzar» y luego «retroceder» y la salida fue esta (los botones son 9 y 8):

$ xev | grep button
    state 0x10, button 9, same_screen YES
    state 0x10, button 8, same_screen YES

En mi caso quiero asignar a estos botones las teclas «Avanzar página» y «Retroceder página» cuyos códigos son ‘Next’ y ‘Prior’. Otras opciones podrían ser Control_L para la tecla de Control izquierdo o combinaciones como ‘Control_L+Alt_L+Delete’, si no estás seguro podés identificarlos ejecutando este comando (y presionando las teclas a identificar):

xev | sed -ne '/^KeyPress/,/^$/p'

Aquí un ejemplo de salida presionando la tecla «Retroceder página» (en la tercera línea de la salida vemos ‘Prior’):

$ xev | sed -ne '/^KeyPress/,/^$/p'
KeyPress event, serial 35, synthetic NO, window 0x8e00001,
    root 0x6b5, subw 0x0, time 46863880, (-60,215), root:(2482,674),
    state 0x10, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Finalmente, teniendo presente los números de botones que queremos reasignar y el código de las teclas o combinación de teclas a asignar ,vamos a crear el archivo de configuración de xbindkeys en nuestra carpeta de usuario.

El archivo en cuestión es .xbindkeysrc y en mi caso lo creo desde línea de comandos con vim, pero es posible hacerlo de forma gráfica desde cualquier explorador de archivos (normalmente clic derecho, Nuevo archivo, Documento de texto plano).

En este archivo vamos a ingresar bloques de texto como este:

"xdotool key 'TECLAS'"
       b:BOTON

Donde TECLAS son los códigos de teclas que identificamos anteriormente, y BOTON es el número de botón del ratón.

En mi caso, la reasignación que comenté antes quedó así:

"xdotool key 'Prior'"
    b:9

"xdotool key 'Next'"
    b:8

Luego, basta con ejecutar el comando xbindkeys y ya estarán funcionando las nuevas asignaciones de los botones. En muchas distribuciones GNU/Linux si el archivo de configuración existe esta utilidad se inicia de forma automática con el sistema, si no es así en tu distribución deberás agregarlo al inicio automático.

En mi caso la reasignación que uso es muy simple, pero esto ofrece muchas posibilidades, por ejemplo asignar estos botones a combinaciones de teclas para desplazarnos entre escritorios virtuales, podemos usar otras «teclas» especiales para subir y bajar el volúmen, o aprovechar otros comandos y ejecutar aplicaciones o scripts. Sin dudas las posibilidades son muchas.