Configuración de Logitech Mx



El siguiente artículo pretende ayudar a configurar todos los ratones Logitech de la serie MX, yo tengo un MX 700 y un MX 310 y funcionan perfectamente.

Aunque simplemente con pinchar el ratón en nuestro PC funciona, las funcionalidades extra de los botones que trae este ratón no provocarán ningún tipo de efecto a menos que los configuremos.

Yo he logrado hacer funcionar todos menos el "task switch" dado que no me manejo demasiado con imwheel, pero creo que es con esa herramienta con la que se debe poder conseguir, si bien todas las webs en las que he mirado, comentan que nadie lo ha logrado aún.

1. Requerimientos del sistema:



No es la finalidad de este artículo explicar cómo se ha de compilar imwheel, el kernel o el servidor X, se da por supuesto que se sabe hacer, no obstate, imwheel se encuentra en apt de Debian SID (al menos).

2. Identificación de los botones del ratón

3. Configuración de XFree86



Para soportar los botones extras de nuestro MX 700 tenemos que reconfigurar el XFree86, para decirle el número de botones que tiene el nuevo ratón. Para ello, editamos el fichero /etc/X11/XF86Config-4 y ponemos algo como lo siguiente:

 Section "InputDevice"
 Driver       "mouse"
 Identifier   "MX700" #o el identificador que nos de la gana
 Option       "ButtonNumber" "7"
 Option       "Buttons" "7"     
 Option       "Device" "/dev/input/mice" # en el caso de ser USB
 # Option     "Device" "/dev/psaux" # en el caso de ser PS2
 Option       "InputFashion" "Mouse"
 Option       "Name" "USB-Mouse;ExplorerPS/2"
 Option       "Protocol" "ExplorerPS/2"
 Option       "ZAxisMapping" "6 7"
 EndSection


La opción "Buttons" y "ButtonNumber, al menos es la que pone su herramienta de configuración de las X) le dicen al servidor X cúantos botones tiene el ratón. Lo ponemos a 7 ya que no hemos logrado hacer funcionar el botón "task switch".

La opción "Device" define a qué puerto va pinchado físicamente el ratón. Si tenemos un ratón USB, hemos de poner /dev/input/mice y si lo tenemos por PS/2 (con el conector que trae de serie) ponemos /dev/psaux.

La opción "Protocol" define cómo se han de interpretar los bits que llegan del ratón. Hay varios tipos de protocolos, pero el que más se acerca al comportamiento del Logitech MX 700 es el Explorer/PS/2. El que ponga PS/2 no significa que haya de estar pinchado al puerto PS/2, sino que cuando se creó el protocolo, los ratones que lo implementaban iban por PS/2.

Por desgracia, es un protocolo para los ratones Intellimouse Explorers de Microsoft, que son totalmente distintos a los Logitech serie MX.

La opción "ZAxisMapping" es para poder usar la rueda del ratón. Como se comentó antes, los eventos de la rueda se interpretan como movimientos en el eje Z, que algunas aplicaciones no entienden. Asimismo, necesitamos mapear los botones 6 y 7 para que también realicen el movimiento scroll. Por otro lado, muchas aplicaciones tampoco entienden los botones 6 y 7 pero sí entienden los botones 4 y 5, de hecho, asumen que esos botones representan el desplazamiento de la rueda. Basandonos en todo ello, lo más normal sería cambiar el movimiento de "ZAxisMapping" a los botones 4 y 5, pero ello provocaría que los botones de los pulgares no funcionasen.

Para lograr que los botones de los pulgares funcionen, hemos de utilizar xmodmap. xmodmap generalmente, lo que hace es mapeos de teclado, pero también nos permite mapear botones del ratón. Así que con ella vamos a mapear los botones 6/7 a 4/5 y viceversa. El comando a teclear es el siguiente:
 $ xmodmap -e "pointer = 1 2 3 6 7 4 5"


Con esto hemos logrado que los botones de scroll funcionen aunque los pulgares no hacen nada.

Para conseguir que los botones de los pulgares funcionen, hay que usar imwheel, que intercepta los eventos de ratón del servidor X. Cuando recibe un evento lo captura y ejecuta lo que tengamos configurado, que puede ser un evento de teclado o una combinación de teclas. Es por ello que creo que con imwheel se podrá hacer funcionar el botón task switch, aunque parece que las X aún no reconocen el 8º botón.

La sintaxis de imwheel a mi personalmente, me lia un poco y no he sido capaz de encontrar un buen tutorial sobre el tema, a parte de las páginas man :(

Yo no he configurado nada en imwheel, porque quería que los botones tuvieran la funcionalidad por defecto que configura Logitech, pero se pueden hacer muchas cosas, sirva como ejemplo poner que hagan "Cortar" y "Pegar" con lo que sería suficiente una línea como la siguiente en el fichero /etc/imwheelrc (si lo queremos global y si no, en nuestro /.imwheelrc)
  None,Left,Control_L V
  None,Right,Control_L X


He de explicar que imwheel cree que los botnes de los pulgares se llaman "left" y "right", ello es debido al protocolo ExplorerPS/2, no confundirse.

4. Ejecutando al arrancar el PC



Todo esto es muy bonito, pero resulta que si no lo ponemos en su correcto lugar, cada vez que arrancamos las X los botones se van a volver locos, porque no está ejecutado el xmodmap. Por eso hay que colocarlo para que funcione perfectamente todo al arrancar y sin mayor preocupación. Hay que cargarlo en el archivo Xsession de nuestro gestor de arranque de sesión, ya que es algo que queremos que funcione para todos los usuarios, tampoco vamos a hacerles la vida imposible a los que no sepan configurarlo ;) Yo uso gdm con kde y funciona de maravilla, pues hubo gente que me dijo que a lo mejor no iba a ir bien por ser el gestor de inicio de Gnome y usar el escritorio de KDE, así que supongo que usando las correspondencias lógicas también ha de funcionar.

En el fichero /etc/gdm/Xsession en la primera linea, antes de PROGNAME=Xsession, hemos de poner xmodmap -e "pointer = 1 2 3 6 7 4 5", probé a ponerlo al final, pero no iba bien. En caso de usar kdm, el fichero será /etc/kdm/Xsession y si se usa XDM, el fichero en cuestión es /etc/xdm/Xsession.

Espero que os resulte útil y lo disfruteis.