FR 2719685 A1 19951110 FR 9405513 A 19940505 Interface permettant à un dispositif de pointage de simuler le fonctionnement d'une souris La présente invention concerne un dispositif permettant de remplacer une souris par un autre dispositif de pointage habituellement non prévu à cet effet. Les périphériques d'ordinateurs de type mannette emettent à leur sortie des signaux analogiques qui sont interprétés par une carte d'interface enfichée dans la carte principale de l'ordinateur. Ces cartes d'interface reçoivent les signaux analogiques, les transforment en données numériques et les transmettent directement sur le bus de données de l'ordinateur. II n'est donc pas possible d'utiliser ces périphériques lorsque la carte idoine ne peut être rajoutée à l'ordinateur. C'est le cas avec les ordinateurs portables et la plupart des stations de travail qui n'ont pas de place dans leur boîtier En revanche, les ordinateurs offrent presque tous la possibilité d'utiliser une souris externe. La présente invention permet de connecter un autre périphérique à la place de la souris. Les données acquises en entrée du dispositif peuvent être de type analogiques ou numériques. La description suivante du dispositif a été faite en séparant celul-ci en six modules fonctionnels. On peut éventuellement combiner ces modules fonctionnels, en inverser l'ordre, et envisager de ne pas utiliser certains d'entre eux Les six modules fonctionnels formant le dispositif sont (voir schema 1) - un module (1.2) d'acquisition et d'amplification des signaux (1.1) provenant du périphérique; - un module (1.3) de décodage des données d'entrée (1.1). Ce décodage peut consister en une conversion de signaux analogiques en valeurs numénques éventuellement signées. Si les signaux d'entrée (1.1) sont numériques ou de type tout ou rien, le décodage ne consistera plutôt en une interprétation et une mise en forme sous la forme qui nous est la plus utile; - un module (14) de transformation de données numériques représentatives d'une position en des données numériques représentatives d'un mouvement. Nous vérrons plus loin quelle méthode employer pour effectuer cette transformation et quels dispositifs sont nécessaires pour pouvoir l'effectuer; - un module (1.5) de gestion de signaux (1.6) supplémentaires acquis en entrée, provenant ou non du périphérique interface Ces signaux peuvent être numériques ou analogiques. Ils peuvent par exemple correspondre à des boutons du périphérique. Le module (1 5) délivre des données numériques caractérisant les signaux d'entrée (1.6), Cest-àdire leur valeur courante ou leur valeur lors de la dernière reception d'un signal provenant du module (1.8). Ce module peut avoir des fonctions autres que la délivrance de ces données numériques, en particulier dans le cas ou le nombre des signaux (1.6) est trop grand; - un module (1.7) de mise en forme des données que l'on désire emettre. Ce module de mise en forme accepte les données venant des modules (1.4) et (1.5). Il utilise ces données pour les mettre sous le format correspondant au protocole de communication de la souris simulée. Nous vérrons plus tard que cette mise en forme peut se faire de différentes façons pour un même protocole, selon le mode de réalisation préféré; - un module (1.8) qui emet après avoir éventuellement sérialisé le résultats sortant du module (1.7). Ce module est chargé de décider s'il faut emettre ou non. Là encore, le choix de l'instant de l'émission dépend du mode de réalisation. II y aura sérialisation des données si le protocole de gestion de la souris dont le fonctionnement est simulé l'exige. Les données (1.9) émises par le module (1.8) sont les seules émises par le dispositif. Notre dispositif diffère essentiellement du dispositif électronique que l'on trouve communément dans une souris en ce que les signaux acceptés en entrée sont caractéristiques d'une position P et non pas d'un mouvement M. Alors que le dispositif électronique de la souris reçoit des capteurs la quantité de mouvement effectué depuis une certaine période, les signaux acquis à l'entrée de notre dispositif sont caractéristiques d'une position. Cette différence fondamentale entraine qu'il faut nécessairement effectuer la transformation dont la description suit. Hypothèses: Soit P = (Px, Py) le vecteur caractéristique d'une position, et issu des signaux acquis en entrée. Les composantes peuvent être éventuellement signées. On note PO = (POx, POy) la position dite au repos. Soit M = (Mx, My) le vecteur caractéristique d'une quantité de mouvement que l'on désire obtenir après transformation. Les composantes Mx et My peuvent elles aussi être éventuellement signées. Soient ai, a2, bl, b2, cl et c2 des paramètres dont la valeur n'est pas imposée. On voit cependant que les valeurs absolues de al et a2 servent à calibrer la valeur du résultat. Le choix du signe de al et de a2 a aussi une certaine importance puisqu'il permet de donner des signes opposés aux composantes de M et P selon les besoins. Formule: Mx=ai (b1 Px - POx) + c1 My = a2 (b2 Py - POy) +c2 En pratique, il est indispensable pour le bon fonctionnement du dispositif que la valeur de PO puisse etre réellement considérée comme représentative de la position au repos. Notons que la transformation a été présentée en utilisant un vecteur P à deux composantes en un vecteur M à deux composantes car il s'agit de la configuration la plus courante. Cette formule s'étend de façon évidente au cas de la transformation d'un vecteur P à n composantes en un vecteur M à n composantes. Le cas d'une transformation d'un vecteur P a n composantes en un vecteur M à m composantes ou m et n ont des valeurs différentes est aussi possible mais sort du cadre de cet exposé. La mise en forme du paquet de données sous le format tel qu'il serait si le paquet provenait d'une souris se fait en utilisant Mx, My et éventuellement d'autres signaux (1.6 sur le schéma 1) correspondant à l'état de boutons. On appellera S le vecteur dont les composantes sont caractéristiques de ces derniers signaux. On peut envisager quatre alternatives quand à la mise en forme et à l'instant de l'émission des paquets de données. A.1) Les paquets de données simulant la souris sont émis à intervalles réguliers au signal d'une horloge et sont construits en utilissant directement les valeurs de Mx, My et S. A.2) Les paquets de données émis sont construits comme en 1) en utilisant M'x, M'y et S, mais M'x et M'y sont des valeurs préexistantes et selectionnées en fonction de la valeur de Mx et de My. Les paquets de données sont alors émis à des intervalles proportionnels à Mx2+My2 ou bien à IMxl+lMyl, ou à toute autre combinaison des composantes de M et de S. A.3) Cas A.1, mais aucun paquet n'est émis lorsque les signaux d'entrée sont égaux à une valeur de référence dite "état au repos" A.4) Cas A.3, mais les paquets sont quand même émis si la valeur d'une des composantes de S a changé depuis la dernière émission Le format sous lequel se fait la mise en forme dépend entièrement du type de souris dont on désire simuler le fonctionnement. Les données issues de cette mise en forme peuvent être entièrement, partiellement ou pas du tout préexistantes. La mise en forme peut donc se faire de plusieurs façons selon l'alternative (A1 à A4) que l'on adopte. L'émission des données délivrées par le module de mise en forme peut se faire "en série" ou "en parallèle" Le module d'émission doit éventuellement être capable d'effectuer cette sérialisation. II doit de plus décider s'ii faut emettre ou non les données. Quelle que soit l'alternative Al, A2, A3 ou A4, il y aura émission au moins si la valeur d'une des composantes du vecteur S a changé depuis la demière émission (cette information est obtenue par l'intermédiaire du module (1.4). Pour les alternatives Al. A3 et A4 il y aura aussi émission si l'une des données à emettre a changé depuis la dernière émission. Pour l'alternative A3, il y aura émission si la durée depuis la dernière émission est jugée suffisante. Chacun des modules fonctionnels cités et décrits cidessus peut être réalisé au moyen de circuits électroniques imprimés ou intégrés, éventuellement programmés, et combinés à des composants électroniques classiques Précisons en particulier qu'il est possible d'utiliser un microcontrôleur. Rajoutons enfin que notre dispositif peut être amovible ou intégré physiquement dans le dispositif de pointage et qu'll peut puiser une source d'électricité dans la connexion avec l'ordinateur auquel il est connecté, ou par un autre moyen (batterie ou prise electrique), ou par une combinaison des deux Notre dispositif doit aussi être capable de transmettre une partie de l'énergie électrique dont il dispose au dispositif de pointage dont il acquiert les données. La présente invention pouvant être adaptée pour tout dispositif de pointage délivrant un ou plusieurs signaux, analogiques ou non, caractéristiques d'une position et non pas d'un déplacement, elle peut etre en particulier réalisée pour l'emploi d'une mannette de jeu (dite plus communément joystick) analogique. Dans ce cas, le signal analogique reçu en entrée du dispositif est un courant électrique dont une des caractéristiques (tension, intensité) varie Deux signaux de ce type sont acceptés en entrée du dispositif ainsi que d'autres entrées dénotant l'état de boutons Le format des paquets de données délivrés à la sortie peut être adapté à n'importe quel protocole Les paquets peuvent être sérialisés ou non Les descriptions ci-dessous présentent l'adaptation de la présente invention au cas de l'interconnexion d'un joystick analogique pour ordinateur personnel de type compatible IBM PC avec le port série dit "port souris" géré selon le protocole dit "Miçrosoft' (du nom de la société Microsoft) de gestion de la souris. D'après le protocole "Microsoff' de gestion de la souris, la souris doit emettre trois paquets de données de la taille d'un octet (huit bits) à chaque événement mouvement de la souris, pression sur un bouton, relachement d'un bouton. Ces trois octets émis en série par la souris ont le format suivant D7 D6 D5 D4 D3 D2 D1 W 01 1 1 BG BD Y7 Y6 X7 X6 02 1 0 X5 X4 X3 X2 X1 XO 03 1 0 Y5 Y4 Y3 Y2 Y1 YO Les trois octets sont émis dans l'ordre 01, 02, 03, le bit D7 en premier (puis D6 à W). Les bits BG et BD valent respectivement pour les boutons gauche et droit de la souris; ils prennent la valeur O lorsque le bouton correspondant est pressé et 1 lorsqu'il est relâché. L'octet signé formé par les bits X7 à XO (XO étant le bit de poids faible etX7 le signe) indique la quantité de mouvement effectué par la souris sur l'axe gauche/droite depuis la dernière émission de données, L'octet est positif si et seulement si la souris s'est dirigée vers la droite, négatif si et seulement si elle s'est dirigée vers la gauche et nulle si et seulement il n'y a pas eu de déplacament depuis la dernière émission De meme, L'octet Y 7 YO pour l'axe hautîbas est positif si et seulement si la souris s'est dirigée vers le bas, négatif si et seulement si elle s'est dirigée vers le bas et nulle si il n'y a pas eu de déplacement. Le schéma 2 représente la réalisation de l'invention pour cette configuration - Les courants d'entrée (2.1 et 2.2) du dispositif sont amplifiés"diminués. Ce peut être au moyen de résistances variables ou d'amplificateurs opérationnels (2.3 et 2.4) montés en série. Cette amplification permet de régler la sensibilité du dispositif; les amplificateurs (2.3) et (2.4) doivent donc pouvoir être manipulés depuis l'extérieur. Les résultats de cette amplification sont respectivement (2.5) et (2.6). - (2.5) et (2.6) sont chacun redirigés vers un convertisseur analogiqueinumérique. Les valeurs délivrées par ces deux convertisseurs (2.7) et (2.8) sont des octets non signés (par choix arbitraire : ces valeurs auraient pu être signées). Ces convertisseurs sont tels que la valeur (2.9) délivrée par le convertisseur (2.7) augmente par rapport à celle délivrée à l'état de repos si la mannette est penchée vers la droite et diminue si elle est penchée vers la gauche. De même la valeur (2.10) délivrée par le convertisseur (2.8) augmente si la mannette est penchée vers l'arrière et diminue si elle est penchée vers l'avant. La valeur indiquant l'état de la mannette au repos n'est pas nulle. - Les valeurs (2.9) et (2.10j peuvent être enregistrées dans des buffers (2.11 et 2.12) commandés par un commutateur externe (2 17). L'utilisateur devra actionner ce commutateur lorsque la mannette sera au repos de façon à ce que les valeurs enregistrées dans les buffers bufX et bufY correspondent au signal délivré par la mannette au repos. On notera (2.13) et (2.14) les valeurs maintenues dans (2.11) et (2.12). Il est bien entendu déconseillé de modifier la sensibilité du dispositif dés lors que l'état au repos a été enregistré puisque la valeur de l'état au repos pourrait ne plus correspondre à (2.13) et (2.14) On note que les valeurs (2.13) et (2.14) auraient pu être préenregistrées dans le cas ctu le dispositif serait indissociable du dispsitif auquel il est connecté. - Deux soustracteurs (2.15) et (2.16) effectuent les opérations (2.19) = (2.9) - (2.13) (t) (2.18) (2.10)-(2.14) Les valeurs (2.19) et (2.18) correpondent donc respectivement aux octets X7..X0 et Y7..Yc) qui seront délivrés en sortie du dispositif. Ce sont deux octets signés. On peut prévoir que si les valeurs mathématiques (2.19) et (2.18) dépassent les bornes d'un octet signé [-128..+1271, elles prendront la valeur de la bome la plus proche. - Les valeurs (2.19) et (2.18) avec l'état des boutons (2.26) et (2.27) peuvent être mises sous la forme de trois octets (voir plus haut) en disposant judicieusement les lignes correspondantes (dispositif 2.21) Les valeurs correspondant à des boutons supplémentaires ne peuvent dans ce cas être utilisées. - Les valeurs (2.26) et (2.27) sont maintenues dans les buffers (2.28) et (2.29). Il y a enregistrement lorsque le dispositif emet des données, c'est à dire au signal (2.22) de (2.20). - Une combinaison de portes iogiques (2.20) permet de voir si la valeur de (2 19) et de (2.18) sont non-nulles ou si l'état d'un des boutons a changé depuis la dernière émission de données (c'est à dire si (2.30) ez (2.26) ou (2.31) (2.27)). Dans ce cas les données peuvent être émises; I'autorisation d'émission est transmise par le signal (2.22) à une fréquence dépendant de l'horloge (2.32) - Si les données peuvent être émises (c'est-à-dire lorsque le signal 2.22 I'indique), chaque octet (2.23) est sérialisé à tour de rôle par le module (2.24), comme il a été dit plus tôt. Les données séries (2.25) sont redirigées vers la sortie. L'état des boutons est de plus enregistrés dans les buffers correspondants REVENDICA TIONS 1) Dispositif pour la connexion d'un dispositif de pointage un ordinateur, en remplacement de la souris, caractérisé par le fait qu'il accepte en entrée des signaux caractéristiques d'une position, qu'il les transforme en valeurs caractéristiques d'un déplacement, et parcequ'il emet ces données transformées après les avoir mises dans un format spécifique simulant le fonctionnement de la souris remplacée. 2) Dispositif selon la revendication 1 caractérisé en ce que la transformation consiste soustraire la valeur caractéristique d'une position une valeur caractéristique de la position au repos (dite aussi stable ou origine ou initiale), en ce que le résultat de cette soustraction est multiplié par un coefficient (positif ou négatif), en ce qu'au résultat de cette multiplication est ajoutée une constante, et en ce que le résultat de ces opérations peut être obtenu par n'importe quel moyen electronique (programmé ou non) dés lors que le résultat est bien celui escompté. 3) Dispositif selon la revendication 1 ou la revendication 2 caractérisé en ce que les signaux caractéristiques d'une position acceptés en entrée sont de nature analogique et sont ransformés en données digitales. 4) Dispositif selon l'une quelconque des revendications précédentes caractérisé en ce que en plus de données caractéristiques d'une position, le dispositif acquiert son entrée des signaux caractérisant l'état de boutons. 5) Dispositif selon l'une quelconque des revendications précédentes caractérisé par ce qu'il met en forme les données dont il dispose dans un format spécifique au type de la souris dont le fonctionnement est simulé, et emet ces données mises en forme de façon périodique, mais n'emet pas si ces données sont pour une parties de valeur nulle et pour une autre partie n'ont pas changé depuis la dernière émission. 6) Dispositif selon l'une quelconque des revendications précédentes caractérisé en ce qu'il puise son alimentation électrique dans sa connection avec l'ordinateur auquel il est relié et en une source d'énergie supplémentaire si cette première est jugée insuffisante.