Publicación Anterior | |
---|---|
Algunas partes de este documento aparecieron primero en Linux Magazine bajo una exclusividad de noventa dias. |
Los ratones son conceptualmente uno de los interfaces de dispositivos más simples en el sistema operativo Linux. No todos los ratones son manejados por el núcleo. Es vez de eso, hay una abstracción de dos capas.
Los controladores de ratón del núcleo y los controladores del espacio de usuario para los ratones serie son todos administrados por un demonio del sistema llamado gpm - el controlador de propósito general de ratón. gpm maneja la acción de cortar y pegar en los textos de las consolas. Suministra una biblioteca general para aplicaciones que conocen el ratón y administra la compartición de los servicios del ratón con la interfaz de usuario del X Window System.
Algunas veces un ratón habla un protocolo suficientemente complicado como para que sea manejado por el propio Gpm. La mayoría de los controladores de ratón siguen una interfaz común llamada protocolo de bus del ratón.
Cada lectura de un dispositivo de una interfaz del bus de ratón retorna un bloque de datos. Los tres primeros bytes de cada lectura están definidos de la siguiente forma:
Table 1-1. Codificación de Datos del Ratón
Byte 0 | 0x80 + los botones actualmente pulsados. |
Byte 1 | Un valor con signo para el desplazamiento en la posición X |
Byte 2 | Un valor con signo para el desplazamiento en la posición Y |
Los valores de la posición son truncados si es que exceden del rango de los 8 bits (que es -127 <= delta <= 127). Como el valor -128 no encaja en un byte no es permitido.
Los
son numerados de izquierda a derecha como 0, 1, 2, 3.. y cada botón establece el bit relevante. Por lo tanto un usuario presionando los botonoes de la izquierda y de la derecha en un ratón de tres botones establecerán los bits 0 y 2.Todos los ratones están requeridos a soportar la operación poll. Sería algo verdaderamente muy bonito si todos los usuarios de un controlador de un dispositivo usaran poll para esperar a que tuvieran lugar los eventos.
Finalmente el soporte asíncrono de E/S de los ratonoes. Este es un tópico que todavía no hemos cubierto pero que explicaré más tarde, después de mirar en un controlador simple de ratón.