TrackMouse

Les applications récentes sont de plus en plus sophistiquées et autorisent des interactions avec plusieurs périphériques d’entrée. Pourtant la difficulté réside à gérer ces différents flux de données tout en développant de nouveaux paradigmes d’interaction. En première approche, il est possible de classer les applications à multiples curseurs en trois catégories : un utilisateur et une main, un utilisateur et deux mains, et plusieurs utilisateurs.

Dans la première catégorie, un périphérique est considéré comme plusieurs périphériques. Par exemple les souris les plus récentes combinent deux roues sur la même souris. De cette façon, l’utilisateur contrôle le curseur système avec la souris et contrôle des déplacements selon les axes X et Y avec les deux roues. Ces souris sont dédiées aux déplacements axiaux mais restent peu adaptées pour contrôler aisément un second curseur. Récemment, des souris combinées avec des trackball sont apparus mais s'appuient généralement sur un fonctionnement exclusif, souris ou trackball.

Dans ce cadre, nous travaillons sur un nouveau périphérique, le TrackMouse, afin de manipuler deux curseurs indépendants, le curseur système et un curseur secondaire, avec la seule main dominante. L’idée est d’atteindre la même efficacité voire mieux que les interactions bi-manuelles tout en laissant disponible la seconde main pour d’autres tâches. Nous avons donc décidé de fabriquer le TrackMouse, un nouveau périphérique de type 2+2D. Plusieurs prototypes ont été construits, le plus abouti s'appuie sur un trackball Trackman de chez Logitech (figure ci-dessous à gauche).

Pour obtenir les deux degrés de liberté additionnels, nous avons couplé ce trackball à une électronique de souris placée sous le trackball. Le résultat est un vrai périphérique 2+2D et même 2+2+1D avec la roue.

Le développement de la partie logicielle a été compliqué par l’incapacité de Windows XP à distinguer les entrées en provenance de plusieurs souris. Toutes les souris ou trackballs contrôlent le même curseur système pour les mouvements et pour les désignations. Pourtant, pour le TrackMouse, nous devons distinguer les données provenant de la souris, de celles provenant du trackball :

    • Les mouvements de la souris doivent contrôler le curseur système alors que ses boutons peuvent être ignorés puisqu’ils ont été supprimés.

    • Les mouvements du trackball doivent contrôler un curseur secondaire visible ou non alors que ses bou-tons et sa roue doivent contrôler les interactions du curseur système.

L’utilisation du nouveau périphérique doit être totalement transparente pour le développeur. Les messages légaux de Windows comme WM_LBUTTONDOWN et WM_MOUSEMOVE doivent être conservés pour le curseur système alors que des messages spécifiques comme MMI_MOUSEMOVE doivent être créés pour le curseur secondaire. Pour implémenter l’API, nous avons implémenté un nouveau pilote comme le montre la figure ci-dessus à droite. De cette manière nous filtrons les données directement dans le flux de données avant toute interprétation par le système de gestion de souris de Windows. Nous avons basé notre pilote sur le pilote et l’API développés par le groupe CPN.

Le but de ce nouveau pilote est de retirer tout les événements de mouvement du trackball du flux de données : pour le système de gestion de la souris de Windows XP, le trackball ne bouge jamais. Les mouvements sont envoyés à l’API du TrackMouse afin d’afficher le curseur secondaire s’il doit l’être puis un message spécifique MMI_MOUSEMOVE est envoyé à l’application. Les événements liés aux boutons du trackball ne sont pas modifiés. Le système de gestion de souris de Windows les interprète comme les boutons du curseur système : les messages légaux comme WM_LBUTTONDOWN sont donc automatiquement envoyés à l’application. Ce nouveau pilote est exclusivement installé pour le trackball. Pour la souris, les données ne doivent pas être filtrées, le pilote reste celui fourni par le constructeur. Ainsi les possibilités haptiques sont conservées.

Les premières expérimentations n'ont pas donné les résultats escomptés même si le TrackMouse peut être utilisé selon le cas en mode souris, en mode trackball ou en mode double-flux associé à deux curseurs. Par rapport à une configuration bi-manuelle, aucune tâche n'a pu être trouvée dans laquelle le TrackMouse serait supérieur en termes de performance. Par rapport à une souris, le TrackMouse n'a montré sa supériorité que dans deux situations:

    • la manipulation d'un objet graphique à travers sa position et sa taille.

    • la sélection d'un item de menu et le pointage d'une cible dans le cas d'une distance longue entre le menu et la cible.

Bien entendu le TrackMouse est pénalisé par un apprentissage plus long par rapport à des périphériques souvent utilisés quotidiennements. Le travail continu afin d'explorer les applications possibles et d'exhiber une ou plusieurs tâches pour lesquelles le TrackMouse monterait sa supériorité sur la souris mais également où il atteindrait les performances d'une configuration bi-manuelle. A ce titre nous explorons les situations multi-écrans et les situations où de multiples degrés de liberté imposent des manipulations parfois fastidieuses et sources d'erreurs.

    • P. ISOKOSKI, R. RAISAMO, B. MARTIN, G. EVREINOV. User performance with trackball mice. Interacting with Computers, vol. 19, issue 3, May, pp. 407-427, 2007.

    • B. MARTIN, P. ISOKOSKI. Performance of Input Devices in FPS Target Acquisition. International Conference on Advances in Computer Entertainment Technology (ACE 2007), Salzburg, Austria, 13-15 June, ACM Press, 240-241, presented as a poster, 2007.

    • B. MARTIN, P. ISOKOSKI. Trackmouse Trackball in Pie Menu Use: Data on Accuracy. 19th French-speaking conference on Human-computer interaction (IHM 2007), IRCAM, Paris, France, November 13-15, ACM Press, 127-130, 2007.

    • B. MARTIN, R. RAISAMO. TrackMouse : a new solution for 2+2D interactions. NordiCHI 2004, Tampere, Finlande, October 23-27, 89-92, 2004.

    • B. MARTIN. TrackMouse : une solution 4D pour des interactions avec deux curseurs. 16th French-speaking conference of human computer interaction (IHM 2004), Namur, Belgique, 30 Août - 3 Septembre, 231-234, 2004.