Envoyé par
un ancien prof à moi
Ah ! Il y a bien longtemps que j'avais étudié ces questions en détail.Deux solutions ont retenu mon attention. Si tu as une souris série, connectée effectivement sur le port COM1 ou COM2, les programmes sous interruption que tu as pu monter s'appliquent. Dans le temps, certaines souris envoyaient 5 octets par évènement. Un évènement couvre toute modification d'état de la souris (Boutons, déplacement).
Puis les souris série se sont mises à n'envoyer plus que 3 octets, et apparemment, cette situation a perdurée. Les drivers de souris sont alors devenus standards : toutes les souris fonctionnent selon le même schéma. Les drivers sont devenus interchangeables.
Les format des 3 octets est facilement identifiable expérimentalement. En effet, tu devrais retrouver que le bit de poids fort du premier octet contient, par exemple l'état du bouton gauche. Les 2 octets suivants contiennent l'état des boutons du milieu et l'état du bouton droit. S'ensuit, (de mémoire!) codé sur 10 bits, la position courante suivant X, puis, sur 10 bits, la position courante sur Y. Puis il y a les facteurs soit de vitesse soit d'accélélration, dont, à priori tu n'as rien à faire, sauf pour améliorer le confort de l'utilisateur. Le tapis de souris étant de surface limitée, un mouvement brusque vers le haut provoquera un glissement vers le bas du curseur afin d'améliorer le confort.
Bref, encore un truc compliqué !
Maintenant, sous dos, avec un driver (MOUSE.COM ou MOUSE.SYS), le driver installe des services accessibles via l'interruption 33h. Mais je n'ai plus d'infos sur ces choses. Je pense que tu devrais trouver facilement les infos sur Internet.
Tu devras utiliser la fonction int86() et les fonctions apparentées afin d'effectuer un appel système.
Si tu as des difficultés, intéresse-toi à l'appel système 16h qui est facile car c'est pour lire les caractères provenant du clavier.
Notre outils HelpPC que tu trouveras sur internet décrit cela très bien ! Bon courage ...
Tu verras, rien de difficile !
A+
Partager