Journal MPX : retour d'expérience

Posté par .
Tags : aucun
24
31
mar.
2010
Ca y est, j'ai enfin pu essayer MPX, via la prochaine [Kubuntu 10.4 https://wiki.kubuntu.org/LucidLynx/Beta1/Kubuntu].

Qu'est ce qu'MPX?
MPX est un acronyme de multi-pointer X Server (Serveur X à multi-pointage). MPX est une modification de [[X.Org]] implantée dans le système X Window. Il permet d'utiliser plusieurs pointeurs indépendants au niveau du système de fenêtrage. Contrairement à beaucoup d'autres applications de multi-pointage, MPX permet à de nombreuses applications X Window de s'exécuter sans aucune modification. Il permet entre autre à plusieurs utilisateurs d'exploiter simultanément des applications différentes. (source http://doc.ubuntu-fr.org/mpx)

MPX a été crée Peter Hutterer en 2005 et a été inclus dans Xinput2, qui est présent dans X.Org 1.7, lequel accompagne... la dernière Ubuntu.

En gros, ca permet d'avoir plusieurs pointeurs à l'écran. Pourquoi avoir plusieurs pointeurs? Personnellement, j'y vois la réponse à une vieille problématique : j'ai une grosse surface de travail (2x26"), et j'ai souvent un comparse à mes cotés, qui a souvent envie de faire autre chose qu'attendre que j'aie fini d'utiliser la souris pour pouvoir consulter sa boite mail. Fatalement, je perds immédiatement le contrôle sur mon application, etc...

Avec MPX, on se retrouve ainsi a deux devant deux écrans, avec deux claviers, mais un seul système : alors que l'on peut tous deux utiliser nos applications en même temps, taper deux choses en même temps, et tant d'autres choses, on peut toujours se passer des fenêtres d'un écran a l'autre.

Bien sur, tant que les toolkits graphiques ne prendront pas en charge le fait d'avoir plusieurs éléments actifs en même temps, il est quasiment impossible de se "partager" une application : Firefox, pour l'exemple, supporte difficilement le fait de d'avoir deux souris devant l'application, même en utilisant plusieurs fenêtres (je n'ai pas testé avec plusieurs profils) : par exemple, si la souris 1 active la fenêtre 2 et si la souris 2 active la fenêtre 2 pour saisir avec le clavier 2, le clavier 1 se met a écrire dans la fenêtre 2 et la souris 1 devient inactive sur la fenêtre 1... De même, l'utilisation du défilement doux (bouton millieu) bugge complètement si une autre souris rentre dans la zone de firefox.

Par contre, Firefox à droite et Konqueror à gauche, ca marche parfaitement. Même Konqueror à gauche et Konqueror à droite fonctionnent sans soucis, QT ayant l'air plus a l'aise avec les différentes zones d'activité.
Il est également impensable actuellement de vouloir preter un clavier afin d'avoir un copilote humain dans un jeux 3D, la deuxieme souris est folle dans les jeux testés - le second clavier marche correctement dans sa propre fenetre.

Pour mettre en place MPX, il suffit d'utiliser la commande xinput :

z$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ "Logitech USB-PS/2 Optical Mouse" id=10 [slave pointer (2)]
⎜ ↳ "MLK Trust Keyboard 14909" id=12 [slave pointer (2)]
⎜ ↳ "Macintosh mouse button emulation" id=13 [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)]
↳ "Logitech HID compliant keyboard" id=8 [slave keyboard (3)]
↳ "Logitech HID compliant keyboard" id=9 [slave keyboard (3)]
↳ "MLK Trust Keyboard 14909" id=11 [slave keyboard (3)]

z$ xinput create-master new

z$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ "Logitech USB-PS/2 Optical Mouse" id=10 [slave pointer (2)]
⎜ ↳ "MLK Trust Keyboard 14909" id=12 [slave pointer (2)]
⎜ ↳ "Macintosh mouse button emulation" id=13 [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)]
↳ "Logitech HID compliant keyboard" id=8 [slave keyboard (3)]
↳ "Logitech HID compliant keyboard" id=9 [slave keyboard (3)]
↳ "MLK Trust Keyboard 14909" id=11 [slave keyboard (3)]
⎡ new pointer id=14 [master pointer (15)]
⎜ ↳ new XTEST pointer id=16 [slave pointer (14)]
⎣ new keyboard id=15 [master keyboard (14)]
↳ new XTEST keyboard id=17 [slave keyboard (15)]

z$ xinput reattach 12 14

z$ xinput reattach 11 15

z$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ "Logitech USB-PS/2 Optical Mouse" id=10 [slave pointer (2)]
⎜ ↳ "Macintosh mouse button emulation" id=13 [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)]
↳ "Logitech HID compliant keyboard" id=8 [slave keyboard (3)]
↳ "Logitech HID compliant keyboard" id=9 [slave keyboard (3)]
⎡ new pointer id=14 [master pointer (15)]
⎜ ↳ "MLK Trust Keyboard 14909" id=12 [slave pointer (14)]
⎜ ↳ new XTEST pointer id=16 [slave pointer (14)]
⎣ new keyboard id=15 [master keyboard (14)]
↳ "MLK Trust Keyboard 14909" id=11 [slave keyboard (15)]
↳ new XTEST keyboard id=17 [slave keyboard (15)]


C'est donc assez facile, plutôt pratique, particulièrement avec les murs d'écrans ou les centres de contrôle : plusieurs opérateurs peuvent agir de concert au niveau bureau, traiter des dossiers, se les passer d'opérateur à opérateur immédiatement et visiblement... Bref il ne manque plus qu'un gigantesque écran holographique :)
  • # Pas deux mais plein de couples pointeur clavier !

    Posté par (page perso) . Évalué à 4.

    Oui on est pas limité qu'à deux couple clavier/souris mais X couples (je ne sais plus combien en faite :) )
    Ca aurai été bien aussi d'expliquer plus en détail ou de dire que c'est plus expliqué en détail pour la config ici : http://alec.mooo.com/mpx.php par exemple.
    Merci
    a+
    • [^] # Re: Pas deux mais plein de couples pointeur clavier !

      Posté par . Évalué à 3.

      Le lien est plus détaillé en effet, mais c'est encore plus détaillé dans le man xinput ;)

      D'ailleurs j'ai été chiche sur les liens de bas de page, mais c'est mon premier journal et je n'ai pas tout compris sur la façon de poster un lien proprement.
  • # C'est énorme

    Posté par . Évalué à 3.

    C'est vraiment bluffant, ça marche assez bien, je n'ai juste pas réussi à deplacer mes fenêtres avec les 2 pointeurs. Vivement que Gnome ajoute une fenêtre de configuration pour simplifier tout ça !
  • # QT

    Posté par (page perso) . Évalué à -3.

    QT ayant l'air plus a l'aise avec les différentes zones d'activité.

    En même temps, QT (QuickTime) ne tourne pas sous Linux ni sous *BSD (à part peut-être Darwin). Tu voulais peut-être parler de Qt.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: QT

      Posté par . Évalué à 3.

      Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. (R. Devos)
      ton commentaire est cohérent avec ta signature au moins.
  • # Awesome!

    Posté par (page perso) . Évalué à 3.

    Whaaa je ne savait pas que c'était activé par défaut (je suis sous Arch)

    Je joue avec c'est sympa.... Vous une idée d'applic qui gère ça correctement?
  • # Écran multi-touch ?

    Posté par (page perso) . Évalué à 7.

    Et ça pourrait marcher avec un écran multi-touch ?
    D'ailleurs est ce que le multi-touch est vu comme plusieurs pointeurs ou pas ?

    S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

    • [^] # Re: Écran multi-touch ?

      Posté par (page perso) . Évalué à 3.

      il me semble que c'est en parti le but du MPX
      • [^] # Re: Écran multi-touch ?

        Posté par . Évalué à 1.

        Je pense qu'il faut juste adapter les "gestes" à la souris pour utiliser deux curseurs, mais de ce coté il y a encore beaucoup de boulot pour gérer cela, car il faut d'abord que le gestionnaire de fenêtres soit capable de gérer les événements de la deuxième souris en fonction de la première.
        D'un autre point de vue, je ne sais pas comment un écran multitouch fait pour transmettre le "multi" : un écran tactile classique se présente comme une souris habituelle...

        Je m'aperçois que je ne sais pas ce que c'est que le multitouch : c'est la possibilité de faire des gestes avec plusieurs doigts sur une surface touchpad, soit un seul pointeur? Ou bien c'est la possibilité de travailler de plusieurs mains sur une surface (plusieurs souris, plusieurs stylets, plusieurs doigts), c'est a dire de multiples pointeurs?
        • [^] # Re: Écran multi-touch ?

          Posté par . Évalué à 3.

          multi-touch et multi-pointeur, c'est pas la meme chose justement (et tu peux avoir les deux en meme temps):

          1- multi-pointer: avoir plusieurs curseurs independants qui peuvent agir sur differents widgets & programmes sans voler le focus (que ce soit des programmes differents ou le meme programme). En plus d'une API bas niveau, cela necessite de modifier directement les programmes pour prendre en compte cela (voir les exemples avec FF plus haut). MPX c'est ca, mais juste la base (que l'autre OS a depuis un petit moment - 10 ans avec XP et RawInput), tout reste a faire pour que les applis puissent gerer ca correctement dans tous les cas.

          2- multi-touch: reconnaissance de gestes au sein d'une zone avec un ou plusieurs doigts, mais reconnu comme un groupe et donc un seul "input". Ca peut se baser sur la meme couche bas niveau que le multi-pointer, mais idealement, tu veux une API haut niveau qui abstrait la reconnaissance des gestes et qui si possible fasse directement le lien entre les gestures et les evenements existants (genre agrandir un object, drag&drop, etc.)

          Pour avoir une idee de ce qu'un mix des deux peut donner, voir les videos (ou en vrai si vous avez de la chance :) du "Surface" de MS, ou plusieurs utilisateurs peuvent bouger des photos, les agrandir ou reduire, etc. independamment.
      • [^] # Re: Écran multi-touch ?

        Posté par . Évalué à 2.

        Je dirais même que c'est le but premier...
  • # Avoir deux claviers différenciés

    Posté par (page perso) . Évalué à 1.

    Est-ce que ça peut permettre de jouer à deux à un jeu avec deux claviers qui sont reconnus comme tel?
    Je joue souvent à deux avec un clavier chacun, on est obligé de définir des touches différentes sur chaque clavier, impossible d'utiliser tous les deux les flèches, puisque le système considère qu'il n'y a qu'un seul clavier.
    Est-ce qu'il existe un moyen de différencier les deux claviers? (comme ça le fait pour les joystick par exemple)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.