Trucs:Utiliser 2 souris avec XFree3 et en mode texte (console)

De Lea Linux
Aller à la navigation Aller à la recherche
Jice<jice chez lea-linux point org>

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