Por defecto cuando conectas un mouse por usb se usa un driver generico que tiene soporte para 3 botones mas el scroll, considerados como dos botones mas.
En mi caso, tengo un Microsoft Laser Mouse 6000 (si si, ya lo se pero es decente). Este en particular tiene 5 botones y el scroll, por lo que da un total de 7 botones. En general funciona bien con el driver generico, pero no usar los botones disponibles es un desperdicio.
Para aprovecharlos se utiliza "evdev" un driver para perifericos haciendo posible tener multiples mouses y teclados u otros dispositivos en una maquina en la misma sesion de linux o en x-servers distintos corriendo en la misma maquina con todas las teclas o eventos que pueden dar.
Estos pasos sirven para cualquier distro que utilice X.org que tenga el driver evdev.
CONFIGURACION
Nota: Recuerda hacer una copia de seguridad de /etc/X11/xorg.conf y en vez de borrar lineas, solamente comentarlas con el caracter #. Ademas es necesario editar el archivo como superusuario (su o sudo si es necesario).
Si uno se mete al archivo '/etc/X11/xorg.conf' podras buscar dentro del archivo y encontrar algo parecido a esto, esta puede varear segun como lo haya detectado linux:
Device, Dev Name y Dev Phys
Mi version abreviada de los perifericos conectados al bus para la captura de datos:
ZAxisMapping, Buttons y Resolution
Usamos una utilidad que permite ver las entradas desde cualquier periferico conectado al pc, permitiendo constatar cuantos son y que nombre tienen (el nombre puede varear despues de reiniciar xorg, asi que revisa si es necesario luego del reinicio).
La utilidad tambien captura los cambios del sensor de movimiento, asi que es mejor que levantes el mouse para evitar llenar la pantalla de info que no nos importa.
En mi caso, tengo un Microsoft Laser Mouse 6000 (si si, ya lo se pero es decente). Este en particular tiene 5 botones y el scroll, por lo que da un total de 7 botones. En general funciona bien con el driver generico, pero no usar los botones disponibles es un desperdicio.
Para aprovecharlos se utiliza "evdev" un driver para perifericos haciendo posible tener multiples mouses y teclados u otros dispositivos en una maquina en la misma sesion de linux o en x-servers distintos corriendo en la misma maquina con todas las teclas o eventos que pueden dar.
Estos pasos sirven para cualquier distro que utilice X.org que tenga el driver evdev.
CONFIGURACION
Nota: Recuerda hacer una copia de seguridad de /etc/X11/xorg.conf y en vez de borrar lineas, solamente comentarlas con el caracter #. Ademas es necesario editar el archivo como superusuario (su o sudo si es necesario).
Si uno se mete al archivo '/etc/X11/xorg.conf' podras buscar dentro del archivo y encontrar algo parecido a esto, esta puede varear segun como lo haya detectado linux:
Section "InputDevice"Comenta todas las lineas (poniendo el simbolo # al inicio de cada linea) y debajo de la parte comentada ingresa esta plantilla:
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ExplorerPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection
Section "InputDevice"Procura mantener el nombre del identificador comentado para no tener que modificar mas lineas del xorg.conf. Todas las lineas con solo "" seran cambiadas por los siguientes datos. Aun cuando sea el mismo mouse existen distintas revisiones, asi que es necesario hacer todos los pasos. Toda la info devuelta por los comandos es para mi caso en particular y puede o no ser igual a la que responda tu distro.
Identifier "Configured Mouse"
Driver "evdev"
Option "Device" ""
Option "Dev Name" ""
Option "Dev Phys" ""
Option "ZAxisMapping" ""
Option "Buttons" ""
Option "Resolution" ""
Option "SendCoreEvents" "True"
EndSection
Device, Dev Name y Dev Phys
Mi version abreviada de los perifericos conectados al bus para la captura de datos:
$ cat /proc/bus/input/devicesPara la opcion "Device" buscamos en la linea "H: Handlers=mouse1 event2 ts1" y nos fijamos en la parte que dice "event2". Es necesario usar la ruta completa al dispositivo y esta es "/dev/input/" por lo que la linea Device queda:
(...)
I: Bus=0003 Vendor=045e Product=00f0 Version=0101
N: Name="Microsoft Corporation Microsoft Laser Mouse 6000"
P: Phys=usb-0000:00:1d.0-2/input0
S: Sysfs=/class/input/input2
H: Handlers=mouse1 event2 ts1
B: EV=7
B: KEY=1f0000 0 0 0 0 0 0 0 0
B: REL=103
(...)
Option "Device" "/dev/input/event2"La opcion "Dev Name" es practicamente obvia, la linea "N: Name="Microsoft Corporation Microsoft Laser Mouse 6000"".
Option "Dev Name" "Microsoft Corporation Microsoft Laser Mouse 6000"Para la opcion "Dev Phys" usamos la linea "P: Phys=usb-0000:00:1d.0-2/input0". La opcion queda:
Option "Dev Phys" "usb-0000:00:1d.0-2/input0"
ZAxisMapping, Buttons y Resolution
Usamos una utilidad que permite ver las entradas desde cualquier periferico conectado al pc, permitiendo constatar cuantos son y que nombre tienen (el nombre puede varear despues de reiniciar xorg, asi que revisa si es necesario luego del reinicio).
La utilidad tambien captura los cambios del sensor de movimiento, asi que es mejor que levantes el mouse para evitar llenar la pantalla de info que no nos importa.
$ xevEn mi caso, conte 7 botones y el scroll es "4" hacia arriba y "5" hacia abajo. Asi que estas lineas quedan asi:
Option "ZAxisMapping" "4 5"Y la resolucion es cosa de revisar las especificaciones del mouse. Yo pensaba que tenia un mouse de 1000 dpi, pero es solo de 800 (Micro$oft del ass):
Option "Buttons" "7"
Option "Resolution" "800"Al final mi xorg.conf quedo algo asi:
Section "InputDevice"Y listo, ahora es cosa de revisar como quedaron los botones con 'xev' nuevamente y utilizarlos como mas les guste, por lo menos a mi se me ha hecho mucho mas facil la navegacion desde que los puedo usar.
Identifier "Configured Mouse"
Driver "evdev"
Option "Device" "/dev/input/event2"
Option "Dev Name" "Microsoft Corporation Microsoft Laser Mouse 6000"
Option "Dev Phys" "usb-0000:00:1d.0-2/input0"
Option "ZAxisMapping" "4 5"
Option "Buttons" "7"
Option "Resolution" "800"
Option "SendCoreEvents" "True"
EndSection



