Cela existe depuis déjà quelques mois, mais l’implémentation est désormais faite en natif dans Xorg.
Apparu avec Apple et l’Iphone (et là, je vois Nicolas redresser la tête fièrement et arborer un magnifique sourire 🙂 ), le multitouch est une technologie qui permet de gérer plusieurs doigts sur une surface tactile. Microsoft s’est adapté avec Windows 7, les touchpad Synaptics sont tous désormais multitouch (défilement à deux doigts) et Linux n’a pas échappé à la règle mais cela va au delà.
Deux doigts, c’est pointer à deux endroits différents. Depuis plus de 20 ans, le doigt c’est la souris. Deux doigts, c’est donc deux souris.
Sous Linux, xorg (le gestionnaire du mode graphique) a su évoluer et propose donc le multitouch depuis la version 1.7. Et en branchant deux souris, on peut donc avoir…. deux pointeurs ! La chose peut s’exporter aussi aux claviers multiples.
Tout se fait à partir de la commande xinput.
Voici par exemple ce que me liste la commande xinput list :
mathieu@debian:~$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Microsoft 3-Button Mouse with IntelliEye(TM) id=8 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=9 [slave keyboard (3)]
∼ Apple, Inc Apple Keyboard id=10 [floating slave]
(oui Nicolas, j’ai un clavier Apple et j’assume totalement 🙂 )
On constate un premier groupe nommé Virtual core. Un groupe se compose toujours de deux sections : pointer (souris) et keyboard (clavier).
Ma souris Microsoft (Martial, c’est pour toi !) est affectée au groupe Virtual core ainsi que le pointeur de test, et toutes les ressources clavier au même groupe.
Maintenant, je branche une autre souris en USB. Le pointeur de l’écran réagit aux deux souris :
mathieu@debian:~$ xinput list
⎡ Virtual core pointer id=2[master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4[slave pointer (2)]
⎜ ↳ Microsoft Microsoft 3-Button Mouse with IntelliEye(TM)id=8[slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Mouse id=11[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)]
↳ Power Button id=7[slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=9[slave keyboard (3)]
∼ Apple, Inc Apple Keyboard id=10[floating slave]
Tout s’explique ! La nouvelle souris Logitech a été ajoutée au groupe Virtual core.
Pour définir des nouveaux éléments, on va créer un groupe :
mathieu@debian:~$ xinput create-master second
Et de suite un nouveau pointeur apparait à l’écran. Cependant, il ne réagit toujours pas. On va donc affecter la souris à ce nouveau groupe.
mathieu@debian:~$ xinput list
⎡ Virtual core pointer id=2[master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4[slave pointer (2)]
⎜ ↳ Microsoft Microsoft 3-Button Mouse with IntelliEye(TM)id=8[slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Mouse id=11[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)]
↳ Power Button id=7[slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=9[slave keyboard (3)]
⎡ second pointer id=12[master pointer (13)]
⎜ ↳ second XTEST pointer id=14[slave pointer (12)]
⎣ second keyboard id=13[master keyboard (12)]
↳ second XTEST keyboard id=15[slave keyboard (13)]
∼ Apple, Inc Apple Keyboard id=10[floating slave]
Le nouveau groupe comporte l’ID 12, la souris à affecter a le 11, on tape donc :
mathieu@debian:~$ xinput reattach 11 12
Et voilà ! Chaque pointeur réagit bien à une souris différente ! Notez la possibilité de faire la même chose avec deux claviers. Vous pouvez donc vous retrouver à deux personnes devant le même ordinateur à utiliser deux fenêtres différentes.
mathieu@debian:~$ xinput list
⎡ Virtual core pointer id=2[master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4[slave pointer (2)]
⎜ ↳ Microsoft Microsoft 3-Button Mouse with IntelliEye(TM)id=8[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)]
↳ Power Button id=7[slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=9[slave keyboard (3)]
⎡ second pointer id=12[master pointer (13)]
⎜ ↳ Logitech USB-PS/2 Mouse id=11[slave pointer (12)]
⎜ ↳ second XTEST pointer id=14[slave pointer (12)]
⎣ second keyboard id=13[master keyboard (12)]
↳ second XTEST keyboard id=15[slave keyboard (13)]
∼ Apple, Inc Apple Keyboard id=10[floating slave]
Il me reste cependant quelques imperfections à corriger pour réussir à déclarer le même clavier dans deux groupes différents. Amis lecteurs de Synergeek, à vos clavier(s) !