Desde hace un tiempo soy el feliz poseedor de un mouse N30 de 8BitDo, o “el mouse NES” como le digo yo. El mouse es un homenaje al Nintendo Entertainment System, y usa el mismo tipo de botones y paleta de colores. Sinceramente es más “lindo” que “cómodo”, pero al final del día es un mouse, y no uso tanto el ratón a la hora de programar (para cosas como juegos o diseño, más vale usar otro más ergonómico).
Cuenta con los dos botones tradicionales y la superficie entre medio sirve para hacer scroll, a pesar de no tener ninguna indicación visual. Es raro, pero hace scroll, y también podemos usar el d-pad a la izquierda pero el movimiento es un poco más “robótico”. Algo que extrañaba es el botón del medio del mouse, que uso mucho para cerrar pestañas, arrastrar la pantalla en GIMP, o abrir enlaces en pestaña nueva, entre otras interacciones. Por defecto, presionar los dos botones a la vez no simulaba el botón del medio en mi sistema, así que tuve que investigar el tema.
Encontré que con la herramienta xinput
podemos tanto detectar el mouse como cambiar las características habilitadas. Al correr xinput list
en mi consola, obtengo la lista de dispositivos:
$ xinput list
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ DELL0820:00 044E:121F Mouse id=11 [slave pointer (2)]
⎜ ↳ DELL0820:00 044E:121F Touchpad id=12 [slave pointer (2)]
⎜ ↳ Keychron K8 Keychron K8 id=19 [slave pointer (2)]
⎜ ↳ MOSART Semi. 2.4G Keyboard Mouse Consumer Control id=22 [slave pointer (2)]
⎜ ↳ MOSART Semi. 2.4G Keyboard Mouse id=25 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ DELL0820:00 044E:121F UNKNOWN id=13 [slave keyboard (3)]
↳ Intel HID events id=14 [slave keyboard (3)]
↳ Intel HID 5 button array id=15 [slave keyboard (3)]
↳ Dell WMI hotkeys id=16 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=17 [slave keyboard (3)]
↳ Keychron K8 Keychron K8 id=18 [slave keyboard (3)]
↳ Keychron K8 Keychron K8 id=20 [slave keyboard (3)]
↳ MOSART Semi. 2.4G Keyboard Mouse System Control id=21 [slave keyboard (3)]
↳ MOSART Semi. 2.4G Keyboard Mouse Consumer Control id=23 [slave keyboard (3)]
↳ MOSART Semi. 2.4G Keyboard Mouse id=24 [slave keyboard (3)]
Tiene pinta que es MOSART Semi. 2.4G Keyboard Mouse id=25
. Pasándole el nombre a xinput
, podemos ver qué propiedades tiene:
Device ‘MOSART Semi. 2.4G Keyboard Mouse’:
Device Enabled (215): 1
Coordinate Transformation Matrix (217): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000
, 0.000000, 1.000000
libinput Natural Scrolling Enabled (352): 0
libinput Natural Scrolling Enabled Default (353): 0
libinput Scroll Methods Available (354): 0, 0, 1
libinput Scroll Method Enabled (355): 0, 0, 0
libinput Scroll Method Enabled Default (356): 0, 0, 0
libinput Button Scrolling Button (357): 2
libinput Button Scrolling Button Default (358): 2
libinput Button Scrolling Button Lock Enabled (359): 0
libinput Button Scrolling Button Lock Enabled Default (360): 0
libinput Middle Emulation Enabled (361): 1
libinput Middle Emulation Enabled Default (362): 0
libinput Accel Speed (363): 1.000000
libinput Accel Speed Default (364): 0.000000
libinput Accel Profiles Available (365): 1, 1
libinput Accel Profile Enabled (366): 1, 0
libinput Accel Profile Enabled Default (367): 1, 0
libinput Left Handed Enabled (368): 0
libinput Left Handed Enabled Default (369): 0
libinput Send Events Modes Available (337): 1, 0
libinput Send Events Mode Enabled (338): 0, 0
libinput Send Events Mode Enabled Default (339): 0, 0
Device Node (340): “/dev/input/event20”
Device Product ID (341): 1578, 16641
libinput Drag Lock Buttons (370): <no items>
libinput Horizontal Scroll Enabled (371): 1
libinput Scrolling Pixel Distance (372): 15
libinput Scrolling Pixel Distance Default (373): 15
libinput High Resolution Wheel Scroll Enabled (374): 1
La propiedad de interés es Middle Emulation Enabled
, que tiene el valor 0
. Para emular el botón del medio, cambio el valor a 1
con:
Ahora el tema es hacer que esto se ejecute automáticamente cada vez que inicio el sistema. En esta computadora estoy usando KDE Neon con KDE, así que me metí en las configuraciones del sistema, System > Autostart, y agregué una entrada manual. En “Program” o “Programa” ingresé xinput
y en “Arguments” set-prop 'pointer:MOSART Semi. 2.4G Keyboard Mouse' 'libinput Middle Emulation Enabled' 1
. Esto agrega un archivo .desktop a ~/.config/autostart
y si el mouse está conectado al iniciar el sistema, todo va bien. Si conecto el mouse más tarde, puedo ejecutar el comando a mano desde ese mismo menú.
Y así quedó funcionando la emulación de botón del medio con los dos botones del mouse.
El post Simular botón del medio en mouse 8bitdo N30 en Linux fue publicado originalmente en Picando Código.