Les technologies tactiles
Couche logicielle
- Architecture générale
- Architecture détaillée
- Événement multi-touch
- Exemple concret : rotation d'une photo
La couche logicielle reçoit les informations sur les points de contacts. Elle a en charge leur interprétation et leur traitement pour ensuite envoyer le résultat à la couche d'affichage.
Architecture générale
Si nous essayons de schématiser l'architecture générale de cette couche logicielle, voici ce que cela donne. C'est une architecture très classique en couches.
Architecture générale de la couche logicielle.
La couche hardware est composée de deux sous-couches. Le dispositif de pointage et celui d'affichage.
- Contrôleur / driver : cette couche permet de faire le lien entre la couche hardware et le système d'exploitation. Il s'agit d'un pilote classique.
- OS compatible : cette couche est le système d'exploitation en lui-même. Le terme compatible implique que le système est conçu et programmé de telle sorte qu'il est capable de comprendre et d'interpréter des événements tactiles multi-touch et pas seulement un seul clic de souris ou une seule touche de clavier.
- Core API : il s'agit de l'API principale du système qui permet aux applications de manipuler des événements tactiles.
- API : cette couche d'API est fonction des applications. Elle permet de manipuler plus finement les événements tactiles.
- Applications compatibles : cette couche est la dernière. Ce sont les applications qui, au final, reçoivent les événements tactiles et qui doivent les interpréter. Le mot compatible veut également signifier ici que les applications sont en mesure de comprendre des événements multi-touch générés par le dispositif de pointage sous-jacent.
Sur le schéma précédent, les flèches indiquent le cheminement des événements tactiles depuis le point de contact jusqu'à l'affichage résultant.
Tout d'abord, l'utilisateur stimule la couche hardware via le dispositif de pointage le touchant avec son doigt ou un stylet, par exemple. L'événement tactile est généré et transmis de proche en proche au sein de la couche logicielle. Il est interprété par les applications, et fait le chemin inverse vers le dispositif d'affichage.
Architecture détaillée
Si nous nous focalisons un peu plus sur les composantes des couches de drivers et du système d'exploitation, voici le découpage obtenu.
Architecture détaillée de la couche logicielle.
Les couches successives ont chacune un rôle qui permet au final de générer des événements multi-touch, ou des gestes complexes qui seront interprétés par une application.
- Hardware : la couche hardware génère des données brutes (ou raw-data) qui sont transmises au driver.
- Abstraction hardware : la couche d'abstraction, comme son nom l'indique, permet de décoder les informations brutes du dispositif de pointage. Ces données sont transformées en points (coordonnées) ou en zone de contacts en fonction du type de technologie utilisée (multi-point ou multi-touch).
- Transformation : cette couche est optionnelle, et n'est pas intégrée dans tous les systèmes. Elle permet de calibrer les points ou zones de contacts dans le cas où ces derniers ne reflètent pas exactement les points de contacts réels. Ceci se produit notamment dans le cas des dispositifs optiques, où la caméra qui enregistre les points de contacts n'est pas exactement dans l'alignement du dispositif de pointage. Dans ces cas, il est nécessaire de faire une translation de coordonnées, par exemple, pour retomber sur les points de contacts initiaux.
- Interprétation : c'est la couche principale du système. A partir des points ou zones de contacts, la couche d'interprétation va déterminer le type d'événement ou de geste qui a été produit par l'utilisateur. Un ensemble de zones particulières pourra être compris comme un geste de rotation par exemple.
- Core API / API / Applications : les événements ou gestes sont donnés aux applications qui se chargent d'effectuer le traitement adéquat.
Il est à noter que l'architecture présentée ici n'est pas un standard dans le monde du tactile. En effet, il n'existe pas aujourd'hui de norme à proprement parler pour définir et concevoir une architecture logicielle, ce qui est d'ailleurs une source de limitation comme nous le verrons par la suite.
Aussi, cette architecture générique a été établie à partir de l'étude de plusieurs dispositifs tactiles existants. J'ai essayé d'en ressortir les points communs et d'en comparer les différences pour établir un schéma logiciel qui s'applique dans un cas général de dispositif tactile.
De plus, ce manque de normalisation a aussi pour effet de lier fortement les couches logicielle et matérielle. Comme nous avons pu le constater sur les schémas précédents, il est indispensable de disposer d'un système et d'applications « compatibles ». Pour qu'un dispositif tactile soit entièrement multi-touch, par exemple, il faut que le dispositif de pointage le permette, mais aussi la couche logicielle. La couche logicielle a donc une forte implication dans la couche matérielle et vice-et-versa.
En effet, aujourd'hui, il est difficilement envisageable de pouvoir utiliser indifféremment telle ou telle technologie d'écran avec une architecture logicielle définie. L'abstraction complète de la couche matérielle n'est pas encore aboutie de par la non- standardisation.
Événement multi-touch
Nous venons de voir que le driver et le système d'exploitation font la passerelle entre le dispositif de pointage et les applications proprement dites. Les applications reçoivent donc en entrée des événements tactiles qu'elles vont traiter. Avant de poursuivre, il est nécessaire de définir clairement cette notion.
Ce que nous appelons un événement multi-touch, ou plus vulgairement un « geste » tactile, est un ensemble d'informations. Ces données permettent d'interpréter un mouvement effectué par l'utilisation.
Un événement multi-touch peut contenir des informations telles que les suivantes.
- la position initiale du contact
- la direction
- la position finale du contact
- la vitesse
- l'angle d'approche du doigt ou du stylet
- la pression
En fonction de la valeur de chacune de ces données, le système « comprend » le geste tactile effectué par l'utilisateur, et génère l'événement multi-touch correspondant en y associant ces valeurs.
Ce panel n'est qu'une petite partie des données qui composent potentiellement un événement multi-touch. Nous pouvons imaginer tout un ensemble d'autres informations en fonction de ce que permettent les dispositifs tactiles et les couches logicielles.
Exemple concret : rotation d'une photo
Prenons à présent un exemple concret de génération et d'interprétation d'un événement tactile par une application.
Nous considérons une application d'affichage de photos. L'utilisateur souhaite faire pivoter une des photos (avec un mouvement à deux doigts, comme sur l'iPhone).
Rotation d'une photo, position initiale.
- Le dispositif de pointage reçoit les différents coordonnées des touchés utilisateurs, et les transmet au système.
- La couche d'interprétation identifie le mouvement grâce à la position initiale, la direction et la position finale des doigts. Elle génère l'événement multi- touch correspondant.
- L'application de gestion des photos reçoit l'événement multi-touch de type « rotation » avec ses caractéristiques.
- L'application effectue le traitement et renvoie le résultat graphique correspondant.
Rotation d'une photo, position finale.