El ratón se controla normalmente a través de llamadas a la INT 33h. Existen toda suerte de funciones
para controlar su posición, el estado de los botones, el puntero que se visualiza... todas ellas son bastante
intuitivas y aptas para un programador en lenguajes de alto nivel. Aquí estudiaremos, sin embargo, el
funcionamiento a bajo nivel del ratón. En concreto, del ratón de Microsoft, el más extendido y con el que
son compatibles casi todos los demás (aunque sea accionando el correspondiente conmutador).
La mayoría de los ratones se conectan vía puerto serie a 1200 baudios, 7 bits y sin paridad. Para
detectar la presencia del ratón, hay que poner la línea DTR del puerto serie a 1. Al cabo de un rato, el ratón
devuelve el código ASCII de la letra M (¿será por lo de Mouse o por Microsoft?). Los controladores de
Microsoft son un poco estrictos en esta comprobación, y si el ratón no responde en unos márgenes de tiempo
muy concretos consideran que no existe, de ahí que en ocasiones haya que emplear otro controlador un poco
más flexible.
Llegados a este punto, el funcionamiento se establece a partir de interrupciones de puerto serie. Se
trasmiten 3 bytes cada vez que hay un envío: en ellos se indica cuánto se ha movido el ratón en los ejes X
e Y desde la última vez, así como el estado de los botones. La unidad de medida, cómo no, son los Mickeys,
que según la resolución del aparato serán 1/200 ó 1/400 pulgadas.
Los desplazamientos se toman en complemento a dos; como hay 8 bits por cada eje, el movimiento
puede oscilar en el rango +128 a -127. Hay además un bit por cada botón. De los 7 bits recibidos en cada
interrupción, el más significativo (bit 6) está a 1 en el primer envío y a 0 en los restantes, con objeto de
evitar malas interpretaciones de la secuencia si se pierde alguna interrupción por cualquier motivo. El formato
empleado para codificar la información es el siguiente:
El otro gran estándar de ratón, el Mouse Systems, permite trabajar hasta con tres botones. Estos
ratones envían (cuando están en modo Mouse) 5 bytes por cada evento. En el primero hay información sobre
el estado de los botones; los 4 siguientes parecen contener el desplazamiento relativo en los ejes X e Y. El
funcionamiento es, por tanto, similar, y al parecer quizá todavía con 7 bits. Curiosamente, al conmutar el
selector de modo (Microsoft-Mouse) aparece una secuencia de bytes un tanto especial, distinta según el
sentido de la conmutación, para ayudar al controlador de ratón a detectar el paso al nuevo protocolo con
objeto de poder adaptarse al mismo.
Volver al Índice