Multi-Pointer X
Multi-Pointer X, ou MPX, est une modification de X.Org le serveur du X Window System. MPX permet l'utilisation simultanée de plusieurs pointeurs indépendants dans le même système de fenêtrage. MPX permet le fonctionnement de certaines applications sans aucune modification. La plupart du temps les applications graphiques sont conçues en supposant l'existence d'un seul pointeur.
MPX permet, par exemple, à un formateur de montrer à son élève ce qu'il doit faire en utilisant une deuxième souris au lieu de promener son doigt sur l'écran.
Voilà le code pour créer un deuxième pointeur : J'ai plusieurs souris physiques et je vais utiliser la 'nano mouse' pour contrôler le nouveau curseur :
D'abord, détecter le matériel. Dans la suite, j'utiliserai les "id" de l'exemple en question : adaptez les nombres dans les lignes de commandes à votre cas !
[moviuro@kamino:~]$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Souris de Moviuro id=6 [slave pointer (2)] ⎜ ↳ MLK 2.4G wireless nano mouse id=15 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=7 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=8 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Power Button id=11 [slave keyboard (3)] ↳ HD Video WebCam id=12 [slave keyboard (3)] ↳ Video Bus id=13 [slave keyboard (3)] ↳ Power Button id=14 [slave keyboard (3)]
Ensuite, créer un nouveau curseur (que je nomme New) et réafficher la disposition du matériel.
[moviuro@kamino:~]$ xinput create-master New [moviuro@kamino:~]$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Souris de Moviuro id=6 [slave pointer (2)] ⎜ ↳ MLK 2.4G wireless nano mouse id=15 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=7 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=8 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Power Button id=11 [slave keyboard (3)] ↳ HD Video WebCam id=12 [slave keyboard (3)] ↳ Video Bus id=13 [slave keyboard (3)] ↳ Power Button id=14 [slave keyboard (3)] ⎡ New pointer id=17 [master pointer (18)] ⎜ ↳ New XTEST pointer id=19 [slave pointer (17)] ⎣ New keyboard id=18 [master keyboard (17)] ↳ New XTEST keyboard id=20 [slave keyboard (18)]
Enfin, attacher la souris en question au pointeur inactif qui vient de s'afficher à l'écran.
[moviuro@kamino:~]$ xinput reattach 15 17 [moviuro@kamino:~]$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Souris de Moviuro id=6 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=7 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=8 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Power Button id=11 [slave keyboard (3)] ↳ HD Video WebCam id=12 [slave keyboard (3)] ↳ Video Bus id=13 [slave keyboard (3)] ↳ Power Button id=14 [slave keyboard (3)] ⎡ New pointer id=17 [master pointer (18)] ⎜ ↳ MLK 2.4G wireless nano mouse id=15 [slave pointer (17)] ⎜ ↳ New XTEST pointer id=19 [slave pointer (17)] ⎣ New keyboard id=18 [master keyboard (17)] ↳ New XTEST keyboard id=20 [slave keyboard (18)]
Voilà ! La nano mouse contrôle le nouveau curseur ! Pour se débarrasser du curseur :
[moviuro@kamino:~]$ xinput remove-master 17 [moviuro@kamino:~]$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Souris de Moviuro id=6 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=7 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=8 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Power Button id=11 [slave keyboard (3)] ↳ HD Video WebCam id=12 [slave keyboard (3)] ↳ Video Bus id=13 [slave keyboard (3)] ↳ Power Button id=14 [slave keyboard (3)] ∼ MLK 2.4G wireless nano mouse id=15 [floating slave] [moviuro@kamino:~]$ xinput reattach 15 2 [moviuro@kamino:~]$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Souris de Moviuro id=6 [slave pointer (2)] ⎜ ↳ MLK 2.4G wireless nano mouse id=15 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=7 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=8 [slave keyboard (3)] ↳ Apple, Inc Apple Keyboard id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Power Button id=11 [slave keyboard (3)] ↳ HD Video WebCam id=12 [slave keyboard (3)] ↳ Video Bus id=13 [slave keyboard (3)] ↳ Power Button id=14 [slave keyboard (3)]
Test effectués sur Mandriva 2010.2 (après un # urpmi xinput) Plus d'infos dans man xinput Test effectués avec succès sur OpenSUSE 11.4 et 12.1 (x86_64).