Chapter 1. Introducción

NotePublicació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 00x80 + los botones actualmente pulsados.
Byte 1Un valor con signo para el desplazamiento en la posición X
Byte 2Un valor con signo para el desplazamiento en la posición Y
Una aplicación puede escoger leer más de 3 bytes. El resto de los bytes serán cero, o quizás opcionalmente retornen alguna información específica del dispositivo.

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 botones 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.