Trucs:Utiliser 2 souris avec XFree3 et en mode texte (console)
Pour utiliser 2 souris avec XFree3 ou en mode console, il faut déjà installer gpm (gpm est un utilitaire vous permettant de disposer de la souris en mode texte, de faire du copier-coller (coller avec le bouton du milieu), et d'utiliser la souris en mode texte avec certains programmes qui reposent sur gpm, comme Midnight Commander).
Votre distribution dispose certainement du package correspondant.
Ensuite, il faut le configurer afin qu'il se lance avec les 2 souris. Dans mon cas : une souris série (protocole MouseSystems ou msc pour gpm) connectée sur /dev/ttys0, et une souris USB (protocole IMPS/2 ou imps2 pour gpm) connectée sur /dev/input/mouse0.
La ligne de commande pour lancer gpm est :
gpm -t msc -m /dev/ttyS0 -M -t imps2 -m /dev/input/mouse0
Explications :
- -t : protocole
- -m : device souris
- -M : permet de spécifier une 2ème souris : toutes les options situées avant -M s'appliquent à la souris n°1, les options situées après s'appliquent à la souris n°2
Vous pouvez déjà vérifier que le curseur de souris (un caractère qui passe en video inverse) bouge avec les 2 souris.
Lorsqu'on utilise gpm avec l'option -M, celui-ci "répète" les commandes des 2 souris dans /dev/gpmdata en protocole MouseSystems. Ce périphérique (en fait une "fifo") regroupe les commandes des 2 souris, et en conséquence, on peut faire pointer /dev/mouse dessus :
# rm -f /dev/mouse
# ln -s /dev/gpmdata /dev/mouse
Ensuite, il faut configurer XFree3 pour utiliser cette nouvelle "souris". Dans XF86Config, il faut que la section "Pointer" ressemble à ça :
Section "Pointer"
Protocol "MouseSystems"
Device "/dev/gpmdata"
ZAxisMapping 4 5
EndSection
Relancez X et admirez le travail !
BUG connu : avec cette méthode, la ou les roulettes éventuelles ne pourront pas être utilisées sous X. En effet, pour utiliser la roulette, il faut utiliser le protocole IMPS/2 (ou imps2 pour gpm), or gpm ne sait pas répéter dans /dev/gpmdata avec ce protocole.
Annexe : automatisation du démarrage de gpm
Nouveau fichier /etc/sysconfig/mouse (à adapter à vos besoins) :
----------
MOUSETYPE=msc
XMOUSETYPE=MouseSystems
FULLNAME=Serie
XEMU3=no
WHEEL=no
device=ttyS0
TWO_MOUSES=yes
MOUSETYPE_2=imps2
XMOUSETYPE_2="IMPS/2"
FULLNAME_2="USB|Wheel"
XEMU3_2=no
WHEEL_2=yes
device_2=usbmouse
----------
La partie ajoutée est en gras
Nouveau fichier /etc/rc.d/init.d/gpm :
----------
#!/bin/bash
#
# chkconfig: 2345 85 15
# description: GPM adds mouse support to text-based Linux applications such \
# the Midnight Commander. Is also allows mouse-based console \
# cut-and-paste operations, and includes support for pop-up \
# menus on the console.
# processname: gpm
# pidfile: /var/run/gpm.pid
# config: /etc/sysconfig/mouse
# modified by Jean-Christophe 'Jice' Cardot <jice at lea-linux dot org>
# for 2 mouses support
# source function library
. /etc/rc.d/init.d/functions
MOUSECFG=/etc/sysconfig/mouse
MOUSEDEVICE=/dev/mouse
RETVAL=0
case "$1" in
start)
echo -n $"Starting console mouse services: "
if [ -f "$MOUSECFG" ]; then
. "$MOUSECFG"
else
echo $"(no mouse is configured)"
exit 0
fi
if [ -n "$device" ];then
MOUSEDEVICE=/dev/$device
fi
if [ ! -e $MOUSEDEVICE ];then
echo $"$MOUSEDEVICE don't exist"
exit 0
fi
if [ "$MOUSETYPE" = "none" ]; then
echo $"(no mouse is configured)"
exit 0
fi
if [ "$MOUSETYPE" = "Microsoft" ]; then
MOUSETYPE=ms
fi
if [ "$TWO_MOUSES" = "yes" ]; then
if [ -n "$device_2" ];then
MOUSEDEVICE_2=/dev/$device_2
fi
if [ ! -e $MOUSEDEVICE_2 ];then
echo $"$MOUSEDEVICE_2 don't exist"
exit 0
fi
if [ "$MOUSETYPE_2" = "none" ]; then
echo $"(no 2nd mouse is configured)"
TWO_MOUSES=no
fi
if [ "$MOUSETYPE_2" = "Microsoft" ]; then
MOUSETYPE_2=ms
fi
if [ -n "$MOUSETYPE" -a -n "$MOUSETYPE_2" ]; then
daemon gpm -t $MOUSETYPE -m $MOUSEDEVICE \
-M -t $MOUSETYPE_2 -m $MOUSEDEVICE_2
else if [ -n "$MOUSETYPE" ]; then
daemon gpm -t $MOUSETYPE -m $MOUSEDEVICE \
-M -m $MOUSEDEVICE_2
else if [ -n "$MOUSETYPE_2" ]; then
daemon gpm -m $MOUSEDEVICE \
-M -t $MOUSETYPE_2 -m $MOUSEDEVICE_2
else
daemon gpm -m $MOUSEDEVICE \
-M -m $MOUSEDEVICE_2
fi fi fi
else
if [ -n "$MOUSETYPE" ]; then
daemon gpm -t $MOUSETYPE -m $MOUSEDEVICE
else
daemon gpm -m $MOUSEDEVICE
fi
fi
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/gpm
;;
stop)
echo -n $"Shutting down console mouse services: "
killproc gpm
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/gpm
;;
restart|reload)
$0 stop
$0 start
RETVAL=$?
;;
status)
status gpm
RETVAL=$?
;;
*)
echo $"Usage: gpm {start|stop|status|restart|reload}"
exit 1
esac
exit $RETVAL
----------
Ce fichier remplace le fichier du même nom (les parties qui ont été ajoutées sont en gras). Il n'y a pas à le